规范了事件系统,完成了实现计分板赋值逻辑

This commit is contained in:
延皓 2022-07-07 07:39:01 +08:00
parent 171b19c93a
commit 4665599abb
173 changed files with 1374 additions and 276 deletions

9
.gitignore vendored Normal file
View File

@ -0,0 +1,9 @@
data/minecraft/advancements
data/minecraft/loot_tables
data/minecraft/recipes
data/minecraft/tags/blocks
data/minecraft/tags/entity_types
data/minecraft/tags/fluids
data/minecraft/tags/game_events
data/minecraft/tags/items
data/minecraft/tags/worldgen

View File

@ -3,6 +3,7 @@
"executeIfScoreSet": "execute if score ${1:score_holder} ${2:objective} = ${1:score_holder} ${2:objective} $0",
"scoreboardPlayersOperation": "scoreboard players operation ${1:target_score_holder} ${2:target_objective} ${3|+=,-=,*=,/=,%=,=,>,<,<>|} ${4:source_score_holder} ${5:source_objective}",
"scoreboardPlayersSet": "scoreboard players set ${1:score_holder} ${2:objective} ${3:0}",
"scoreboardAddObjective": "scoreboard objectives add ${1:objective} ${2:dummy}",
"tagAdd": "tag ${1:target} add ${2:tag}",
"tagRemove": "tag ${1:target} remove ${2:tag}",
"dataModifyStorageFromSelf": "data modify storage ${1:id} ${2:path} set from entity @s ${3:path}",
@ -12,5 +13,7 @@
"logInfo": "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:log_info}\"}]",
"logAlert": "execute if score fz.logger.level fz.variable.integer matches ..600 run tellraw @a [{\"nbt\": \"fz.level.alert\", \"interpret\": true, \"storage\": \"fz:logger\"}, {\"text\": \"${1:log_alert}\"}]",
"logError": "execute if score fz.logger.level fz.variable.integer matches ..800 run tellraw @a [{\"nbt\": \"fz.level.error\", \"interpret\": true, \"storage\": \"fz:logger\"}, {\"text\": \"${1:log_error}\"}]",
"TEXT": "{\"text\": \"${1:TEXT}\", \"color\": \"${2:COLOR}\"}",
"storageText": "{\"nbt\": \"${1:NBT}\", \"interpret\": true, \"storage\": \"${2:A namespaced ID}\"}"
}
}

View File

@ -8,18 +8,14 @@
```
{
"replace": true,
"values": [
...
]
"values": ...
}
```
- `向标签中注册函数`时,`replace`为`false`
```
{
"replace": false,
"values": [
...
]
"values": ...
}
```

View File

@ -1,17 +1,17 @@
carpet setDefault language zh_cn
carpet setDefault stackableShulkerBoxes 16
carpet setDefault leadFix true
carpet setDefault ctrlQCraftingFix true
carpet setDefault smoothClientAnimations true
carpet setDefault fastRedstoneDust true
carpet setDefault reloadSuffocationFix true
carpet setDefault persistentParrots true
carpet setDefault missingTools true
carpet setDefault optimizedTNT true
carpet setDefault placementRotationFix true
carpet setDefault cleanLogs true
carpet setDefault lightningKillsDropsFix true
carpet setDefault lagFreeSpawning true
carpet setDefault accurateBlockPlacement true
carpet setDefault flippinCactus true
carpet setDefault defaultLoggers mobcaps,tps
carpet setDefault language zh_cn
carpet setDefault stackableShulkerBoxes 16
carpet setDefault leadFix true
carpet setDefault ctrlQCraftingFix true
carpet setDefault smoothClientAnimations true
carpet setDefault fastRedstoneDust true
carpet setDefault reloadSuffocationFix true
carpet setDefault persistentParrots true
carpet setDefault missingTools true
carpet setDefault optimizedTNT true
carpet setDefault placementRotationFix true
carpet setDefault cleanLogs true
carpet setDefault lightningKillsDropsFix true
carpet setDefault lagFreeSpawning true
carpet setDefault accurateBlockPlacement true
carpet setDefault flippinCactus true
carpet setDefault defaultLoggers mobcaps,tps

