From 696adfa9d70665c41acb5f542ca0d5803ed32564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=B6=E7=9A=93?= <1214946206@qq.com> Date: Mon, 25 Jul 2022 13:34:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=A4=E4=BA=92=E5=99=A8?= =?UTF-8?q?=E6=89=93=E5=BC=80=E6=96=B9=E5=BC=8F=E9=80=89=E9=A1=B9=E3=80=81?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=B0=86=E5=81=87=E4=BA=BA=E5=88=86=E6=95=B0?= =?UTF-8?q?=E5=BF=BD=E7=95=A5=E7=9A=84=E5=9C=B0=E6=AF=AF=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEVDOC.md | 8 +- ...et.mcfunction => preset_carpet.mcfunction} | 0 .../{autocarpet.json => preset_carpet.json} | 2 +- .../game_event/on_aviate_one_meter.json | 2 +- data/fz/advancements/game_event/on_dead.json | 2 +- .../game_event/on_entered_nether_portal.json | 27 +++++-- .../fz/advancements/game_event/on_fished.json | 8 +- .../game_event/on_hurt_entity_with_tools.json | 22 ++++-- .../game_event/on_killed_mob_or_player.json | 8 +- data/fz/advancements/game_event/on_login.json | 2 +- .../game_event/on_piglin_trade.json | 8 +- .../game_event/on_placed_block.json | 12 ++- .../game_event/on_play_one_hour.json | 2 +- .../game_event/on_shears_used_on_entity.json | 8 +- data/fz/advancements/game_event/on_sneak.json | 20 +++-- .../game_event/on_took_damage.json | 2 +- .../game_event/on_tools_used_on_block.json | 8 +- .../advancements/game_event/on_unsneak.json | 28 ++++--- .../advancements/game_event/on_used_tool.json | 2 +- .../game_event/on_villager_trade.json | 12 ++- data/fz/advancements/module/interactor.json | 7 ++ .../module/interactor/on_click.json | 25 ++++++ .../on_aviate_one_meter.mcfunction | 7 ++ .../game_event/advancement/on_dead.mcfunction | 7 ++ .../on_entered_nether_portal.mcfunction | 1 + .../on_fished.mcfunction | 0 .../on_hurt_entity_with_tools.mcfunction | 0 .../on_killed_mob_or_player.mcfunction | 0 .../advancement/on_login.mcfunction | 7 ++ .../on_piglin_trade.mcfunction | 0 .../on_placed_block.mcfunction | 0 .../advancement/on_play_one_hour.mcfunction | 7 ++ .../on_shears_used_on_entity.mcfunction | 0 .../on_sneak.mcfunction | 0 .../advancement/on_took_damage.mcfunction | 7 ++ .../on_tools_used_on_block.mcfunction | 0 .../on_unsneak.mcfunction | 0 .../advancement/on_used_tool.mcfunction | 9 +++ .../on_villager_trade.mcfunction | 0 .../reset_advancements.mcfunction | 2 +- .../carpet_player/tick/tick.mcfunction | 1 + data/fz/functions/game_event/load.mcfunction | 2 +- .../player/on_aviate_one_meter.mcfunction | 10 +-- .../player/on_broke_block.mcfunction | 33 -------- .../on_broke_block/on_used_tool.mcfunction | 36 +++++++++ .../game_event/player/on_dead.mcfunction | 10 +-- .../game_event/player/on_login.mcfunction | 5 -- .../player/on_play_one_hour.mcfunction | 10 +-- .../player/on_took_damage.mcfunction | 10 +-- .../game_event/player/on_used_tool.mcfunction | 15 +--- .../interactor/event/on_click.mcfunction | 5 ++ .../interactor/event/on_unsneak.mcfunction | 3 - .../event/on_unsneak/on_unsneak.mcfunction | 3 + .../reset_advancements.mcfunction} | 4 +- .../module/interactor/install.mcfunction | 1 + .../interactor/interactor/display.mcfunction | 7 ++ .../interactor/interactor/on_click.mcfunction | 8 ++ .../module/interactor/load.mcfunction | 1 - .../module/interactor/loop.mcfunction | 6 -- .../module/interactor/on_click.mcfunction | 4 - .../interactor/reset_timeout.mcfunction | 2 - .../module/interactor/timeout.mcfunction | 4 - .../2.mcfunction => display.mcfunction} | 2 + .../interactor/display/1.mcfunction | 3 - ...d_fzsd_ignore_fakeplayer_scores.mcfunction | 1 + .../functions/{ => system}/entry.mcfunction | 2 +- data/fz/functions/system/tick.mcfunction | 1 + data/fz/predicates/is_fake_player.json | 7 ++ data/fz/predicates/is_real_player.json | 7 ++ data/fz/predicates/is_shadow_player.json | 7 ++ data/fz/predicates/not_real_player.json | 13 ++++ .../advancement/reset_advancements.json | 6 ++ .../game_event/carpet_player/tick.json | 6 ++ .../functions/game_event/player/on_login.json | 6 +- .../game_event/player/on_unsneak.json | 2 +- .../game_event/player/on_used_tool.json | 2 +- .../game_event/player/reset_advancements.json | 6 -- .../tags/functions/game_event/reset_all.json | 7 -- .../functions/module/interactor/display.json | 1 + .../interactor/{ => event}/on_click.json | 2 +- .../{ => event}/on_click/on_click.json | 2 +- .../interactor/event/reset_advancements.json | 6 ++ .../module/interactor/on_interact.json | 9 --- .../module/scoreboard/interactor/display.json | 3 +- data/minecraft/tags/functions/load.json | 2 +- data/minecraft/tags/functions/tick.json | 6 ++ scripts/fzsd_ignore_fakeplayer_scores.sc | 77 +++++++++++++++++++ 87 files changed, 439 insertions(+), 189 deletions(-) rename data/fz.admin/functions/{autocarpet.mcfunction => preset_carpet.mcfunction} (100%) rename data/fz.admin/tags/functions/{autocarpet.json => preset_carpet.json} (68%) create mode 100644 data/fz/advancements/module/interactor.json create mode 100644 data/fz/advancements/module/interactor/on_click.json create mode 100644 data/fz/functions/game_event/advancement/on_aviate_one_meter.mcfunction create mode 100644 data/fz/functions/game_event/advancement/on_dead.mcfunction rename data/fz/functions/game_event/{player => advancement}/on_entered_nether_portal.mcfunction (94%) rename data/fz/functions/game_event/{player => advancement}/on_fished.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/on_hurt_entity_with_tools.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/on_killed_mob_or_player.mcfunction (100%) create mode 100644 data/fz/functions/game_event/advancement/on_login.mcfunction rename data/fz/functions/game_event/{player => advancement}/on_piglin_trade.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/on_placed_block.mcfunction (100%) create mode 100644 data/fz/functions/game_event/advancement/on_play_one_hour.mcfunction rename data/fz/functions/game_event/{player => advancement}/on_shears_used_on_entity.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/on_sneak.mcfunction (100%) create mode 100644 data/fz/functions/game_event/advancement/on_took_damage.mcfunction rename data/fz/functions/game_event/{player => advancement}/on_tools_used_on_block.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/on_unsneak.mcfunction (100%) create mode 100644 data/fz/functions/game_event/advancement/on_used_tool.mcfunction rename data/fz/functions/game_event/{player => advancement}/on_villager_trade.mcfunction (100%) rename data/fz/functions/game_event/{player => advancement}/reset_advancements.mcfunction (89%) create mode 100644 data/fz/functions/game_event/carpet_player/tick/tick.mcfunction create mode 100644 data/fz/functions/game_event/player/on_broke_block/on_used_tool.mcfunction create mode 100644 data/fz/functions/module/interactor/event/on_click.mcfunction delete mode 100644 data/fz/functions/module/interactor/event/on_unsneak.mcfunction create mode 100644 data/fz/functions/module/interactor/event/on_unsneak/on_unsneak.mcfunction rename data/fz/functions/module/interactor/{on_interact.mcfunction => event/reset_advancements.mcfunction} (66%) create mode 100644 data/fz/functions/module/interactor/interactor/display.mcfunction create mode 100644 data/fz/functions/module/interactor/interactor/on_click.mcfunction delete mode 100644 data/fz/functions/module/interactor/loop.mcfunction delete mode 100644 data/fz/functions/module/interactor/on_click.mcfunction delete mode 100644 data/fz/functions/module/interactor/reset_timeout.mcfunction delete mode 100644 data/fz/functions/module/interactor/timeout.mcfunction rename data/fz/functions/module/scoreboard/interactor/{display/2.mcfunction => display.mcfunction} (97%) delete mode 100644 data/fz/functions/module/scoreboard/interactor/display/1.mcfunction create mode 100644 data/fz/functions/system/carpet/try_load_fzsd_ignore_fakeplayer_scores.mcfunction rename data/fz/functions/{ => system}/entry.mcfunction (77%) create mode 100644 data/fz/functions/system/tick.mcfunction create mode 100644 data/fz/predicates/is_fake_player.json create mode 100644 data/fz/predicates/is_real_player.json create mode 100644 data/fz/predicates/is_shadow_player.json create mode 100644 data/fz/predicates/not_real_player.json create mode 100644 data/fz/tags/functions/game_event/advancement/reset_advancements.json create mode 100644 data/fz/tags/functions/game_event/carpet_player/tick.json delete mode 100644 data/fz/tags/functions/game_event/player/reset_advancements.json delete mode 100644 data/fz/tags/functions/game_event/reset_all.json rename data/fz/tags/functions/module/interactor/{ => event}/on_click.json (85%) rename data/fz/tags/functions/module/interactor/{ => event}/on_click/on_click.json (73%) create mode 100644 data/fz/tags/functions/module/interactor/event/reset_advancements.json delete mode 100644 data/fz/tags/functions/module/interactor/on_interact.json create mode 100644 data/minecraft/tags/functions/tick.json create mode 100644 scripts/fzsd_ignore_fakeplayer_scores.sc diff --git a/DEVDOC.md b/DEVDOC.md index d0e6b08..be6faf2 100644 --- a/DEVDOC.md +++ b/DEVDOC.md @@ -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 .. 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)标签中** diff --git a/data/fz.admin/functions/autocarpet.mcfunction b/data/fz.admin/functions/preset_carpet.mcfunction similarity index 100% rename from data/fz.admin/functions/autocarpet.mcfunction rename to data/fz.admin/functions/preset_carpet.mcfunction diff --git a/data/fz.admin/tags/functions/autocarpet.json b/data/fz.admin/tags/functions/preset_carpet.json similarity index 68% rename from data/fz.admin/tags/functions/autocarpet.json rename to data/fz.admin/tags/functions/preset_carpet.json index 987aa34..05a72fc 100644 --- a/data/fz.admin/tags/functions/autocarpet.json +++ b/data/fz.admin/tags/functions/preset_carpet.json @@ -2,7 +2,7 @@ "replace": false, "values": [ { - "id": "fz.admin:autocarpet", + "id": "fz.admin:preset_carpet", "required": true } ] diff --git a/data/fz/advancements/game_event/on_aviate_one_meter.json b/data/fz/advancements/game_event/on_aviate_one_meter.json index ae2c956..4471337 100644 --- a/data/fz/advancements/game_event/on_aviate_one_meter.json +++ b/data/fz/advancements/game_event/on_aviate_one_meter.json @@ -19,6 +19,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_aviate_one_meter" + "function": "fz:game_event/advancement/on_aviate_one_meter" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_dead.json b/data/fz/advancements/game_event/on_dead.json index 91c63e3..b780bee 100644 --- a/data/fz/advancements/game_event/on_dead.json +++ b/data/fz/advancements/game_event/on_dead.json @@ -19,6 +19,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_dead" + "function": "fz:game_event/advancement/on_dead" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_entered_nether_portal.json b/data/fz/advancements/game_event/on_entered_nether_portal.json index d804bbd..dd89dc8 100644 --- a/data/fz/advancements/game_event/on_entered_nether_portal.json +++ b/data/fz/advancements/game_event/on_entered_nether_portal.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_fished.json b/data/fz/advancements/game_event/on_fished.json index f71e796..98c756b 100644 --- a/data/fz/advancements/game_event/on_fished.json +++ b/data/fz/advancements/game_event/on_fished.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_hurt_entity_with_tools.json b/data/fz/advancements/game_event/on_hurt_entity_with_tools.json index f434c16..6d62cf3 100644 --- a/data/fz/advancements/game_event/on_hurt_entity_with_tools.json +++ b/data/fz/advancements/game_event/on_hurt_entity_with_tools.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_killed_mob_or_player.json b/data/fz/advancements/game_event/on_killed_mob_or_player.json index a18b541..c0b60de 100644 --- a/data/fz/advancements/game_event/on_killed_mob_or_player.json +++ b/data/fz/advancements/game_event/on_killed_mob_or_player.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_login.json b/data/fz/advancements/game_event/on_login.json index 6c7df20..8264807 100644 --- a/data/fz/advancements/game_event/on_login.json +++ b/data/fz/advancements/game_event/on_login.json @@ -22,6 +22,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_login" + "function": "fz:game_event/advancement/on_login" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_piglin_trade.json b/data/fz/advancements/game_event/on_piglin_trade.json index 1b355f1..8213433 100644 --- a/data/fz/advancements/game_event/on_piglin_trade.json +++ b/data/fz/advancements/game_event/on_piglin_trade.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_placed_block.json b/data/fz/advancements/game_event/on_placed_block.json index d097b88..d98d00c 100644 --- a/data/fz/advancements/game_event/on_placed_block.json +++ b/data/fz/advancements/game_event/on_placed_block.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_play_one_hour.json b/data/fz/advancements/game_event/on_play_one_hour.json index 2d4000f..fd9751c 100644 --- a/data/fz/advancements/game_event/on_play_one_hour.json +++ b/data/fz/advancements/game_event/on_play_one_hour.json @@ -19,6 +19,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_play_one_hour" + "function": "fz:game_event/advancement/on_play_one_hour" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_shears_used_on_entity.json b/data/fz/advancements/game_event/on_shears_used_on_entity.json index 26a1433..eb5802e 100644 --- a/data/fz/advancements/game_event/on_shears_used_on_entity.json +++ b/data/fz/advancements/game_event/on_shears_used_on_entity.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_sneak.json b/data/fz/advancements/game_event/on_sneak.json index f981797..3adde35 100644 --- a/data/fz/advancements/game_event/on_sneak.json +++ b/data/fz/advancements/game_event/on_sneak.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_took_damage.json b/data/fz/advancements/game_event/on_took_damage.json index b65c97c..ffc8781 100644 --- a/data/fz/advancements/game_event/on_took_damage.json +++ b/data/fz/advancements/game_event/on_took_damage.json @@ -19,6 +19,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_took_damage" + "function": "fz:game_event/advancement/on_took_damage" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_tools_used_on_block.json b/data/fz/advancements/game_event/on_tools_used_on_block.json index 2b1c841..c67d35d 100644 --- a/data/fz/advancements/game_event/on_tools_used_on_block.json +++ b/data/fz/advancements/game_event/on_tools_used_on_block.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_unsneak.json b/data/fz/advancements/game_event/on_unsneak.json index 074825d..4feeb20 100644 --- a/data/fz/advancements/game_event/on_unsneak.json +++ b/data/fz/advancements/game_event/on_unsneak.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_used_tool.json b/data/fz/advancements/game_event/on_used_tool.json index 4675759..f6e8204 100644 --- a/data/fz/advancements/game_event/on_used_tool.json +++ b/data/fz/advancements/game_event/on_used_tool.json @@ -15,6 +15,6 @@ } }, "rewards": { - "function": "fz:game_event/player/on_used_tool" + "function": "fz:game_event/advancement/on_used_tool" } } \ No newline at end of file diff --git a/data/fz/advancements/game_event/on_villager_trade.json b/data/fz/advancements/game_event/on_villager_trade.json index 0a567d8..bf79ee4 100644 --- a/data/fz/advancements/game_event/on_villager_trade.json +++ b/data/fz/advancements/game_event/on_villager_trade.json @@ -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" } } \ No newline at end of file diff --git a/data/fz/advancements/module/interactor.json b/data/fz/advancements/module/interactor.json new file mode 100644 index 0000000..73e818b --- /dev/null +++ b/data/fz/advancements/module/interactor.json @@ -0,0 +1,7 @@ +{ + "criteria": { + "interactor": { + "trigger": "minecraft:impossible" + } + } +} \ No newline at end of file diff --git a/data/fz/advancements/module/interactor/on_click.json b/data/fz/advancements/module/interactor/on_click.json new file mode 100644 index 0000000..6ab421e --- /dev/null +++ b/data/fz/advancements/module/interactor/on_click.json @@ -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" + } +} \ No newline at end of file diff --git a/data/fz/functions/game_event/advancement/on_aviate_one_meter.mcfunction b/data/fz/functions/game_event/advancement/on_aviate_one_meter.mcfunction new file mode 100644 index 0000000..17a8073 --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_aviate_one_meter.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/advancement/on_dead.mcfunction b/data/fz/functions/game_event/advancement/on_dead.mcfunction new file mode 100644 index 0000000..8e726b2 --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_dead.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_entered_nether_portal.mcfunction b/data/fz/functions/game_event/advancement/on_entered_nether_portal.mcfunction similarity index 94% rename from data/fz/functions/game_event/player/on_entered_nether_portal.mcfunction rename to data/fz/functions/game_event/advancement/on_entered_nether_portal.mcfunction index 88a584d..5e7fb10 100644 --- a/data/fz/functions/game_event/player/on_entered_nether_portal.mcfunction +++ b/data/fz/functions/game_event/advancement/on_entered_nether_portal.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_fished.mcfunction b/data/fz/functions/game_event/advancement/on_fished.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_fished.mcfunction rename to data/fz/functions/game_event/advancement/on_fished.mcfunction diff --git a/data/fz/functions/game_event/player/on_hurt_entity_with_tools.mcfunction b/data/fz/functions/game_event/advancement/on_hurt_entity_with_tools.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_hurt_entity_with_tools.mcfunction rename to data/fz/functions/game_event/advancement/on_hurt_entity_with_tools.mcfunction diff --git a/data/fz/functions/game_event/player/on_killed_mob_or_player.mcfunction b/data/fz/functions/game_event/advancement/on_killed_mob_or_player.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_killed_mob_or_player.mcfunction rename to data/fz/functions/game_event/advancement/on_killed_mob_or_player.mcfunction diff --git a/data/fz/functions/game_event/advancement/on_login.mcfunction b/data/fz/functions/game_event/advancement/on_login.mcfunction new file mode 100644 index 0000000..c21a9ea --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_login.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_piglin_trade.mcfunction b/data/fz/functions/game_event/advancement/on_piglin_trade.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_piglin_trade.mcfunction rename to data/fz/functions/game_event/advancement/on_piglin_trade.mcfunction diff --git a/data/fz/functions/game_event/player/on_placed_block.mcfunction b/data/fz/functions/game_event/advancement/on_placed_block.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_placed_block.mcfunction rename to data/fz/functions/game_event/advancement/on_placed_block.mcfunction diff --git a/data/fz/functions/game_event/advancement/on_play_one_hour.mcfunction b/data/fz/functions/game_event/advancement/on_play_one_hour.mcfunction new file mode 100644 index 0000000..0cc87cb --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_play_one_hour.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_shears_used_on_entity.mcfunction b/data/fz/functions/game_event/advancement/on_shears_used_on_entity.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_shears_used_on_entity.mcfunction rename to data/fz/functions/game_event/advancement/on_shears_used_on_entity.mcfunction diff --git a/data/fz/functions/game_event/player/on_sneak.mcfunction b/data/fz/functions/game_event/advancement/on_sneak.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_sneak.mcfunction rename to data/fz/functions/game_event/advancement/on_sneak.mcfunction diff --git a/data/fz/functions/game_event/advancement/on_took_damage.mcfunction b/data/fz/functions/game_event/advancement/on_took_damage.mcfunction new file mode 100644 index 0000000..65bb363 --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_took_damage.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_tools_used_on_block.mcfunction b/data/fz/functions/game_event/advancement/on_tools_used_on_block.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_tools_used_on_block.mcfunction rename to data/fz/functions/game_event/advancement/on_tools_used_on_block.mcfunction diff --git a/data/fz/functions/game_event/player/on_unsneak.mcfunction b/data/fz/functions/game_event/advancement/on_unsneak.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_unsneak.mcfunction rename to data/fz/functions/game_event/advancement/on_unsneak.mcfunction diff --git a/data/fz/functions/game_event/advancement/on_used_tool.mcfunction b/data/fz/functions/game_event/advancement/on_used_tool.mcfunction new file mode 100644 index 0000000..ad0d153 --- /dev/null +++ b/data/fz/functions/game_event/advancement/on_used_tool.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_villager_trade.mcfunction b/data/fz/functions/game_event/advancement/on_villager_trade.mcfunction similarity index 100% rename from data/fz/functions/game_event/player/on_villager_trade.mcfunction rename to data/fz/functions/game_event/advancement/on_villager_trade.mcfunction diff --git a/data/fz/functions/game_event/player/reset_advancements.mcfunction b/data/fz/functions/game_event/advancement/reset_advancements.mcfunction similarity index 89% rename from data/fz/functions/game_event/player/reset_advancements.mcfunction rename to data/fz/functions/game_event/advancement/reset_advancements.mcfunction index baa824d..f56c893 100644 --- a/data/fz/functions/game_event/player/reset_advancements.mcfunction +++ b/data/fz/functions/game_event/advancement/reset_advancements.mcfunction @@ -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": "的所有事件进度"}] \ No newline at end of file +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": "的游戏事件进度"}] \ No newline at end of file diff --git a/data/fz/functions/game_event/carpet_player/tick/tick.mcfunction b/data/fz/functions/game_event/carpet_player/tick/tick.mcfunction new file mode 100644 index 0000000..8437585 --- /dev/null +++ b/data/fz/functions/game_event/carpet_player/tick/tick.mcfunction @@ -0,0 +1 @@ +scoreboard players remove @s fz.event.play_ticks 1 \ No newline at end of file diff --git a/data/fz/functions/game_event/load.mcfunction b/data/fz/functions/game_event/load.mcfunction index 8a46354..0953c38 100644 --- a/data/fz/functions/game_event/load.mcfunction +++ b/data/fz/functions/game_event/load.mcfunction @@ -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": "已加载系统组件:游戏事件"}] \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_aviate_one_meter.mcfunction b/data/fz/functions/game_event/player/on_aviate_one_meter.mcfunction index 3d81a31..17815bb 100644 --- a/data/fz/functions/game_event/player/on_aviate_one_meter.mcfunction +++ b/data/fz/functions/game_event/player/on_aviate_one_meter.mcfunction @@ -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 \ No newline at end of file +function #fz:game_event/player/on_aviate_one_meter \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_broke_block.mcfunction b/data/fz/functions/game_event/player/on_broke_block.mcfunction index 46a4219..e22b990 100644 --- a/data/fz/functions/game_event/player/on_broke_block.mcfunction +++ b/data/fz/functions/game_event/player/on_broke_block.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_broke_block/on_used_tool.mcfunction b/data/fz/functions/game_event/player/on_broke_block/on_used_tool.mcfunction new file mode 100644 index 0000000..1b45cdf --- /dev/null +++ b/data/fz/functions/game_event/player/on_broke_block/on_used_tool.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_dead.mcfunction b/data/fz/functions/game_event/player/on_dead.mcfunction index 4fa7452..9388670 100644 --- a/data/fz/functions/game_event/player/on_dead.mcfunction +++ b/data/fz/functions/game_event/player/on_dead.mcfunction @@ -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 \ No newline at end of file +function #fz:game_event/player/on_dead \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_login.mcfunction b/data/fz/functions/game_event/player/on_login.mcfunction index 217dcf8..8c249e0 100644 --- a/data/fz/functions/game_event/player/on_login.mcfunction +++ b/data/fz/functions/game_event/player/on_login.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_play_one_hour.mcfunction b/data/fz/functions/game_event/player/on_play_one_hour.mcfunction index f0ad84f..a30a742 100644 --- a/data/fz/functions/game_event/player/on_play_one_hour.mcfunction +++ b/data/fz/functions/game_event/player/on_play_one_hour.mcfunction @@ -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 \ No newline at end of file +function #fz:game_event/player/on_play_one_hour \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_took_damage.mcfunction b/data/fz/functions/game_event/player/on_took_damage.mcfunction index 2540a8c..54cfac8 100644 --- a/data/fz/functions/game_event/player/on_took_damage.mcfunction +++ b/data/fz/functions/game_event/player/on_took_damage.mcfunction @@ -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 \ No newline at end of file +function #fz:game_event/player/on_took_damage \ No newline at end of file diff --git a/data/fz/functions/game_event/player/on_used_tool.mcfunction b/data/fz/functions/game_event/player/on_used_tool.mcfunction index 841079f..5245a78 100644 --- a/data/fz/functions/game_event/player/on_used_tool.mcfunction +++ b/data/fz/functions/game_event/player/on_used_tool.mcfunction @@ -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 \ No newline at end of file +function #fz:game_event/player/on_used_tool \ No newline at end of file diff --git a/data/fz/functions/module/interactor/event/on_click.mcfunction b/data/fz/functions/module/interactor/event/on_click.mcfunction new file mode 100644 index 0000000..5d10279 --- /dev/null +++ b/data/fz/functions/module/interactor/event/on_click.mcfunction @@ -0,0 +1,5 @@ +## 运行事件 +function #fz:module/interactor/event/on_click/on_click + +## 重置进度 +advancement revoke @s only fz:module/interactor/on_click \ No newline at end of file diff --git a/data/fz/functions/module/interactor/event/on_unsneak.mcfunction b/data/fz/functions/module/interactor/event/on_unsneak.mcfunction deleted file mode 100644 index 71604e8..0000000 --- a/data/fz/functions/module/interactor/event/on_unsneak.mcfunction +++ /dev/null @@ -1,3 +0,0 @@ -# 本目录用于存放向事件中注册的函数,并不用来新建事件 - -execute if entity @s[x_rotation = -90] run function #fz:module/interactor/on_interact \ No newline at end of file diff --git a/data/fz/functions/module/interactor/event/on_unsneak/on_unsneak.mcfunction b/data/fz/functions/module/interactor/event/on_unsneak/on_unsneak.mcfunction new file mode 100644 index 0000000..2c8175c --- /dev/null +++ b/data/fz/functions/module/interactor/event/on_unsneak/on_unsneak.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/module/interactor/on_interact.mcfunction b/data/fz/functions/module/interactor/event/reset_advancements.mcfunction similarity index 66% rename from data/fz/functions/module/interactor/on_interact.mcfunction rename to data/fz/functions/module/interactor/event/reset_advancements.mcfunction index 56b9ba8..cfdab22 100644 --- a/data/fz/functions/module/interactor/on_interact.mcfunction +++ b/data/fz/functions/module/interactor/event/reset_advancements.mcfunction @@ -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": "触发了配置页面"}] \ No newline at end of file +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 \ No newline at end of file diff --git a/data/fz/functions/module/interactor/install.mcfunction b/data/fz/functions/module/interactor/install.mcfunction index 7532369..1ca6478 100644 --- a/data/fz/functions/module/interactor/install.mcfunction +++ b/data/fz/functions/module/interactor/install.mcfunction @@ -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 diff --git a/data/fz/functions/module/interactor/interactor/display.mcfunction b/data/fz/functions/module/interactor/interactor/display.mcfunction new file mode 100644 index 0000000..282312e --- /dev/null +++ b/data/fz/functions/module/interactor/interactor/display.mcfunction @@ -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": "]"}]] \ No newline at end of file diff --git a/data/fz/functions/module/interactor/interactor/on_click.mcfunction b/data/fz/functions/module/interactor/interactor/on_click.mcfunction new file mode 100644 index 0000000..e8efe7a --- /dev/null +++ b/data/fz/functions/module/interactor/interactor/on_click.mcfunction @@ -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 \ No newline at end of file diff --git a/data/fz/functions/module/interactor/load.mcfunction b/data/fz/functions/module/interactor/load.mcfunction index 6cc9c3d..1d910dd 100644 --- a/data/fz/functions/module/interactor/load.mcfunction +++ b/data/fz/functions/module/interactor/load.mcfunction @@ -1,4 +1,3 @@ -schedule clear fz:module/interactor/loop execute as @a run function #fz:module/interactor/reset_trigger ## 日志 diff --git a/data/fz/functions/module/interactor/loop.mcfunction b/data/fz/functions/module/interactor/loop.mcfunction deleted file mode 100644 index 3aa31c1..0000000 --- a/data/fz/functions/module/interactor/loop.mcfunction +++ /dev/null @@ -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 diff --git a/data/fz/functions/module/interactor/on_click.mcfunction b/data/fz/functions/module/interactor/on_click.mcfunction deleted file mode 100644 index adf595e..0000000 --- a/data/fz/functions/module/interactor/on_click.mcfunction +++ /dev/null @@ -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"}}] \ No newline at end of file diff --git a/data/fz/functions/module/interactor/reset_timeout.mcfunction b/data/fz/functions/module/interactor/reset_timeout.mcfunction deleted file mode 100644 index 92f0055..0000000 --- a/data/fz/functions/module/interactor/reset_timeout.mcfunction +++ /dev/null @@ -1,2 +0,0 @@ -## 设置或重制超时时间 -schedule function #fz:module/interactor/timeout 300s replace \ No newline at end of file diff --git a/data/fz/functions/module/interactor/timeout.mcfunction b/data/fz/functions/module/interactor/timeout.mcfunction deleted file mode 100644 index 1804b9f..0000000 --- a/data/fz/functions/module/interactor/timeout.mcfunction +++ /dev/null @@ -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": "五分钟无人回应,已关闭配置按钮监听,再次使用时需重新唤起"}] \ No newline at end of file diff --git a/data/fz/functions/module/scoreboard/interactor/display/2.mcfunction b/data/fz/functions/module/scoreboard/interactor/display.mcfunction similarity index 97% rename from data/fz/functions/module/scoreboard/interactor/display/2.mcfunction rename to data/fz/functions/module/scoreboard/interactor/display.mcfunction index 07b988a..61ee2e9 100644 --- a/data/fz/functions/module/scoreboard/interactor/display/2.mcfunction +++ b/data/fz/functions/module/scoreboard/interactor/display.mcfunction @@ -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": "]"}]] \ No newline at end of file diff --git a/data/fz/functions/module/scoreboard/interactor/display/1.mcfunction b/data/fz/functions/module/scoreboard/interactor/display/1.mcfunction deleted file mode 100644 index 234e4e6..0000000 --- a/data/fz/functions/module/scoreboard/interactor/display/1.mcfunction +++ /dev/null @@ -1,3 +0,0 @@ -# 调用者:#fz:module/scoreboard/interactor/display - -execute if data storage fz:installed fz.module{scoreboard:1b} run tellraw @s {"text": "计分板:"} \ No newline at end of file diff --git a/data/fz/functions/system/carpet/try_load_fzsd_ignore_fakeplayer_scores.mcfunction b/data/fz/functions/system/carpet/try_load_fzsd_ignore_fakeplayer_scores.mcfunction new file mode 100644 index 0000000..f98bd35 --- /dev/null +++ b/data/fz/functions/system/carpet/try_load_fzsd_ignore_fakeplayer_scores.mcfunction @@ -0,0 +1 @@ +script run if (system_info('app_list') ~ 'fzsd_ignore_fakeplayer_scores' == null, run('script load fzsd_ignore_fakeplayer_scores')) \ No newline at end of file diff --git a/data/fz/functions/entry.mcfunction b/data/fz/functions/system/entry.mcfunction similarity index 77% rename from data/fz/functions/entry.mcfunction rename to data/fz/functions/system/entry.mcfunction index 71a6ceb..193d6ef 100644 --- a/data/fz/functions/entry.mcfunction +++ b/data/fz/functions/system/entry.mcfunction @@ -1,5 +1,5 @@ - +function fz:system/carpet/try_load_fzsd_ignore_fakeplayer_scores function #fz:uninstall function #fz:install function #fz:load diff --git a/data/fz/functions/system/tick.mcfunction b/data/fz/functions/system/tick.mcfunction new file mode 100644 index 0000000..f925484 --- /dev/null +++ b/data/fz/functions/system/tick.mcfunction @@ -0,0 +1 @@ +execute as @a if predicate fz:not_real_player run function #fz:game_event/carpet_player/tick \ No newline at end of file diff --git a/data/fz/predicates/is_fake_player.json b/data/fz/predicates/is_fake_player.json new file mode 100644 index 0000000..1dfe75c --- /dev/null +++ b/data/fz/predicates/is_fake_player.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "team": "fake" + } +} \ No newline at end of file diff --git a/data/fz/predicates/is_real_player.json b/data/fz/predicates/is_real_player.json new file mode 100644 index 0000000..85773b3 --- /dev/null +++ b/data/fz/predicates/is_real_player.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:reference", + "name": "fz:not_real_player" + } +} \ No newline at end of file diff --git a/data/fz/predicates/is_shadow_player.json b/data/fz/predicates/is_shadow_player.json new file mode 100644 index 0000000..288b022 --- /dev/null +++ b/data/fz/predicates/is_shadow_player.json @@ -0,0 +1,7 @@ +{ + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "team": "shadow" + } +} \ No newline at end of file diff --git a/data/fz/predicates/not_real_player.json b/data/fz/predicates/not_real_player.json new file mode 100644 index 0000000..f595a91 --- /dev/null +++ b/data/fz/predicates/not_real_player.json @@ -0,0 +1,13 @@ +{ + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:reference", + "name": "fz:is_fake_player" + }, + { + "condition": "minecraft:reference", + "name": "fz:is_shadow_player" + } + ] +} \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/advancement/reset_advancements.json b/data/fz/tags/functions/game_event/advancement/reset_advancements.json new file mode 100644 index 0000000..815698f --- /dev/null +++ b/data/fz/tags/functions/game_event/advancement/reset_advancements.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "fz:game_event/advancement/reset_advancements" + ] +} \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/carpet_player/tick.json b/data/fz/tags/functions/game_event/carpet_player/tick.json new file mode 100644 index 0000000..736c936 --- /dev/null +++ b/data/fz/tags/functions/game_event/carpet_player/tick.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "fz:game_event/carpet_player/tick/tick" + ] +} \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/player/on_login.json b/data/fz/tags/functions/game_event/player/on_login.json index 8285185..8f7ca72 100644 --- a/data/fz/tags/functions/game_event/player/on_login.json +++ b/data/fz/tags/functions/game_event/player/on_login.json @@ -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" ] } \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/player/on_unsneak.json b/data/fz/tags/functions/game_event/player/on_unsneak.json index 1c2a033..c0ac64c 100644 --- a/data/fz/tags/functions/game_event/player/on_unsneak.json +++ b/data/fz/tags/functions/game_event/player/on_unsneak.json @@ -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" ] } \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/player/on_used_tool.json b/data/fz/tags/functions/game_event/player/on_used_tool.json index 907e30b..ed2dc87 100644 --- a/data/fz/tags/functions/game_event/player/on_used_tool.json +++ b/data/fz/tags/functions/game_event/player/on_used_tool.json @@ -1,6 +1,6 @@ { "replace": false, "values": [ - + "fz:game_event/player/on_broke_block/on_used_tool" ] } \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/player/reset_advancements.json b/data/fz/tags/functions/game_event/player/reset_advancements.json deleted file mode 100644 index d2e9363..0000000 --- a/data/fz/tags/functions/game_event/player/reset_advancements.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "fz:game_event/player/reset_advancements" - ] -} \ No newline at end of file diff --git a/data/fz/tags/functions/game_event/reset_all.json b/data/fz/tags/functions/game_event/reset_all.json deleted file mode 100644 index b7ea842..0000000 --- a/data/fz/tags/functions/game_event/reset_all.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "replace": false, - "values": [ - "#fz:game_event/player/reset_advancements", - "#fz:game_event/player/on_used_tool/reset_used_tool" - ] -} \ No newline at end of file diff --git a/data/fz/tags/functions/module/interactor/display.json b/data/fz/tags/functions/module/interactor/display.json index 0f41970..d290d01 100644 --- a/data/fz/tags/functions/module/interactor/display.json +++ b/data/fz/tags/functions/module/interactor/display.json @@ -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", diff --git a/data/fz/tags/functions/module/interactor/on_click.json b/data/fz/tags/functions/module/interactor/event/on_click.json similarity index 85% rename from data/fz/tags/functions/module/interactor/on_click.json rename to data/fz/tags/functions/module/interactor/event/on_click.json index ace1310..2952193 100644 --- a/data/fz/tags/functions/module/interactor/on_click.json +++ b/data/fz/tags/functions/module/interactor/event/on_click.json @@ -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", diff --git a/data/fz/tags/functions/module/interactor/on_click/on_click.json b/data/fz/tags/functions/module/interactor/event/on_click/on_click.json similarity index 73% rename from data/fz/tags/functions/module/interactor/on_click/on_click.json rename to data/fz/tags/functions/module/interactor/event/on_click/on_click.json index d566dc2..7dbd0f5 100644 --- a/data/fz/tags/functions/module/interactor/on_click/on_click.json +++ b/data/fz/tags/functions/module/interactor/event/on_click/on_click.json @@ -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" ] } \ No newline at end of file diff --git a/data/fz/tags/functions/module/interactor/event/reset_advancements.json b/data/fz/tags/functions/module/interactor/event/reset_advancements.json new file mode 100644 index 0000000..1257187 --- /dev/null +++ b/data/fz/tags/functions/module/interactor/event/reset_advancements.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "fz:module/interactor/event/reset_advancements" + ] +} \ No newline at end of file diff --git a/data/fz/tags/functions/module/interactor/on_interact.json b/data/fz/tags/functions/module/interactor/on_interact.json deleted file mode 100644 index 0c1536c..0000000 --- a/data/fz/tags/functions/module/interactor/on_interact.json +++ /dev/null @@ -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" - ] -} \ No newline at end of file diff --git a/data/fz/tags/functions/module/scoreboard/interactor/display.json b/data/fz/tags/functions/module/scoreboard/interactor/display.json index bff40db..2241b42 100644 --- a/data/fz/tags/functions/module/scoreboard/interactor/display.json +++ b/data/fz/tags/functions/module/scoreboard/interactor/display.json @@ -1,7 +1,6 @@ { "replace": false, "values": [ - "fz:module/scoreboard/interactor/display/1", - "fz:module/scoreboard/interactor/display/2" + "fz:module/scoreboard/interactor/display" ] } \ No newline at end of file diff --git a/data/minecraft/tags/functions/load.json b/data/minecraft/tags/functions/load.json index d9ecf7e..a9ca816 100644 --- a/data/minecraft/tags/functions/load.json +++ b/data/minecraft/tags/functions/load.json @@ -1,6 +1,6 @@ { "replace": false, "values": [ - "fz:entry" + "fz:system/entry" ] } \ No newline at end of file diff --git a/data/minecraft/tags/functions/tick.json b/data/minecraft/tags/functions/tick.json new file mode 100644 index 0000000..bcfb83b --- /dev/null +++ b/data/minecraft/tags/functions/tick.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "fz:system/tick" + ] +} \ No newline at end of file diff --git a/scripts/fzsd_ignore_fakeplayer_scores.sc b/scripts/fzsd_ignore_fakeplayer_scores.sc new file mode 100644 index 0000000..b0fa331 --- /dev/null +++ b/scripts/fzsd_ignore_fakeplayer_scores.sc @@ -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(); +); \ No newline at end of file