添加交互器打开方式选项、添加将假人分数忽略的地毯脚本

This commit is contained in:
延皓
2022-07-25 13:34:40 +08:00
parent 4ef9270a21
commit 696adfa9d7
87 changed files with 439 additions and 189 deletions
+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)标签中**
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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"
]
}
+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();
);