View File

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "fz.admin.implement:autocarpet",
"required": true
}
]
}

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/debug"
]
}

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/fine"
]
}

View File

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/info"
]
}

View File

@ -18,6 +18,6 @@
}
},
"rewards": {
"function": "fz:event/on_aviate_one_meter"
"function": "fz:event/player/on_aviate_one_meter"
}
}

View File

@ -0,0 +1,23 @@
{
"criteria": {
"on_dead": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"fz.event.death_count": {
"min": 1
}
}
}
]
}
}
},
"rewards": {
"function": "fz:event/player/on_dead"
}
}

View File

@ -0,0 +1,15 @@
{
"criteria": {
"on_fished": {
"trigger": "minecraft:fishing_rod_hooked",
"conditions": {
"item": {
"tag": "fz:raw_fishes"
}
}
}
},
"rewards": {
"function": "fz:event/player/on_fished"
}
}

View File

@ -0,0 +1,19 @@
{
"criteria": {
"on_hurt_entity_with_tools": {
"trigger": "minecraft:player_hurt_entity",
"conditions": {
"player": {
"equipment": {
"mainhand": {
"tag": "fz:tools"
}
}
}
}
}
},
"rewards": {
"function": "fz:event/player/on_hurt_entity_with_tools"
}
}

View File

@ -0,0 +1,27 @@
{
"criteria": {
"on_killed_mob_or_player": {
"trigger": "minecraft:player_killed_entity",
"conditions": {
"entity": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"type": "#fz:ignore_on_player_killed_entity"
}
}
}
],
"killing_blow": {
"bypasses_invulnerability": false
}
}
}
},
"rewards": {
"function": "fz:event/player/on_killed_mob_or_player"
}
}

View File

@ -21,6 +21,6 @@
}
},
"rewards": {
"function": "fz:event/on_login"
"function": "fz:event/player/on_login"
}
}

View File

@ -4,12 +4,15 @@
"trigger": "minecraft:thrown_item_picked_up_by_entity",
"conditions": {
"entity": {
"type": "minecraft:piglin"
"type": "minecraft:piglin",
"flags": {
"is_baby": false
}
}
}
}
},
"rewards": {
"function": "fz:event/on_piglin_trade"
"function": "fz:event/player/on_piglin_trade"
}
}

View File

@ -0,0 +1,10 @@
{
"criteria": {
"on_placed_block": {
"trigger": "minecraft:placed_block"
}
},
"rewards": {
"function": "fz:event/player/on_placed_block"
}
}

View File

@ -18,6 +18,6 @@
}
},
"rewards": {
"function": "fz:event/on_play_one_hour"
"function": "fz:event/player/on_play_one_hour"
}
}

View File

@ -0,0 +1,18 @@
{
"criteria": {
"on_shears_used_on_entity": {
"trigger": "minecraft:player_interacted_with_entity",
"conditions": {
"entity": {
"type": "#fz:shearable"
},
"item": {
"tag": "fz:tool/shears"
}
}
}
},
"rewards": {
"function": "fz:event/player/on_shears_used_on_entity"
}
}

View File

@ -10,5 +10,8 @@
}
}
}
},
"rewards": {
"function": "fz:event/player/on_sneak"
}
}

View File

@ -1,6 +1,6 @@
{
"criteria": {
"on_damage_taken": {
"on_took_damage": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
@ -18,6 +18,6 @@
}
},
"rewards": {
"function": "fz:event/on_damage_taken"
"function": "fz:event/player/on_took_damage"
}
}

View File

@ -0,0 +1,16 @@
{
"criteria": {
"on_tools_used_on_block": {
"__comment": "斧子剥树皮会触发两次!",
"trigger": "minecraft:item_used_on_block",
"conditions": {
"item": {
"tag": "fz:tools"
}
}
}
},
"rewards": {
"function": "fz:event/player/on_tools_used_on_block"
}
}

