Compare commits

..

3 Commits

Author SHA1 Message Date
延皓 5520832d55 beta.2 2022-07-25 13:39:47 +08:00
延皓 696adfa9d7 添加交互器打开方式选项、添加将假人分数忽略的地毯脚本 2022-07-25 13:34:40 +08:00
延皓 4ef9270a21 update LICENSE. 2022-07-19 19:53:18 +00:00
90 changed files with 456 additions and 216 deletions
-9
View File
@@ -1,9 +0,0 @@
data/minecraft/advancements
data/minecraft/loot_tables
data/minecraft/recipes
data/minecraft/tags/blocks
data/minecraft/tags/entity_types
data/minecraft/tags/fluids
data/minecraft/tags/game_events
data/minecraft/tags/items
data/minecraft/tags/worldgen
+5 -3
View File
@@ -5,14 +5,14 @@
- `函数`,指数据包`<命名空间>/functions`目录下的`.mcfunction`文件
- `标签`,指数据包`<命名空间>/tags`目录下的`.json`文件
- `覆盖标签并填入函数`时,`replace``true`
```
``` json
{
"replace": true,
"values": ...
}
```
- `向标签中注册函数`时,`replace`为`false`
```
``` json
{
"replace": false,
"values": ...
@@ -73,7 +73,9 @@
### 配置模块
#### 按钮操作
1. 定义一个显示按钮时执行的函数,使用形如`tellraw @s {"text": "[按钮]", "clickEvent": {"action": "run_command", "value": "/trigger fz.module.config.trigger set <触发器分数>"}}`的指令定义按钮。**大多数情况下这里的触发器分数必须是独一无二的**
1. 定义一个显示按钮时执行的函数,使用形如`tellraw @s {"text": "[按钮]", "clickEvent": {"action": "run_command", "value": "/trigger fz.module.config.trigger set <触发器分数>"}}`的指令定义按钮。
- 大多数情况下这里的触发器分数必须是独一无二的
- 建议使用`>10000`的随机数作为自定义按钮的触发器分数
2. 在[`#fz:module/config/display`](data/fz/tags/functions/module/config/display.json)标签中注册上述函数
3. 定义一个点击按钮时执行的函数,使用形如`execute if score @s fz.module.config.trigger matches <min>..<max> run ...`的指令判断玩家的触发器分数,并执行你的操作
4. 如需在点击后重新显示一遍配置页面,请在上述函数中调用一次[`#fz:module/config/display`](data/fz/tags/functions/module/config/display.json)标签,**请不要将此标签直接注册到[`#fz:module/config/on_click`](data/fz/tags/functions/module/config/on_click.json)标签中**
+16 -17
View File
@@ -1,21 +1,20 @@
MIT License
Copyright (c) 2022 延皓
FZSD许可证
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
2022/7/20 https://gitee.com/harvey-husky/fz-survival-datapack/LICENSE
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
版权所有 © 2019-2022 延皓<https://gitee.com/harvey-husky><https://space.bilibili.com/677233356>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
定义:
“该许可证”指FZSD许可证。
“该软件”指许可在该许可证下的程序和相关文档的集合。
“官方网址”指由版权所有者提供的该软件的发布网址。
您对该软件的复制、使用、修改及分发受如下条款的约束:
1. 禁止添加、修改或删除该许可证的内容。
2. 禁止未经授权的转载、销售或二次发布该软件。
3. 禁止添加、修改或抹除该软件中的原作者署名。
4. 如果您从部署了该软件的Minecraft服务器中以任何方式获取了收益,则您必须在游戏中的明显位置明确告知用户您的Minecraft服务器使用了该软件,并附上官方网址。
5. 如果您修改了该软件中的任何内容,您必须将修改部分开源在主流开源平台(如gitee<https://gitee.com/>或github<https://github.com/>等)。
6. 如果您修改了该软件中的任何内容,您必须保留该许可证,但您可以追加其他许可证(不包括不支持附加条款的许可证)。当您添加的许可证中的条款与该许可证冲突时,必须以该许可证为准。
7. 该软件在提供时不带任何明示或默示的担保。在任何情况下,版权所有者不对任何人因使用该软件而引发的任何直接或间接损失承担任何责任。
@@ -2,7 +2,7 @@
"replace": false,
"values": [
{
"id": "fz.admin:autocarpet",
"id": "fz.admin:preset_carpet",
"required": true
}
]
@@ -19,6 +19,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_aviate_one_meter"
"function": "fz:game_event/advancement/on_aviate_one_meter"
}
}
+1 -1
View File
@@ -19,6 +19,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_dead"
"function": "fz:game_event/advancement/on_dead"
}
}
@@ -1,21 +1,32 @@
{
"parent": "fz:game_event",
"criteria": {
"on_entered_nether_portal": {
"trigger": "minecraft:changed_dimension",
"conditions": {
"player": {
"location": {
"block": {
"blocks": [
"minecraft:nether_portal"
]
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
},
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"location": {
"block": {
"blocks": [
"minecraft:nether_portal"
]
}
}
}
}
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_entered_nether_portal"
"function": "fz:game_event/advancement/on_entered_nether_portal"
}
}
@@ -4,6 +4,12 @@
"on_fished": {
"trigger": "minecraft:fishing_rod_hooked",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
],
"item": {
"tag": "fz:raw_fishes"
}
@@ -11,6 +17,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_fished"
"function": "fz:game_event/advancement/on_fished"
}
}
@@ -4,17 +4,27 @@
"on_hurt_entity_with_tools": {
"trigger": "minecraft:player_hurt_entity",
"conditions": {
"player": {
"equipment": {
"mainhand": {
"tag": "fz:tools"
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
},
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"tag": "fz:tools"
}
}
}
}
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_hurt_entity_with_tools"
"function": "fz:game_event/advancement/on_hurt_entity_with_tools"
}
}
@@ -4,6 +4,12 @@
"on_killed_mob_or_player": {
"trigger": "minecraft:player_killed_entity",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
],
"entity": [
{
"condition": "minecraft:inverted",
@@ -23,6 +29,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_killed_mob_or_player"
"function": "fz:game_event/advancement/on_killed_mob_or_player"
}
}
@@ -22,6 +22,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_login"
"function": "fz:game_event/advancement/on_login"
}
}
@@ -4,6 +4,12 @@
"on_piglin_trade": {
"trigger": "minecraft:thrown_item_picked_up_by_entity",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
],
"entity": {
"type": "minecraft:piglin",
"flags": {
@@ -14,6 +20,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_piglin_trade"
"function": "fz:game_event/advancement/on_piglin_trade"
}
}
@@ -2,10 +2,18 @@
"parent": "fz:game_event",
"criteria": {
"on_placed_block": {
"trigger": "minecraft:placed_block"
"trigger": "minecraft:placed_block",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_placed_block"
"function": "fz:game_event/advancement/on_placed_block"
}
}
@@ -19,6 +19,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_play_one_hour"
"function": "fz:game_event/advancement/on_play_one_hour"
}
}
@@ -4,6 +4,12 @@
"on_shears_used_on_entity": {
"trigger": "minecraft:player_interacted_with_entity",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
],
"entity": {
"type": "#fz:shearable"
},
@@ -14,6 +20,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_shears_used_on_entity"
"function": "fz:game_event/advancement/on_shears_used_on_entity"
}
}
+15 -5
View File
@@ -4,15 +4,25 @@
"on_sneak": {
"trigger": "minecraft:tick",
"conditions": {
"player": {
"flags": {
"is_sneaking": true
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
},
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"flags": {
"is_sneaking": true
}
}
}
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_sneak"
"function": "fz:game_event/advancement/on_sneak"
}
}
@@ -19,6 +19,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_took_damage"
"function": "fz:game_event/advancement/on_took_damage"
}
}
@@ -5,6 +5,12 @@
"__comment": "斧子剥树皮会触发两次!",
"trigger": "minecraft:item_used_on_block",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
],
"item": {
"tag": "fz:tools"
}
@@ -12,6 +18,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_tools_used_on_block"
"function": "fz:game_event/advancement/on_tools_used_on_block"
}
}
@@ -4,21 +4,31 @@
"on_unsneak": {
"trigger": "minecraft:tick",
"conditions": {
"player": {
"flags": {
"is_sneaking": false
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
},
"type_specific": {
"type": "player",
"advancements": {
"fz:game_event/on_sneak": true
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"flags": {
"is_sneaking": false
},
"type_specific": {
"type": "player",
"advancements": {
"fz:game_event/on_sneak": true
}
}
}
}
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_unsneak"
"function": "fz:game_event/advancement/on_unsneak"
}
}
@@ -15,6 +15,6 @@
}
},
"rewards": {
"function": "fz:game_event/player/on_used_tool"
"function": "fz:game_event/advancement/on_used_tool"
}
}
@@ -2,10 +2,18 @@
"parent": "fz:game_event",
"criteria": {
"on_villager_trade": {
"trigger": "minecraft:villager_trade"
"trigger": "minecraft:villager_trade",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"name": "fz:is_real_player"
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_villager_trade"
"function": "fz:game_event/advancement/on_villager_trade"
}
}
@@ -0,0 +1,7 @@
{
"criteria": {
"interactor": {
"trigger": "minecraft:impossible"
}
}
}
@@ -0,0 +1,25 @@
{
"parent": "fz:module/interactor",
"criteria": {
"on_click": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"fz.module.interactor.trigger": 0
}
}
}
]
}
}
},
"rewards": {
"function": "fz:module/interactor/event/on_click"
}
}
@@ -0,0 +1,7 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_aviate_one_meter
##
scoreboard players operation @s fz.event.aviating_distance %= 200 fz.variable.integer
advancement revoke @s only fz:game_event/on_aviate_one_meter
@@ -0,0 +1,7 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_dead
##
scoreboard players set @s fz.event.death_count 0
advancement revoke @s only fz:game_event/on_dead
@@ -3,4 +3,5 @@ execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @
function #fz:game_event/player/on_entered_nether_portal
##
advancement revoke @s only fz:game_event/on_entered_nether_portal
@@ -0,0 +1,7 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_login
##
scoreboard players set @s fz.event.leave_game 0
function #fz:game_event/reset_all
@@ -0,0 +1,7 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_play_one_hour
##
scoreboard players operation @s fz.event.play_ticks %= 72000 fz.variable.integer
advancement revoke @s only fz:game_event/on_play_one_hour
@@ -0,0 +1,7 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_took_damage
##
scoreboard players operation @s fz.event.damage_taken %= 10 fz.variable.integer
advancement revoke @s only fz:game_event/on_took_damage
@@ -0,0 +1,9 @@
# 调用者:advancements/fz:~
execute if predicate fz:is_real_player run function fz:game_event/player/on_used_tool
##
function #fz:game_event/player/on_used_tool/reset_used_tool
##
advancement revoke @s only fz:game_event/on_used_tool
@@ -3,4 +3,4 @@
advancement revoke @s from fz:game_event
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已重置玩家"}, {"selector": "@s"}, {"text": "所有事件进度"}]
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已重置玩家"}, {"selector": "@s"}, {"text": "游戏事件进度"}]
@@ -0,0 +1 @@
scoreboard players remove @s fz.event.play_ticks 1
+1 -1
View File
@@ -1,4 +1,4 @@
execute as @a run function #fz:game_event/reset_all
execute as @a run function #fz:game_event/player/on_login
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已加载系统组件:游戏事件"}]
@@ -1,15 +1,9 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..300 run tellraw @a [{"nbt": "fz.level.fine", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "飞行了1m"}]
##
##
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.aviating_distance
scoreboard players operation fz.var.score fz.variable.integer /= 200 fz.variable.integer
scoreboard players operation @s fz.event.aviating_distance %= 200 fz.variable.integer
##
function #fz:game_event/player/on_aviate_one_meter
##
advancement revoke @s only fz:game_event/on_aviate_one_meter
function #fz:game_event/player/on_aviate_one_meter
@@ -3,38 +3,5 @@
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "挖掘了方块"}]
##
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.used_tool.diamond_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.shears
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_sword
##
function #fz:game_event/player/on_broke_block
@@ -0,0 +1,36 @@
##
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.used_tool.diamond_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.diamond_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.golden_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.iron_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.netherite_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.shears
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.stone_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_axe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_hoe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_pickaxe
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_shovel
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.wooden_sword
scoreboard players operation fz.var.score fz.variable.integer += @s fz.event.used_tool.offset
##
execute unless score fz.var.score fz.variable.integer matches ..0 run function fz:game_event/player/on_broke_block
@@ -1,14 +1,8 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "死亡"}]
##
##
# scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.death_count
scoreboard players set @s fz.event.death_count 0
##
function #fz:game_event/player/on_dead
##
advancement revoke @s only fz:game_event/on_dead
function #fz:game_event/player/on_dead
@@ -1,10 +1,5 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "登录游戏"}]
scoreboard players set @s fz.event.leave_game 0
##
### reset_events标签
function #fz:game_event/player/on_login
@@ -1,15 +1,9 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "游玩了1h"}]
##
##
# scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.play_ticks
# scoreboard players operation fz.var.score fz.variable.integer /= 3600 fz.variable.integer
scoreboard players operation @s fz.event.play_ticks %= 72000 fz.variable.integer
##
function #fz:game_event/player/on_play_one_hour
##
advancement revoke @s only fz:game_event/on_play_one_hour
function #fz:game_event/player/on_play_one_hour
@@ -1,15 +1,9 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "受到了伤害"}]
##
##
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.damage_taken
scoreboard players operation fz.var.score fz.variable.integer /= 10 fz.variable.integer
scoreboard players operation @s fz.event.damage_taken %= 10 fz.variable.integer
##
function #fz:game_event/player/on_took_damage
##
advancement revoke @s only fz:game_event/on_took_damage
function #fz:game_event/player/on_took_damage
@@ -1,18 +1,5 @@
# 调用者:advancements/fz:~
##
execute if score fz.logger.level fz.variable.integer matches ..300 run tellraw @a [{"nbt": "fz.level.fine", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "使用了工具"}]
##
function #fz:game_event/player/on_used_tool
##
### fz:game_event/[on_tools_used_on_block, on_shears_used_on_entity, on_hurt_entity_with_tools]
### 使
execute unless score @s fz.event.used_tool.offset matches ..-1 run function fz:game_event/player/on_broke_block
##
function #fz:game_event/player/on_used_tool/reset_used_tool
##
advancement revoke @s only fz:game_event/on_used_tool
function #fz:game_event/player/on_used_tool
@@ -0,0 +1,5 @@
##
function #fz:module/interactor/event/on_click/on_click
##
advancement revoke @s only fz:module/interactor/on_click
@@ -1,3 +0,0 @@
# 本目录用于存放向事件中注册的函数,并不用来新建事件
execute if entity @s[x_rotation = -90] run function #fz:module/interactor/on_interact
@@ -0,0 +1,3 @@
# 本目录用于存放向事件中注册的函数,并不用来新建事件
execute if score @s fz.module.interactor.player.config matches 1 if entity @s[x_rotation = -90] run function #fz:module/interactor/display
@@ -1,2 +1,4 @@
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "玩家"}, {"selector": "@s"}, {"text": "触发了配置页面"}]
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "玩家"}, {"selector": "@s"}, {"text": "重置了交互器事件进度"}]
advancement revoke @s from fz:module/interactor/on_click
@@ -1,4 +1,5 @@
scoreboard objectives add fz.module.interactor.trigger trigger
scoreboard objectives add fz.module.interactor.player.config dummy
##
data modify storage fz:installed fz.module.interactor set value 1b
@@ -0,0 +1,7 @@
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "向玩家"}, {"selector": "@s"}, {"text": "显示了交互器"}]
execute if data storage fz:installed fz.module{last_death:1b} run tellraw @s {"text": "交互器打开方式:"}
execute if data storage fz:installed fz.module{last_death:1b} if score @s fz.module.interactor.player.config matches 1 run tellraw @s [{"text": "- 抬头+蹲起:"}, [{"text": "[", "color": "dark_gray", "hoverEvent": {"action": "show_text", "value": "点击关闭"}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 900"}},{"text": "已开启", "color": "green"},{"text": "]"}]]
execute if data storage fz:installed fz.module{last_death:1b} unless score @s fz.module.interactor.player.config matches 1 run tellraw @s [{"text": "- 抬头+蹲起:"}, [{"text": "[", "color": "dark_gray", "hoverEvent": {"action": "show_text", "value": "点击开启"}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 910"}},{"text": "已关闭", "color": "red"},{"text": "]"}]]
@@ -0,0 +1,8 @@
# 调用者:#fz:module/interactor/on_click
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "玩家"}, {"selector": "@s"}, {"text": "的交互器分数为:"}, {"score": {"name": "@s", "objective": "fz.module.interactor.trigger"}}]
execute if score @s fz.module.interactor.trigger matches 900 run scoreboard players set @s fz.module.interactor.player.config 0
execute if score @s fz.module.interactor.trigger matches 910 run scoreboard players set @s fz.module.interactor.player.config 1
@@ -1,4 +1,3 @@
schedule clear fz:module/interactor/loop
execute as @a run function #fz:module/interactor/reset_trigger
##
@@ -1,6 +0,0 @@
# 调用者:fz:module/interactor/trigger
## 0
execute as @a if score @s fz.module.interactor.trigger matches 1.. run function #fz:module/interactor/on_click/on_click
schedule function fz:module/interactor/loop 1t replace
@@ -1,4 +0,0 @@
# 调用者:#fz:module/interactor/on_click
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "玩家"}, {"selector": "@s"}, {"text": "点击了配置按钮,触发器分数为:"}, {"score": {"name": "@s", "objective": "fz.module.interactor.trigger"}}]
@@ -1,2 +0,0 @@
##
schedule function #fz:module/interactor/timeout 300s replace
@@ -1,4 +0,0 @@
schedule clear fz:module/interactor/loop
##
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "五分钟无人回应,已关闭配置按钮监听,再次使用时需重新唤起"}]
@@ -1,3 +1,5 @@
# 调用者:#fz:module/scoreboard/interactor/display
execute if data storage fz:installed fz.module{scoreboard:1b} run tellraw @s {"text": "计分板:"}
execute if data storage fz:installed fz.module{scoreboard:1b} run tellraw @s [[{"text": "[", "color": "dark_gray", "hoverEvent": {"action": "show_text", "contents": {"text": "", "color": "dark_red"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1000"}}, {"text": "", "color": "dark_red"}, {"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.carousel", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1010"}}, {"nbt": "fz.scoreboard.text.carousel", "interpret": true, "storage": "fz:module"}, {"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.general", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1020"}}, {"nbt": "fz.scoreboard.text.general", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.activation", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1030"}}, {"nbt": "fz.scoreboard.text.activation", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.aviating_distance", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1040"}}, {"nbt": "fz.scoreboard.text.aviating_distance", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.damage_taken", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1050"}}, {"nbt": "fz.scoreboard.text.damage_taken", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.death_count", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1060"}}, {"nbt": "fz.scoreboard.text.death_count", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.dig_count", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1070"}}, {"nbt": "fz.scoreboard.text.dig_count", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.fishing_count", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1080"}}, {"nbt": "fz.scoreboard.text.fishing_count", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.kill_count", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1090"}}, {"nbt": "fz.scoreboard.text.kill_count", "interpret": true, "storage": "fz:module"},{"text": "]"}], [{"text": "[", "hoverEvent": {"action": "show_text", "contents": {"nbt": "fz.scoreboard.text.trade_count", "interpret": true, "storage": "fz:module"}}, "clickEvent": {"action": "run_command", "value": "/trigger fz.module.interactor.trigger set 1100"}}, {"nbt": "fz.scoreboard.text.trade_count", "interpret": true, "storage": "fz:module"}, {"text": "]"}]]
@@ -1,3 +0,0 @@
# 调用者:#fz:module/scoreboard/interactor/display
execute if data storage fz:installed fz.module{scoreboard:1b} run tellraw @s {"text": "计分板:"}
@@ -0,0 +1 @@
script run if (system_info('app_list') ~ 'fzsd_ignore_fakeplayer_scores' == null, run('script load fzsd_ignore_fakeplayer_scores'))
@@ -1,5 +1,5 @@
function fz:system/carpet/try_load_fzsd_ignore_fakeplayer_scores
function #fz:uninstall
function #fz:install
function #fz:load
+1
View File
@@ -0,0 +1 @@
execute as @a if predicate fz:not_real_player run function #fz:game_event/carpet_player/tick
+7
View File
@@ -0,0 +1,7 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"team": "fake"
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:reference",
"name": "fz:not_real_player"
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"team": "shadow"
}
}
+13
View File
@@ -0,0 +1,13 @@
{
"condition": "minecraft:alternative",
"terms": [
{
"condition": "minecraft:reference",
"name": "fz:is_fake_player"
},
{
"condition": "minecraft:reference",
"name": "fz:is_shadow_player"
}
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:game_event/advancement/reset_advancements"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:game_event/carpet_player/tick/tick"
]
}
@@ -1,7 +1,9 @@
{
"replace": false,
"values": [
"#fz:game_event/reset_all",
"#fz:module/interactor/reset_trigger"
"#fz:game_event/advancement/reset_advancements",
"#fz:game_event/player/on_used_tool/reset_used_tool",
"#fz:module/interactor/reset_trigger",
"#fz:module/interactor/event/reset_advancements"
]
}
@@ -2,6 +2,6 @@
"__comment": "调用者:fz:game_event/on_unsneaked,当玩家蹲起后触发此事件",
"replace": false,
"values": [
"fz:module/interactor/event/on_unsneak"
"fz:module/interactor/event/on_unsneak/on_unsneak"
]
}
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"fz:game_event/player/on_broke_block/on_used_tool"
]
}
@@ -1,6 +0,0 @@
{
"replace": false,
"values": [
"fz:game_event/player/reset_advancements"
]
}
@@ -1,7 +0,0 @@
{
"replace": false,
"values": [
"#fz:game_event/player/reset_advancements",
"#fz:game_event/player/on_used_tool/reset_used_tool"
]
}
@@ -2,6 +2,7 @@
"__comment": "调用者:fz:module/interactor/on_click、fz:module/interactor/trigger",
"replace": false,
"values": [
"fz:module/interactor/interactor/display",
"#fz:module/scoreboard/interactor/display",
"#fz:module/here/interactor/display",
"#fz:module/last_death/interactor/display",
@@ -1,7 +1,7 @@
{
"replace": false,
"values": [
"fz:module/interactor/on_click",
"fz:module/interactor/interactor/on_click",
"#fz:module/scoreboard/interactor/on_click",
"#fz:module/here/interactor/on_click",
"#fz:module/last_death/interactor/on_click",
@@ -1,8 +1,8 @@
{
"replace": false,
"values": [
"#fz:module/interactor/event/on_click",
"#fz:module/interactor/display",
"#fz:module/interactor/on_click",
"#fz:module/interactor/reset_trigger"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:module/interactor/event/reset_advancements"
]
}
@@ -1,9 +0,0 @@
{
"__comment": "调用者:fz:event/on_unsneak,当玩家抬头到最高角度并蹲起后,触发此事件",
"replace": false,
"values": [
"fz:module/interactor/on_interact",
"fz:module/interactor/loop",
"#fz:module/interactor/display"
]
}
@@ -1,7 +1,6 @@
{
"replace": false,
"values": [
"fz:module/scoreboard/interactor/display/1",
"fz:module/scoreboard/interactor/display/2"
"fz:module/scoreboard/interactor/display"
]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"replace": false,
"values": [
"fz:entry"
"fz:system/entry"
]
}
+6
View File
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:system/tick"
]
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"pack": {
"description": "FZ's Datapack - Code By Harvey_Husky",
"description": "FZ Survival Datapack 3.0 | Author: Harvey_Husky",
"pack_format": 10
}
}
+77
View File
@@ -0,0 +1,77 @@
// 计分板模块扩展插件
// 忽略假人分数
// **请勿修改文件名**
global_app_version = '1.0-beta.1';
__config() -> {
'scope' -> 'global',
'requires' -> {
'carpet' -> '>=1.4.45',
'minecraft' -> '>=1.17'
}
};
__on_start() -> (
global_team_cache = read_file('team_cache', 'json');
debug(global_team_cache);
team_add('fake');
team_add('shadow');
print(player('all'), '已忽略计分板模块假人分数');
);
__on_close() -> (
debug(global_team_cache);
delete_file('team_cache', 'json');
write_file('team_cache', 'json', global_team_cache);
);
__on_player_connects(player) -> (
debug(player ~ 'name');
debug(player ~ 'player_type');
debug(player ~ 'team');
debug(global_team_cache);
if (player ~ 'player_type' == 'fake' && player ~ 'team' != 'fake',
(
global_team_cache:(player ~ 'name') = player ~ 'team';
team_add('fake', player);
),
player ~ 'player_type' == 'shadow' && player ~ 'team' != 'shadow',
(
global_team_cache:(player ~ 'name') = player ~ 'team';
team_add('shadow', player);
),
if (player ~ 'team' == 'fake'
|| player ~ 'team' == 'shadow',
if (global_team_cache:(player ~ 'name') != null,
(
team_add(global_team_cache:(player ~ 'name'), player);
delete(global_team_cache, player);
),
team_leave(player);
);
);
);
);
__on_player_disconnects(player, reason) -> (
debug(player ~ 'name');
debug(player ~ 'player_type');
debug(player ~ 'team');
debug(global_team_cache);
if (player ~ 'team' == 'fake'
|| player ~ 'team' == 'shadow',
debug(global_team_cache);
if (global_team_cache:(player ~ 'name') != null,
(
team_add(global_team_cache:(player ~ 'name') , player);
delete(global_team_cache:(player ~ 'name'));
),
team_leave(player);
);
);
);
debug(msg) -> (
logger('debug', msg);
return();
);