Compare commits

..

18 Commits

Author SHA1 Message Date
延皓 f886ca2ed5 Merge branch 'dev/3.0' of https://gitee.com/harvey-husky/yh-ssd into dev/3.0 2022-12-28 07:28:08 +08:00
延皓 ffe6930599 fix 2022-12-28 07:28:06 +08:00
延皓 1bfe996fb5 update DEVDOC.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-19 14:48:46 +00:00
延皓 4c66b76e1f update DEVDOC.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-19 14:47:16 +00:00
延皓 ab37f056d7 update DEVDOC.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-19 14:46:55 +00:00
延皓 caad1117c3 update README.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-10 22:09:19 +00:00
延皓 6ac7cbc246 update README.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-10 22:06:48 +00:00
延皓 6a26940eef update README.md.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-12-04 14:50:40 +00:00
延皓 dec77bb496 update LICENSE.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-11-18 20:20:50 +00:00
延皓 8325f9ec08 update LICENSE.
Signed-off-by: 延皓 <8511461+harvey-husky@user.noreply.gitee.com>
2022-11-18 20:20:38 +00:00
延皓 2fd72d84de 3.0.5 2022-10-30 09:05:38 +08:00
延皓 47bd69d3a8 整理 2022-10-30 09:04:19 +08:00
延皓 8162a7031a 为日志和游戏事件模块装卸添加单独的标签 2022-10-30 01:18:03 +08:00
延皓 08f73b9b9c 增强挖掘榜工具的扩展性、优化here 2022-10-30 00:33:56 +08:00
延皓 2a31e4a2c6 3.0.4 2022-10-28 23:44:07 +08:00
延皓 e431f13e49 Merge branch 'dev/3.0' of https://gitee.com/harvey-husky/yh-ssd into dev/3.0 2022-10-28 23:43:54 +08:00
延皓 718ed537c4 3.0.4 2022-10-28 23:43:45 +08:00
延皓 025d821495 update README.md.
Signed-off-by: 延皓 <1214946206@qq.com>
2022-10-27 13:13:06 +00:00
42 changed files with 183 additions and 78 deletions
+1
View File
@@ -18,6 +18,7 @@
"values": ...
}
```
- ***函数和标签是否能被扩展数据包成功覆盖,取决于数据包加载顺序***,请使用`/datapack enable <xxx> after <xxx>`指令,使您的扩展数据包在FZ's Survival Datapack之后加载
## 基本要求
+7 -7
View File
@@ -1,20 +1,20 @@
FZSD许可
FZSD许可协议
2022/8/1 https://gitee.com/harvey-husky/fz-survival-datapack/blob/dev/3.0/LICENSE
2022/11/19 https://gitee.com/harvey-husky/fz-survival-datapack/blob/dev/3.0/LICENSE
版权所有 © 2019-2022 延皓<https://gitee.com/harvey-husky><https://space.bilibili.com/677233356>
定义:
“该许可”指FZSD许可
“该软件”指许可在该许可下的程序和相关文档的集合。
“该许可协议”指FZSD许可协议
“该软件”指许可在该许可协议下的程序和相关文档的集合。
“官方网址”指由版权所有者提供的该软件的发布网址。
您对该软件的复制、使用、修改及分发受如下条款的约束:
1. 禁止添加、修改或删除该许可的内容。
1. 禁止添加、修改或删除该许可协议的内容。
2. 禁止未经授权的转载、销售或二次发布该软件。
3. 禁止添加、修改或抹除该软件中的原作者署名。
4. 如果您从部署了该软件的Minecraft服务器中以任何方式获取了收益,则您必须在游戏中的明显位置明确告知用户您的Minecraft服务器使用了该软件,并附上官方网址。
4. 如果您从部署了该软件的Minecraft服务器中以任何方式获取了收益,则您必须在游戏中的明显位置明确告知用户您的Minecraft服务器使用了该软件,并附上该软件的官方网址。
5. 如果您修改了该软件中的任何内容,您必须将修改部分开源在主流开源平台(如gitee<https://gitee.com/>或github<https://github.com/>等)。
6. 如果您修改了该软件中的任何内容,您必须保留该许可,但您可以追加其他许可(不包括不支持附加条款的许可)。当您添加的许可中的条款与该许可冲突时,必须以该许可为准。
6. 如果您修改了该软件中的任何内容,您必须保留该许可协议,但您可以追加其他许可协议(不包括不支持附加条款的许可协议)。当您添加的许可协议中的条款与该许可协议冲突时,必须以该许可协议为准。
7. 该软件在提供时不带任何明示或默示的担保。在任何情况下,版权所有者不对任何人因使用该软件而引发的任何直接或间接损失承担任何责任。
+9 -4
View File
@@ -20,12 +20,12 @@
4. 将数据包 `zip` 文件放入 `world/datapacks` 中(在客户端位于 `.minecraft/saves/<存档名>/datapacks`
5. (可选)下载并安装 [Carpet Mod **1.4.24**](https://github.com/gnembon/fabric-carpet/releases) 或以上版本
6. (可选)从数据包 `zip` 文件的 `scripts` 目录中解压 `.sc` 文件,将其放入 `world/scripts` 中(在客户端位于 `.minecraft/saves/<存档名>/scripts`
7. 执行 `reload` 指令(或重新打开存档)
7. 执行 `reload` 指令(或重新打开存档;在一些第三方服务端中可能需要改为`/minecraft:reload`
# FZ生存数据包 3.0
[![数据包版本](https://img.shields.io/badge/正式版-3.0.2-blue.svg)](https://gitee.com/harvey-husky/FZ-sDatapack/releases) [![MC版本](https://img.shields.io/badge/Minecraft-1.19+-blue.svg)](https://minecraft.net/)
[![数据包版本](https://img.shields.io/badge/正式版-3.0.5-blue.svg)](https://gitee.com/harvey-husky/FZ-sDatapack/releases) [![MC版本](https://img.shields.io/badge/Minecraft-1.19+-blue.svg)](https://minecraft.net/)
> 其他版本见[发行页面](https://gitee.com/harvey-husky/FZ-sDatapack/releases)
@@ -79,12 +79,17 @@
- `reset <player> <scoreboardID>`:重置该玩家该计分板的分数
- `restore player <玩家名> <计分板ID>`:恢复该玩家的该计分板分数
- `restore player <玩家名>`:恢复该玩家的所有计分板分数
- `restore whitelist <玩家名> <计分板ID>`:恢复所有白名单玩家的该计分板分数
- `restore whitelist <玩家名>`:恢复所有白名单玩家的所有计分板分数
- `restore whitelist <计分板ID>`:恢复所有白名单玩家的该计分板分数
- `restore whitelist`:恢复所有白名单玩家的所有计分板分数
- *副作用:恢复完成后玩家会被放置在出生点,请确保出生点完全安全*
- `commandPlayer <permissionType>`:设置player命令权限类型
### 管理员
- 使用`/function admin.fzsd:admin`命令管理(安装、卸载等)各模块
### 其他
- 见游戏内交互器按钮
## 开发者相关
@@ -7,7 +7,6 @@
"player": [
{
"condition": "minecraft:reference",
"entity": "this",
"name": "fzsd:used_tool"
}
]
@@ -1 +1 @@
data modify storage fzsd:global fzsd.api.dimension.name set value '{"nbt": "fzsd.cache.dimension.id", "storage": "fzsd:global"}'
data modify storage fzsd:global fzsd.api.dimension.name set value '{"nbt": "fzsd.api.dimension.id", "storage": "fzsd:global"}'
+1 -1
View File
@@ -1,4 +1,4 @@
execute store success storage fzsd:version fzsd.need_update int 1 run data merge storage fzsd:version {fzsd: {version: '3.0.0'}}
execute store success storage fzsd:version fzsd.need_update int 1 run data merge storage fzsd:version {fzsd: {version: '3.0.5'}}
execute if data storage fzsd:version fzsd{need_update: 1} run function fzsd:system/update
function fzsd:system/carpet/try_load_fzsd_score
function #fzsd:load
@@ -4,4 +4,4 @@ execute if predicate fzsd:is_real_player run function fzsd:game_event/player/on_
##
scoreboard players operation @s fzsd.event.aviating_distance %= 200 fzsd.variable.integer
advancement revoke @s only fzsd:game_event/on_aviate_one_meter
advancement revoke @s from fzsd:game_event/on_aviate_one_meter
@@ -4,4 +4,4 @@ execute if predicate fzsd:is_real_player run function fzsd:game_event/player/on_
##
scoreboard players set @s fzsd.event.death_count 0
advancement revoke @s only fzsd:game_event/on_dead
advancement revoke @s from fzsd:game_event/on_dead
@@ -4,4 +4,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_entered_nether_portal
##
advancement revoke @s only fzsd:game_event/on_entered_nether_portal
advancement revoke @s from fzsd:game_event/on_entered_nether_portal
@@ -7,4 +7,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_fished
##
advancement revoke @s only fzsd:game_event/on_fished
advancement revoke @s from fzsd:game_event/on_fished
@@ -10,4 +10,4 @@ scoreboard players remove @s fzsd.event.used_tool.dig_offset 1
function #fzsd:game_event/player/on_hurt_entity_with_tools
##
advancement revoke @s only fzsd:game_event/on_hurt_entity_with_tools
advancement revoke @s from fzsd:game_event/on_hurt_entity_with_tools
@@ -7,4 +7,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_killed_mob_or_player
##
advancement revoke @s only fzsd:game_event/on_killed_mob_or_player
advancement revoke @s from fzsd:game_event/on_killed_mob_or_player
@@ -7,4 +7,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_piglin_trade
##
advancement revoke @s only fzsd:game_event/on_piglin_trade
advancement revoke @s from fzsd:game_event/on_piglin_trade
@@ -7,4 +7,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_placed_block
##
advancement revoke @s only fzsd:game_event/on_placed_block
advancement revoke @s from fzsd:game_event/on_placed_block
@@ -4,4 +4,4 @@ execute if predicate fzsd:is_real_player run function fzsd:game_event/player/on_
##
scoreboard players operation @s fzsd.event.play_ticks %= 72000 fzsd.variable.integer
advancement revoke @s only fzsd:game_event/on_play_one_hour
advancement revoke @s from fzsd:game_event/on_play_one_hour
@@ -10,4 +10,4 @@ scoreboard players remove @s fzsd.event.used_tool.dig_offset 1
function #fzsd:game_event/player/on_shears_used_on_entity
##
advancement revoke @s only fzsd:game_event/on_shears_used_on_entity
advancement revoke @s from fzsd:game_event/on_shears_used_on_entity
@@ -4,4 +4,4 @@ execute if predicate fzsd:is_real_player run function fzsd:game_event/player/on_
##
scoreboard players operation @s fzsd.event.damage_taken %= 10 fzsd.variable.integer
advancement revoke @s only fzsd:game_event/on_took_damage
advancement revoke @s from fzsd:game_event/on_took_damage
@@ -10,5 +10,5 @@ scoreboard players remove @s fzsd.event.used_tool.dig_offset 1
function #fzsd:game_event/player/on_tools_used_on_block
##
advancement revoke @s only fzsd:game_event/on_tool_axes_used_on_block
advancement revoke @s only fzsd:game_event/on_tools_exclude_axes_used_on_block
advancement revoke @s from fzsd:game_event/on_tool_axes_used_on_block
advancement revoke @s from fzsd:game_event/on_tools_exclude_axes_used_on_block
@@ -10,4 +10,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_unsneak
##
advancement revoke @s until fzsd:game_event/on_unsneak
advancement revoke @s through fzsd:game_event/on_unsneak
@@ -6,4 +6,4 @@ execute if predicate fzsd:is_real_player run function fzsd:game_event/player/on_
function #fzsd:game_event/player/on_used_tool/reset_used_tool
##
advancement revoke @s only fzsd:game_event/on_used_tool
advancement revoke @s from fzsd:game_event/on_used_tool
@@ -7,4 +7,4 @@ execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellr
function #fzsd:game_event/player/on_villager_trade
##
advancement revoke @s only fzsd:game_event/on_villager_trade
advancement revoke @s from fzsd:game_event/on_villager_trade
@@ -30,7 +30,4 @@ scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.eve
scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.event.used_tool.wooden_pickaxe
scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.event.used_tool.wooden_shovel
scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.event.used_tool.wooden_sword
scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.event.used_tool.dig_offset
##
execute unless score fzsd.var.score fzsd.variable.integer matches ..0 run function fzsd:game_event/player/on_broke_block_with_tool
scoreboard players operation fzsd.var.score fzsd.variable.integer += @s fzsd.event.used_tool.dig_offset
@@ -0,0 +1,2 @@
##
execute unless score fzsd.var.score fzsd.variable.integer matches ..0 run function fzsd:game_event/player/on_broke_block_with_tool
@@ -3,4 +3,4 @@ execute store result storage fzsd:here fzsd.nether.x int 0.125 run data get enti
execute store result storage fzsd:here fzsd.nether.z int 0.125 run data get entity @s Pos[2]
data modify storage fzsd:global fzsd.api.dimension.id set value "minecraft:the_nether"
function #fzsd:api/get_dimension_name
data modify storage fzsd:here fzsd.message[2] set value '[{"text": ",对应", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": "[", "color": "green"}, {"nbt": "fzsd.nether.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.nether.z", "storage": "fzsd:here"}, {"text": "]"}]]'
data modify storage fzsd:here fzsd.message.append set value '[{"text": ",对应", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": "[", "color": "green"}, {"nbt": "fzsd.nether.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.nether.z", "storage": "fzsd:here"}, {"text": "]"}]]'
@@ -3,4 +3,5 @@ execute store result storage fzsd:here fzsd.overworld.x int 8 run data get entit
execute store result storage fzsd:here fzsd.overworld.z int 8 run data get entity @s Pos[2]
data modify storage fzsd:global fzsd.api.dimension.id set value "minecraft:overworld"
function #fzsd:api/get_dimension_name
data modify storage fzsd:here fzsd.message[2] set value '[{"text": ",对应", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": "[", "color": "green"}, {"nbt": "fzsd.overworld.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.overworld.z", "storage": "fzsd:here"}, {"text": "]"}]]'
data modify storage fzsd:here fzsd.message.append set value '[{"text": ",对应", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": "[", "color": "green"}, {"nbt": "fzsd.overworld.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.overworld.z", "storage": "fzsd:here"}, {"text": "]"}]]'
## id
@@ -1 +1 @@
execute if data storage fzsd:global fzsd.api.dimension{id:"minecraft:overworld"} run function fzsd:module/here/get_dimension_message/if_overworld
execute if data entity @s {Dimension:"minecraft:overworld"} run function fzsd:module/here/get_dimension_message/if_overworld
@@ -1 +1 @@
execute if data storage fzsd:global fzsd.api.dimension{id:"minecraft:the_nether"} run function fzsd:module/here/get_dimension_message/if_the_nether
execute if data entity @s {Dimension:"minecraft:the_nether"} run function fzsd:module/here/get_dimension_message/if_the_nether
@@ -1,8 +1,8 @@
## fzsd.cache.pos已在install中初始化
execute store result storage fzsd:here fzsd.x int 1 run data get entity @s Pos[0]
execute store result storage fzsd:here fzsd.y int 1 run data get entity @s Pos[1]
execute store result storage fzsd:here fzsd.z int 1 run data get entity @s Pos[2]
data modify storage fzsd:here fzsd.message.append set value ''
data modify storage fzsd:here fzsd.dimension.name set from storage fzsd:global fzsd.api.dimension.name
##
execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellraw @a [{"nbt": "fzsd.level.debug", "interpret": true, "storage": "fzsd:logger"}, {"text": "玩家"}, {"selector": "@s"}, {"text": "获取了位置信息"}]
@@ -1 +1 @@
tellraw @a [{"selector": "@s"}, [{"text": "说:我在", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"nbt": "fzsd.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.y", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.z", "storage": "fzsd:here"}, {"text": "]"}], {"nbt": "fzsd.message.append", "interpret": true, "storage": "fzsd:here"}]]
tellraw @a [{"text": ""}, [{"selector": "@s"}, {"text": "说:我在", "color": "white"}, {"nbt": "fzsd.dimension.name", "interpret": true, "storage": "fzsd:here"}, [{"text": " [", "color": "green"}, {"nbt": "fzsd.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.y", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.z", "storage": "fzsd:here"}, {"text": "]"}], {"nbt": "fzsd.message.append", "interpret": true, "storage": "fzsd:here"}]]
@@ -1 +1 @@
tellraw @s [{"text": "你在", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"nbt": "fzsd.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.y", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.z", "storage": "fzsd:here"}, {"text": "]"}], {"nbt": "fzsd.message.append", "interpret": true, "storage": "fzsd:here"}]
tellraw @s [{"text": "你在", "color": "white"}, {"nbt": "fzsd.dimension.name", "interpret": true, "storage": "fzsd:here"}, [{"text": " [", "color": "green"}, {"nbt": "fzsd.x", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.y", "storage": "fzsd:here"}, {"text": ", "}, {"nbt": "fzsd.z", "storage": "fzsd:here"}, {"text": "]"}], {"nbt": "fzsd.message.append", "interpret": true, "storage": "fzsd:here"}]
@@ -1,2 +1,2 @@
execute if score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @a [{"selector": "@s"}, [{"text": "说:我上次穿出的下界传送门位于", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.x"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": "]"}]]]
execute if score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @a [{"text": ""}, [{"selector": "@s"}, {"text": "说:我上次穿出的下界传送门位于", "color": "white"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.x"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.y"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": "]"}]]]
execute unless score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @s {"text": "你从未穿出过下界传送门!"}
@@ -1,2 +1,2 @@
execute if score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @s [{"text": "你上次穿出的下界传送门位于"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.x"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": "]"}]]
execute if score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @s [{"text": "你上次穿出的下界传送门位于"}, {"nbt": "fzsd.api.dimension.name", "interpret": true, "storage": "fzsd:global"}, [{"text": " [", "color": "green"}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.x"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.y"}}, {"text": ", "}, {"score": {"name": "@s", "objective": "fzsd.module.last_nether_portal.z"}}, {"text": "]"}]]
execute unless score @s fzsd.module.last_nether_portal.dimension matches -2147483648..2147483647 run tellraw @s {"text": "你从未穿出过下界传送门!"}
@@ -2,4 +2,4 @@
data modify storage fzsd:install fzsd.global set value 0b
##
execute if score fzsd.logger.level fzsd.variable.integer matches ..500 run tellraw @a [{"nbt": "fzsd.level.info", "interpret": true, "storage": "fzsd:logger"}, {"text": "卸载完成!"}]
tellraw @a [{"nbt": "fzsd.level.info", "interpret": true, "storage": "fzsd:logger"}, {"text": "卸载完成!"}]
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fzsd:game_event/install"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fzsd:game_event/player/on_broke_block_with_tool/calculate_dig_score"
]
}
@@ -1,6 +1,7 @@
{
"replace": false,
"values": [
"fzsd:game_event/player/on_broke_block_with_tool/on_used_tool"
"#fzsd:game_event/player/on_broke_block_with_tool/calculate_dig_score",
"fzsd:game_event/player/on_broke_block_with_tool/try_trigger"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fzsd:game_event/uninstall"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fzsd:logger/install"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fzsd:logger/uninstall"
]
}
@@ -2,7 +2,7 @@
"replace": false,
"values": [
"fzsd:system/install/install",
"fzsd:logger/install",
"fzsd:game_event/install"
"#fzsd:logger/install",
"#fzsd:game_event/install"
]
}
@@ -1,8 +1,8 @@
{
"replace": false,
"values": [
"fzsd:game_event/uninstall",
"fzsd:logger/uninstall",
"#fzsd:game_event/uninstall",
"#fzsd:logger/uninstall",
"fzsd:system/uninstall/uninstall"
]
}
+97 -28
View File
@@ -1,7 +1,66 @@
// 计分板模块扩展插件
// 忽略假人分数
// **请勿修改文件名**
global_app_version = '1.0-beta.13';
//** 工具函数 **//
contains(list, value) -> (
return(list ~ value != null);
);
debug(msg) -> (
logger('debug', msg);
return();
);
require_not_null(value) -> (
if(value == null, throw('空指针异常!'));
return(value);
);
require_version(requirement) -> (
req_0 = slice(requirement, 0, 1);
req_1 = slice(requirement, 1, 2);
if(req_0 == '>',
if(req_1 == '=',
req_ver = split('>=|\\.', requirement);
print(player('all'), req_ver);
cur_ver = split('\\.', global_carpet_version);
return(number(req_ver:1) >= number(cur_ver:0)
&& number(req_ver:2) >= number(cur_ver:1)
&& number(req_ver:3) >= number(cur_ver:2));
);
req_ver = split('>|\\.', requirement);
print(player('all'), req_ver);
cur_ver = split('\\.', global_carpet_version);
return(number(req_ver:1) > number(cur_ver:0)
&& number(req_ver:2) > number(cur_ver:1)
&& number(req_ver:3) > number(cur_ver:2));
);
if(req_0 == '<',
if(req_1 == '=',
req_ver = split('<=|\\.', requirement);
print(player('all'), req_ver);
cur_ver = split('\\.', global_carpet_version);
return(number(req_ver:1) <= number(cur_ver:0)
&& number(req_ver:2) <= number(cur_ver:1)
&& number(req_ver:3) <= number(cur_ver:2));
);
req_ver = split('<|\\.', requirement);
print(player('all'), req_ver);
cur_ver = split('\\.', global_carpet_version);
return(number(req_ver:1) < number(cur_ver:0)
&& number(req_ver:2) < number(cur_ver:1)
&& number(req_ver:3) < number(cur_ver:2));
);
return(false);
);
//** 主要逻辑 **//
global_app_name = system_info('app_name');
global_app_version = '1.1-beta.1';
global_carpet_version = split('\\+', system_info('scarpet_version')):0;
global_current_scoreboard_list = [
'fzsd.module.scoreboard.display.activation',
'fzsd.module.scoreboard.display.damage_taken',
@@ -14,13 +73,12 @@ global_current_scoreboard_list = [
'fzsd.module.scoreboard.display.aviating_distance',
'fzsd.module.scoreboard.display.placement_count'
];
global_app_name = system_info('app_name');
__config() -> {
'scope' -> 'global',
'requires' -> {
'carpet' -> '>=1.4.45',
'minecraft' -> '>=1.17'
'minecraft' -> '>=1.18'
},
'command_permission' -> 2,
'commands' -> {
@@ -34,8 +92,8 @@ __config() -> {
'restore player <playerName> <scoreboardID>' -> 'command_restore',
'restore <custom> whitelist <trade_count>' -> _(custom, trade_count) -> command_restore_trade_count_confirm(custom, null, trade_count),
'restore <custom> player <playerName> <trade_count>' -> 'command_restore_trade_count_confirm',
'recalculate <scoreboardID>' -> 'recalculate_total_score',
'recalculate' -> ['recalculate_total_score', null],
'recalculate <scoreboardID>' -> 'command_recalculate_total_score',
'recalculate' -> ['command_recalculate_total_score', null],
'commandPlayer <permissionType>' -> 'carpet_command_player',
'reset <scoreboardPlayer> <scoreboardID>' -> 'command_reset',
'reset <scoreboardPlayer>' -> ['command_reset', null],
@@ -87,6 +145,22 @@ __config() -> {
};
__on_start() -> (
// 读取配置文件
global_config = read_file('config', 'json');
if(global_config == null, // carpet 1.4.69 兼容
global_config = {};
);
if(length(global_config) == 0, // 读取失败或不存在
delete_file('config', 'json'); // 避免一些意外的问题
global_config:'config_version' = '1.0.0'; // 占位用无实际作用
if(require_version('>=1.99.99'), // 等待新功能支持
global_config:'allow_spawn_whitelist_player' = false;
write_file('config', 'json', global_config);
,
// else
write_file('config', 'json', global_config);
);
);
global_team_cache = read_file('team_cache', 'json');
if(global_team_cache == null, // carpet 1.4.69 兼容
global_team_cache = {};
@@ -99,6 +173,17 @@ __on_close() -> (
write_file('team_cache', 'json', global_team_cache);
);
if(require_version('>=1.99.99'), // 等待新功能支持
__on_player_command(player, message) -> (
print(player('all'), 'command!');
if(length(message) > 7
&& slice(message, 0, 7) == '/player'
&& !(global_config:'allow_spawn_whitelist_player'),
return('cancel');
);
);
);
__on_player_connects(player) -> (
player_type = player ~ 'player_type';
player_team = player ~ 'team';
@@ -156,12 +241,12 @@ command_reset(player, scoreboard) -> (
for(scoreboard(),
scoreboard_remove(_, player);
);
recalculate_total_score(null);
command_recalculate_total_score(null);
print('已重置' + player + '的所有分数');
return();
);
scoreboard_remove(scoreboard, player);
recalculate_total_score(scoreboard);
command_recalculate_total_score(scoreboard);
print('已重置' + player + '' + scoreboard + '分数');
return();
);
@@ -269,7 +354,7 @@ command_update(fzsd_version) -> (
print('参数错误!');
return();
);
recalculate_total_score(null);
command_recalculate_total_score(null);
print('已从' + fzsd_version + '升级!');
return();
);
@@ -357,9 +442,9 @@ get_total_score_name_new(scoreboard) -> (
);
// 重算总分scoreboard == null 时重算所有总分
recalculate_total_score(scoreboard) -> (
command_recalculate_total_score(scoreboard) -> (
if(scoreboard == null,
for(global_current_scoreboard_list, recalculate_total_score(_));
for(global_current_scoreboard_list, command_recalculate_total_score(_));
return();
);
total_score_name_new = get_total_score_name_new(scoreboard);
@@ -503,7 +588,7 @@ restore_score(player_name, scoreboard) -> (
print('未识别的计分板ID' + scoreboard);
return(false);
);
recalculate_total_score(scoreboard);
command_recalculate_total_score(scoreboard);
if(player_is_offline,
world_spawn = system_info('world_spawn_point');
run('spreadplayers ' + world_spawn:0 + ' ' + world_spawn:2 + ' 0 10 false ' + player);
@@ -548,22 +633,6 @@ carpet_command_player(level) -> (
command_set(player, scoreboard, score) -> (
i = scoreboard(scoreboard, player, score);
print('玩家' + player + '修改前的分数为:' + i);
recalculate_total_score(scoreboard);
command_recalculate_total_score(scoreboard);
return(i);
);
// 工具函数
contains(list, value) -> (
return(list ~ value != null);
);
debug(msg) -> (
logger('debug', msg);
return();
);
require_not_null(value) -> (
if(value == null, throw('空指针异常!'));
return(value);
);