View File

@ -1,5 +1,5 @@
{
"parent": "fz:sneak",
"parent": "fz:event/on_sneak",
"criteria": {
"on_unsneak": {
"trigger": "minecraft:tick",
@ -11,7 +11,7 @@
"type_specific": {
"type": "player",
"advancements": {
"fz:sneak": true
"fz:event/on_sneak": true
}
}
}
@ -19,6 +19,6 @@
}
},
"rewards": {
"function": "fz:event/on_unsneak"
"function": "fz:event/player/on_unsneak"
}
}

View File

@ -0,0 +1,19 @@
{
"criteria": {
"on_used_tool": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"entity": "this",
"name": "fz:used_tool"
}
]
}
}
},
"rewards": {
"function": "fz:event/player/on_used_tool"
}
}

View File

@ -5,6 +5,6 @@
}
},
"rewards": {
"function": "fz:event/on_villager_trade"
"function": "fz:event/player/on_villager_trade"
}
}

View File

@ -1,3 +1,7 @@
function #fz:system_load
## 整数类型
scoreboard objectives add fz.variable.integer dummy
function fz:logger/install
function fz:logger/load
function fz:event/install
function #fz:install
function #fz:load

View File

@ -1,14 +0,0 @@
scoreboard objectives add fz.event.aviating_distance minecraft.custom:aviate_one_cm
scoreboard objectives add fz.event.damage_taken minecraft.custom:damage_taken
scoreboard objectives add fz.event.fishing_count minecraft.custom:fish_caught
scoreboard objectives add fz.event.leave_game minecraft.custom:leave_game
scoreboard objectives add fz.event.play_seconds minecraft.custom:play_time
scoreboard objectives add fz.event.villager_trade minecraft.custom:traded_with_villager
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已初始化系统组件:事件"}]

View File

@ -0,0 +1,47 @@
## 事件触发
scoreboard objectives add fz.event.aviating_distance minecraft.custom:aviate_one_cm
scoreboard objectives add fz.event.damage_taken minecraft.custom:damage_taken
scoreboard objectives add fz.event.death_count deathCount
scoreboard objectives add fz.event.leave_game minecraft.custom:leave_game
scoreboard objectives add fz.event.play_seconds minecraft.custom:play_time
scoreboard objectives add fz.event.villager_trade minecraft.custom:traded_with_villager
## 使用工具
scoreboard objectives add fz.event.used_tool.dig_offset dummy
scoreboard objectives add fz.event.used_tool.iron_axe minecraft.used:iron_axe
scoreboard objectives add fz.event.used_tool.stone_axe minecraft.used:stone_axe
scoreboard objectives add fz.event.used_tool.golden_axe minecraft.used:golden_axe
scoreboard objectives add fz.event.used_tool.wooden_axe minecraft.used:wooden_axe
scoreboard objectives add fz.event.used_tool.diamond_axe minecraft.used:diamond_axe
scoreboard objectives add fz.event.used_tool.netherite_axe minecraft.used:netherite_axe
scoreboard objectives add fz.event.used_tool.iron_hoe minecraft.used:iron_hoe
scoreboard objectives add fz.event.used_tool.stone_hoe minecraft.used:stone_hoe
scoreboard objectives add fz.event.used_tool.golden_hoe minecraft.used:golden_hoe
scoreboard objectives add fz.event.used_tool.wooden_hoe minecraft.used:wooden_hoe
scoreboard objectives add fz.event.used_tool.diamond_hoe minecraft.used:diamond_hoe
scoreboard objectives add fz.event.used_tool.netherite_hoe minecraft.used:netherite_hoe
scoreboard objectives add fz.event.used_tool.iron_pickaxe minecraft.used:iron_pickaxe
scoreboard objectives add fz.event.used_tool.stone_pickaxe minecraft.used:stone_pickaxe
scoreboard objectives add fz.event.used_tool.golden_pickaxe minecraft.used:golden_pickaxe
scoreboard objectives add fz.event.used_tool.wooden_pickaxe minecraft.used:wooden_pickaxe
scoreboard objectives add fz.event.used_tool.diamond_pickaxe minecraft.used:diamond_pickaxe
scoreboard objectives add fz.event.used_tool.netherite_pickaxe minecraft.used:netherite_pickaxe
scoreboard objectives add fz.event.used_tool.shears minecraft.used:shears
scoreboard objectives add fz.event.used_tool.iron_shovel minecraft.used:iron_shovel
scoreboard objectives add fz.event.used_tool.stone_shovel minecraft.used:stone_shovel
scoreboard objectives add fz.event.used_tool.golden_shovel minecraft.used:golden_shovel
scoreboard objectives add fz.event.used_tool.wooden_shovel minecraft.used:wooden_shovel
scoreboard objectives add fz.event.used_tool.diamond_shovel minecraft.used:diamond_shovel
scoreboard objectives add fz.event.used_tool.netherite_shovel minecraft.used:netherite_shovel
scoreboard objectives add fz.event.used_tool.iron_sword minecraft.used:iron_sword
scoreboard objectives add fz.event.used_tool.stone_sword minecraft.used:stone_sword
scoreboard objectives add fz.event.used_tool.golden_sword minecraft.used:golden_sword
scoreboard objectives add fz.event.used_tool.wooden_sword minecraft.used:wooden_sword
scoreboard objectives add fz.event.used_tool.diamond_sword minecraft.used:diamond_sword
scoreboard objectives add fz.event.used_tool.netherite_sword minecraft.used:netherite_sword
## 标记为已安装
data modify storage fz:install_manager fz.event set value 1b
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已安装系统组件:事件"}]

View File

@ -1,7 +0,0 @@
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
function #fz:event/on_aviate_one_meter
scoreboard players operation @s fz.event.aviating_distance %= 200 fz.variable.integer
advancement revoke @s only fz:event/on_aviate_one_meter

View File

@ -1,6 +0,0 @@
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.damage_taken
function #fz:event/on_damage_taken
scoreboard players set @s fz.event.damage_taken 0
advancement revoke @s only fz:event/on_damage_taken

View File

@ -1,16 +0,0 @@
## 调试
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": "登录游戏"}]
function #fz:event/on_login
## 复位其他触发器
advancement revoke @s until fz:event/on_damage_taken
advancement revoke @s until fz:event/on_piglin_trade
advancement revoke @s until fz:event/on_play_one_hour
advancement revoke @s until fz:event/on_sneak
advancement revoke @s until fz:event/on_unsneak
advancement revoke @s until fz:event/on_villager_trade
## 复位进度触发器
scoreboard players set @s fz.event.leave_game 0
advancement revoke @s only fz:event/on_login

View File

@ -1,2 +0,0 @@
function #fz:event/on_piglin_trade
advancement revoke @s only fz:event/on_piglin_trade

View File

@ -1,7 +0,0 @@
scoreboard players operation fz.var.score fz.variable.integer = @s fz.event.play_seconds
scoreboard players operation fz.var.score fz.variable.integer /= 3600 fz.variable.integer
function #fz:event/on_play_one_hour
scoreboard players operation @s fz.event.play_seconds %= 3600 fz.variable.integer
advancement revoke @s only fz:event/on_play_one_hour

View File

@ -1,2 +0,0 @@
function #fz:event/on_villager_trade
advancement revoke @s only fz:event/on_villager_trade

View File

@ -0,0 +1,15 @@
# 调用者advancements/fz:~
## 详细
execute if score fz.logger.level fz.variable.integer matches ..400 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:event/player/on_aviate_one_meter
## 重置事件进度
advancement revoke @s only fz:event/on_aviate_one_meter

View File

@ -0,0 +1,40 @@
# 调用者fz:event/player/on_used_tool
## 调试
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:event/player/on_broke_block

View File

@ -0,0 +1,14 @@
# 调用者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:event/player/on_dead
## 重置事件进度
advancement revoke @s only fz:event/on_dead

View File

@ -0,0 +1,10 @@
# 调用者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": "钓鱼上钩"}]
## 运行事件
function #fz:event/player/on_fished
## 重置事件进度
advancement revoke @s only fz:event/on_fished

View File

@ -0,0 +1,13 @@
# 调用者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 remove @s fz.event.used_tool.dig_offset 1
## 运行事件
function #fz:event/player/on_hurt_entity_with_tools
## 重置事件进度
advancement revoke @s only fz:event/on_hurt_entity_with_tools

View File

@ -0,0 +1,10 @@
# 调用者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": "击杀了生物"}]
## 运行事件
function #fz:event/player/on_killed_mob_or_player
## 重置事件进度
advancement revoke @s only fz:event/on_killed_mob_or_player

View File

@ -0,0 +1,10 @@
# 调用者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:event/player/on_login

View File

@ -0,0 +1,10 @@
# 调用者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": "与猪灵交易"}]
## 运行事件
function #fz:event/player/on_piglin_trade
## 重置事件进度
advancement revoke @s only fz:event/on_piglin_trade

View File

@ -0,0 +1,10 @@
# 调用者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": "放置了方块"}]
## 运行事件
function #fz:event/player/on_placed_block
## 重置事件进度
advancement revoke @s only fz:event/on_placed_block

View File

@ -0,0 +1,15 @@
# 调用者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_seconds
# scoreboard players operation fz.var.score fz.variable.integer /= 3600 fz.variable.integer
scoreboard players operation @s fz.event.play_seconds %= 3600 fz.variable.integer
## 运行事件
function #fz:event/player/on_play_one_hour
## 重置事件进度
advancement revoke @s only fz:event/on_play_one_hour

View File

@ -0,0 +1,13 @@
# 调用者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 remove @s fz.event.used_tool.dig_offset 1
## 运行事件
function #fz:event/player/on_shears_used_on_entity
## 重置事件进度
advancement revoke @s only fz:event/on_shears_used_on_entity

View File

@ -0,0 +1,7 @@
# 调用者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": "蹲下"}]
## 运行事件
function #fz:event/player/on_sneak

View File

@ -0,0 +1,14 @@
# 调用者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 set @s fz.event.damage_taken 0
## 运行事件
function #fz:event/player/on_took_damage
## 重置事件进度
advancement revoke @s only fz:event/on_took_damage

View File

@ -0,0 +1,14 @@
# 调用者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 remove @s fz.event.used_tool.dig_offset 1
## 运行事件
function #fz:event/player/on_tools_used_on_block
## 重置事件进度
advancement revoke @s only fz:event/on_tools_used_on_block

View File

@ -1,12 +1,14 @@
# 调用者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": "由下蹲状态站起"}]
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/fz:unskeak
##### 当玩家蹲起后触发此事件
## 运行事件
function #fz:event/on_unsneak
function #fz:event/player/on_unsneak
execute if entity @s[x_rotation = -90] run function #fz:event/module/config/on_config
## 复位进度触发器
## 重置事件进度
advancement revoke @s until fz:event/on_unsneak

View File

@ -0,0 +1,16 @@
# 调用者advancements/fz:~
## 详细
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.fine", "interpret": true, "storage": "fz:logger"}, {"text": "事件已触发:玩家"}, {"selector": "@s"}, {"text": "使用了工具"}]
## 运行事件
function #fz:event/player/on_used_tool
## 判断并触发挖掘事件
execute unless score @s fz.event.used_tool.offset matches ..-1 run function fz:event/player/on_broke_block
## 重置事件计分板
function #fz:event/player/on_used_tool/reset_used_tool
## 重置事件进度
advancement revoke @s only fz:event/on_used_tool

View File

@ -0,0 +1,35 @@
scoreboard players set @s fz.event.used_tool.offset 0
scoreboard players set @s fz.event.used_tool.diamond_axe 0
scoreboard players set @s fz.event.used_tool.diamond_hoe 0
scoreboard players set @s fz.event.used_tool.diamond_pickaxe 0
scoreboard players set @s fz.event.used_tool.diamond_shovel 0
scoreboard players set @s fz.event.used_tool.diamond_sword 0
scoreboard players set @s fz.event.used_tool.golden_axe 0
scoreboard players set @s fz.event.used_tool.golden_hoe 0
scoreboard players set @s fz.event.used_tool.golden_pickaxe 0
scoreboard players set @s fz.event.used_tool.golden_shovel 0
scoreboard players set @s fz.event.used_tool.golden_sword 0
scoreboard players set @s fz.event.used_tool.iron_axe 0
scoreboard players set @s fz.event.used_tool.iron_hoe 0
scoreboard players set @s fz.event.used_tool.iron_pickaxe 0
scoreboard players set @s fz.event.used_tool.iron_shovel 0
scoreboard players set @s fz.event.used_tool.iron_sword 0
scoreboard players set @s fz.event.used_tool.netherite_axe 0
scoreboard players set @s fz.event.used_tool.netherite_hoe 0
scoreboard players set @s fz.event.used_tool.netherite_pickaxe 0
scoreboard players set @s fz.event.used_tool.netherite_shovel 0
scoreboard players set @s fz.event.used_tool.netherite_sword 0
scoreboard players set @s fz.event.used_tool.shears 0
scoreboard players set @s fz.event.used_tool.stone_axe 0
scoreboard players set @s fz.event.used_tool.stone_hoe 0
scoreboard players set @s fz.event.used_tool.stone_pickaxe 0
scoreboard players set @s fz.event.used_tool.stone_shovel 0
scoreboard players set @s fz.event.used_tool.stone_sword 0
scoreboard players set @s fz.event.used_tool.wooden_axe 0
scoreboard players set @s fz.event.used_tool.wooden_hoe 0
scoreboard players set @s fz.event.used_tool.wooden_pickaxe 0
scoreboard players set @s fz.event.used_tool.wooden_shovel 0
scoreboard players set @s fz.event.used_tool.wooden_sword 0
## 调试
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": "的used_tool计分板"}]

View File

@ -0,0 +1,10 @@
# 调用者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": "与村民交易"}]
## 运行事件
function #fz:event/player/on_villager_trade
## 重置事件进度
advancement revoke @s only fz:event/on_villager_trade

View File

@ -0,0 +1,16 @@
## 复位所有事件进度
advancement revoke @s only fz:event/on_aviate_one_meter
advancement revoke @s only fz:event/on_dead
advancement revoke @s only fz:event/on_dig
advancement revoke @s only fz:event/on_interacted_with_entity/on_shears_used_on_entity
advancement revoke @s only fz:event/on_login
advancement revoke @s only fz:event/on_piglin_trade
advancement revoke @s only fz:event/on_play_one_hour
advancement revoke @s only fz:event/on_sneak
advancement revoke @s only fz:event/on_take_damage
advancement revoke @s only fz:event/on_tools_used_on_block
advancement revoke @s only fz:event/on_unsneak
advancement revoke @s only fz:event/on_villager_trade
## 调试
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": "的所有事件成就"}]

View File

@ -0,0 +1,47 @@
## 事件触发
scoreboard objectives remove fz.event.aviating_distance
scoreboard objectives remove fz.event.damage_taken
scoreboard objectives remove fz.event.death_count
scoreboard objectives remove fz.event.leave_game
scoreboard objectives remove fz.event.play_seconds
scoreboard objectives remove fz.event.villager_trade
## 使用工具
scoreboard objectives remove fz.event.used_tool.dig_offset
scoreboard objectives remove fz.event.used_tool.iron_axe
scoreboard objectives remove fz.event.used_tool.stone_axe
scoreboard objectives remove fz.event.used_tool.golden_axe
scoreboard objectives remove fz.event.used_tool.wooden_axe
scoreboard objectives remove fz.event.used_tool.diamond_axe
scoreboard objectives remove fz.event.used_tool.netherite_axe
scoreboard objectives remove fz.event.used_tool.iron_hoe
scoreboard objectives remove fz.event.used_tool.stone_hoe
scoreboard objectives remove fz.event.used_tool.golden_hoe
scoreboard objectives remove fz.event.used_tool.wooden_hoe
scoreboard objectives remove fz.event.used_tool.diamond_hoe
scoreboard objectives remove fz.event.used_tool.netherite_hoe
scoreboard objectives remove fz.event.used_tool.iron_pickaxe
scoreboard objectives remove fz.event.used_tool.stone_pickaxe
scoreboard objectives remove fz.event.used_tool.golden_pickaxe
scoreboard objectives remove fz.event.used_tool.wooden_pickaxe
scoreboard objectives remove fz.event.used_tool.diamond_pickaxe
scoreboard objectives remove fz.event.used_tool.netherite_pickaxe
scoreboard objectives remove fz.event.used_tool.shears
scoreboard objectives remove fz.event.used_tool.iron_shovel
scoreboard objectives remove fz.event.used_tool.stone_shovel
scoreboard objectives remove fz.event.used_tool.golden_shovel
scoreboard objectives remove fz.event.used_tool.wooden_shovel
scoreboard objectives remove fz.event.used_tool.diamond_shovel
scoreboard objectives remove fz.event.used_tool.netherite_shovel
scoreboard objectives remove fz.event.used_tool.iron_sword
scoreboard objectives remove fz.event.used_tool.stone_sword
scoreboard objectives remove fz.event.used_tool.golden_sword
scoreboard objectives remove fz.event.used_tool.wooden_sword
scoreboard objectives remove fz.event.used_tool.diamond_sword
scoreboard objectives remove fz.event.used_tool.netherite_sword
## 删除安装标记
data remove storage fz:install_manager fz.event
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已卸载系统组件:事件"}]

View File

@ -1,8 +1,5 @@
# 调用者#fz:install
## 整数类型
scoreboard objectives add fz.variable.integer dummy
## 安装模块
function #fz:module/install

View File

@ -1,29 +1,28 @@
# 调用者#fz:logger/init
##### 使用方式形如tellraw @a [{"nbt": "fz.exception.load_without_install_exception", "interpret": true, "storage": "fz:logger"}, {"text": "计分板"}]
##
data modify storage fz:logger fz.root set value '[{"text": "", "color": "white"}, {"text": "[", "color": "dark_gray"}, {"text": "FZD", "color": "gold"}, {"text": "]", "color": "dark_gray"}]'
## 不同日志等级
### error 800
data modify storage fz:logger fz.level.error set value '[{"text": "", "color": "red"}, {"nbt": "root", "interpret": true, "storage": "fz:logger"}, {"text": "[错误]"}]'
### alert 600
data modify storage fz:logger fz.level.alert set value '[{"text": "", "color": "yellow"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[提醒]"}]'
### info 500
data modify storage fz:logger fz.level.info set value '[{"text": "", "color": "green"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[信息]"}]'
### debug 400
data modify storage fz:logger fz.level.debug set value '[{"text": "", "color": "dark_aqua"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[调试]"}]'
### fine 300
data modify storage fz:logger fz.level.fine set value '[{"text": "", "color": "gray"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[详细]"}]'
## 异常
data modify storage fz:logger fz.exception.load_without_install_exception set value '[{"nbt": "fz.level.error", "interpret": true, "storage": "fz:logger"}, {"text": "模块在未安装时被加载:"}]'
## 首次安装时日志等级默认为一般消息
execute unless data storage fz:logger fz.levels.current run data modify storage fz:logger fz.levels.current set value 500
## 读取debug等级存入缓存
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已初始化系统组件:日志"}]
##### 使用方式形如tellraw @a [{"nbt": "fz.exception.load_without_install_exception", "interpret": true, "storage": "fz:logger"}, {"text": "计分板"}]
##
data modify storage fz:logger fz.root set value '[{"text": "", "color": "white"}, {"text": "[", "color": "dark_gray"}, {"text": "FZD", "color": "gold"}, {"text": "]", "color": "dark_gray"}]'
## 不同日志等级
### error 800
data modify storage fz:logger fz.level.error set value '[{"text": "", "color": "red"}, {"nbt": "root", "interpret": true, "storage": "fz:logger"}, {"text": "[错误]"}]'
### alert 600
data modify storage fz:logger fz.level.alert set value '[{"text": "", "color": "yellow"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[提醒]"}]'
### info 500
data modify storage fz:logger fz.level.info set value '[{"text": "", "color": "green"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[信息]"}]'
### debug 400
data modify storage fz:logger fz.level.debug set value '[{"text": "", "color": "dark_aqua"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[调试]"}]'
### fine 300
data modify storage fz:logger fz.level.fine set value '[{"text": "", "color": "gray"}, {"nbt": "fz.root", "interpret": true, "storage": "fz:logger"}, {"text": "[详细]"}]'
## 异常
data modify storage fz:logger fz.exception.load_without_install_exception set value '[{"nbt": "fz.level.error", "interpret": true, "storage": "fz:logger"}, {"text": "模块在未安装时被加载:"}]'
## 首次安装时日志等级默认为一般消息
execute unless data storage fz:logger fz.levels.current run data modify storage fz:logger fz.levels.current set value 500
## 标记为已安装
data modify storage fz:install_manager fz.logger set value 1b
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已安装系统组件:日志"}]

View File

@ -1,6 +1,7 @@
## debug 400
data modify storage fz:logger fz.levels.current set value 400
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
## 日志
tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "日志等级设为调试"}]

View File

@ -1,6 +1,7 @@
## fine 300
data modify storage fz:logger fz.levels.current set value 300
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
## 日志
tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "日志等级设为详细"}]

View File

@ -1,6 +1,7 @@
## info 500
data modify storage fz:logger fz.levels.current set value 500
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
## 日志
tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "日志等级设为一般信息"}]

View File

@ -0,0 +1,7 @@
# 调用者#fz:logger/init
## 读取日志等级存入缓存
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已加载系统组件:日志"}]

View File

@ -1,4 +1,10 @@
## 调用者#fz:logger/uninstall
## 删除安装标记
data remove storage fz:install_manager fz.logger
## 调试
execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已卸载系统组件:日志"}]
## 询问是否清除数据
execute if score fz.logger.level fz.variable.integer matches ..600 run tellraw @s [{"nbt": "fz.level.alert", "interpret": true, "storage": "fz:logger"}, {"text": "您要删除日志配置吗,它将会永久失去!(真的很久!)"}, {"text": "[确定]", "color": "dark_red", "clickEvent": {"action": "suggest_command", "value": "/function #fz:logger/clear_data"}, "hoverEvent": {"action": "show_text", "contents": {"text": "将命令填入聊天框"}}}]

View File

@ -1,3 +1,5 @@
function #fz:module/config/reset_trigger
## 日志

View File

@ -1,7 +1,7 @@
# 调用者fz:module/config/trigger
## 如果分数大于0说明玩家点击了按钮
execute as @a if score @s fz.module.config.trigger matches 1.. run function #fz:module/config/on_click
execute as @a if score @s fz.module.config.trigger matches 1.. run function #fz:event/module/config/on_click
execute as @a if score @s fz.module.config.trigger matches 1.. run function #fz:module/config/reset_trigger
schedule function fz:module/config/loop 1t replace

View File

@ -4,8 +4,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": "触发了配置功能"}]
## 监听计分板分数的循环schedule是为了避免1tick内执行两次但可有可无
schedule function fz:module/config/loop 0t replace
function fz:module/config/loop
## 显示按钮
function #fz:module/config/display

View File

@ -1,3 +0,0 @@
# 源计分板
## 总榜
scoreboard objectives add fz.module.scoreboard.assign.general dummy

Some files were not shown because too many files have changed in this diff Show More