Compare commits

..

50 Commits

Author SHA1 Message Date
延皓 67a608a1d5 完善交互按钮 2022-07-19 21:50:14 +08:00
延皓 90a4a61855 实现交互按钮 2022-07-19 20:53:53 +08:00
延皓 7b2136c282 更新开发文档 2022-07-11 19:12:34 +08:00
延皓 a35bac8ecc 更新开发文档 2022-07-11 18:51:44 +08:00
延皓 0d19aefc01 更新开发文档 2022-07-11 18:48:44 +08:00
延皓 1bfd8448c0 更新开发文档 2022-07-11 18:45:25 +08:00
延皓 37b06a1e8d 更新开发文档 2022-07-11 18:38:11 +08:00
延皓 5a2255a9f8 更新开发文档 2022-07-11 18:28:47 +08:00
延皓 d85e07874f 完善…模块 2022-07-11 15:40:55 +08:00
延皓 4a69d7d927 完善here、last_death 2022-07-09 13:06:56 +08:00
延皓 596ebd9d64 完善系统核心功能、添加here模块 2022-07-08 09:18:06 +08:00
延皓 4665599abb 规范了事件系统,完成了实现计分板赋值逻辑 2022-07-07 07:39:01 +08:00
延皓 171b19c93a 实现计分板底层逻辑 2022-07-04 00:38:23 +08:00
延皓 d8d5b7b677 202207031901 2022-07-03 19:01:51 +08:00
延皓 2e3b933e9b dev.202207030640 2022-07-03 06:40:19 +08:00
延皓 6852545faf dev.202207030626 2022-07-03 06:27:45 +08:00
延皓 efa07bec51 update DEVDOC.md. 2022-06-27 17:17:27 +00:00
延皓 905b8120a0 update DEVDOC.md. 2022-06-27 15:56:21 +00:00
延皓 f2f2241220 update DEVDOC.md. 2022-06-27 15:55:33 +00:00
延皓 6f6d2cbeef update DEVDOC.md. 2022-06-27 15:54:44 +00:00
延皓 78336bc6e4 update DEVDOC.md. 2022-06-27 13:39:04 +00:00
延皓 131263aca5 update DEVDOC.md 2022-06-27 19:42:11 +08:00
延皓 18d6d3b4aa Merge branch 'dev/3.0' of https://gitee.com/harvey-husky/yssd into dev/3.0 2022-06-27 19:39:24 +08:00
延皓 88445a4e8c 完善计分板、开发文档 2022-06-27 19:39:05 +08:00
延皓 b925dfa464 完善计分板、开发文档 2022-06-27 19:33:43 +08:00
延皓 460b39698a 完善计分板、开发文档 2022-06-27 18:51:34 +08:00
延皓 288c0a3d5f update DEVDOC.md 2022-06-27 18:21:26 +08:00
延皓 f266f8b936 Merge branch 'dev/3.0' of https://gitee.com/harvey-husky/yssd into dev/3.0 2022-06-27 18:19:00 +08:00
延皓 a0aa66a044 编写部分开发文档 2022-06-27 18:18:41 +08:00
MSDNicrosoft c636870b9f 编写部分开发文档 2022-06-27 18:12:13 +08:00
MSDNicrosoft 51fa09b830 完善计分板扩展接口 2022-06-27 16:06:15 +08:00
延皓 d74bb19964 完善日志组件、完善配置组件、完善计分板组件 2022-06-25 02:22:23 +08:00
延皓 6f6ccb05be 继续完善config 2022-06-24 09:11:37 +08:00
延皓 c5b36c5f50 . 2022-06-24 08:11:36 +08:00
延皓 a2a9d874f7 ? 2022-06-23 21:13:23 +08:00
延皓 cb8c0a1079 完善scoreboard、初步实现config 2022-06-23 21:10:09 +08:00
延皓 d9b5c29fff . 2022-06-23 20:13:55 +08:00
延皓 e87d148380 . 2022-06-23 20:11:56 +08:00
延皓 4ad5cf2a3c . 2022-06-23 20:09:15 +08:00
延皓 5c75fa4127 . 2022-06-23 20:06:15 +08:00
延皓 ff5d951fd1 2022-06-23 15:48:44 +08:00
延皓 e1b364eb42 smg 2022-06-23 15:43:39 +08:00
延皓 c74f1e4515 . 2022-06-20 11:20:08 +08:00
延皓 5ecb61500e Merge branch 'dev/3.0' of https://gitee.com/harvey-husky/FZ-sDatapack into dev/3.0 2022-06-20 11:17:02 +08:00
延皓 5cf96e15c8 所有东西都在这! 2022-06-20 11:16:57 +08:00
延皓 ecd1280225 所有东西都在这! 2022-06-20 11:13:16 +08:00
延皓 27d19c941b 所有东西都在这! 2022-06-20 11:09:16 +08:00
延皓 474dc6a6e4 add LICENSE. 2022-05-29 16:19:07 +00:00
沈瑗杰 f6c8e25eb7 开始装修啦~ 2022-01-18 21:26:15 +08:00
沈瑗杰 364d2dc36f 删掉! 2021-11-17 22:40:59 +08:00
629 changed files with 4506 additions and 3701 deletions
+9
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
+18 -3
View File
@@ -1,5 +1,20 @@
{ {
"datapack.env.cmdVersion": "1.18.2", "datapack.snippets": {
"datapack.env.jsonVersion": "1.18.2", "executeIfScoreSet": "execute if score ${1:score_holder} ${2:objective} = ${1:score_holder} ${2:objective} $0",
"datapack.env.dataVersion": "1.18.2" "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}",
"summonAec": "summon minecraft:area_effect_cloud ~ ~ ~ {Age: -2147483648, Duration: -1, WaitTime: -2147483648, Tags: [\"${1:tag}\"]}",
"logFine": "execute if score fz.logger.level fz.variable.integer matches ..300 run tellraw @a [{\"nbt\": \"fz.level.fine\", \"interpret\": true, \"storage\": \"fz:logger\"}, {\"text\": \"${log_fine}\"}",
"logDebug": "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:log_debug}\"}]",
"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}\"}",
"ifInstalled": "execute if data storage fz:installed fz.module{${1:module_name}:1b} run ${tellraw}"
}
} }
-143
View File
@@ -1,143 +0,0 @@
# 更新记录
>所有可查阅的更改记录皆可在此处找到
### v2.2 pre1
- `census`地毯脚本更新至1.3.1版本
- 修复一些显示bug
- 现在基本可以正常使用**仍然不能保证稳定性(数据安全性)**
- 添加了可以用来`迁移`数据的Python脚本 `score_move`
- 使用时与`server`文件夹同级
- `score_move.py`
- `server`
- `server.jar`
- ······
- ······
- ······
- 更改了文件结构,将地毯脚本移动到`脚本`文件夹中
- 可能会有release
- 以后准备要重写整个Datapack了
- 3.0!
### v2.1.3 pre1
- 添加`census`地毯脚本
- `census`脚本**不稳定**,请谨慎使用,本版本无release
- 在 readme 里添加了一些badge
### v2.1.2 & 2.0.10
- 添加鞘翅滑翔距离榜单 [#I40PFS](https://gitee.com/harvey-husky/FZ-sDatapack/issues/I40PFS)
## v2.1.0
- 仅支持 **Minecraft 1.17 +**
- 修复使用部分工具和方块交互时挖掘榜会减分的 BUG
- 为榜单恢复插件新增新版本的新方块
## v2.0.8
- 修复在末地使用 `/here` 时,世界名称显示为世界 ID 的 BUG
- 修复 `tagplayer` 可以随意传送玩家的 BUG
- 修复记分板轮播时不显示击杀榜的 BUG
- 修复没有破基岩榜时依然会轮播破基岩榜的 BUG
-`/tagplayer tp` 指令添加了配置文件
## v2.0.3
- 修复在不添加 `tagplayer` 工具时记分板不加分的 BUG
## v2.0.2
- 修复在使用 Carpet 1.4.22及以上版本时,`tagplayer` 的玩家名错乱的 BUG
## v2.0.1.8
- 修复使用金斧头挖掘会导致总量 +2 的 BUG
- 修复使用金锄头挖掘不会给挖掘榜加分
- 修复主手有铲子,斧头,锄头时,副手放置方块会导致挖掘榜 -1 的 BUG (原版 BUG,通过 toolsfix2 成就修复) [#I2DJDC](https://gitee.com/harvey-husky/FZ-sDatapack/issues/I2DJDC)
## v2.0.1.7
- 修复有时设置界面打不开的 BUG
- 修复交易榜只加一次分的 BUG..
- 修复 `tagplayer` 中的事件多次触发的 BUG
## v2.0.1.6
- `tagplayer` 现在可以通过自定义文件名来自定义游戏内命令
- 修复铁制工具依然不统计记分板的 BUG...
## v2.0.1.3
- 修复部分铁质工具不统计挖掘榜的 BUG
## v2.0.1.1
- 为设置界面的计分板添加悬浮文本
- 无需配置即可支持该铁头功破基岩榜 Mod:[FZ-BBL](https://gitee.com/harvey-husky/FZ-BBL/releases)
- 破基岩榜的分数和订阅设置会在铁头功记分板的总分大于 `0` 时显示,以免未添加该 Mod 的服务器显示破基岩榜
## v2.0.0.11
- `/tagplayer spawn xxx`后面现在可以追加`at``facing``in`参数
## v2.0.0.10
- 扫地机添加了位于怪物血条栏的文字提示,同时添加了各种提示的开关功能
## v2.0.0.9
- 修复矿车白名单状态反了的 BUG
## v2.0.0.8
- 添加 `c.sc``s.sc``here.sc` 工具
## v2.0.0.7
- `tagplayer` 添加了新版 Carpet 新指令,可以为假人切换热键栏
- 现在 `tagplayer` 需要 Carpet **1.4.21** 及以上版本运行!
- 现在 `tagplayer` 可以给自己设置动作了
- 添加`/tagplayer shadow`指令将自己变为前缀为`挂机`的假人
## v2.0.0.6
- 修复 `restore_scores.sc` 工具不能恢复受伤害榜(抖M榜)的 BUG
## v2.0.0.5
- 修复挖掘榜部分工具不起作用的 BUG
- 添加 `restore_scores.sc` 工具便于恢复或从 `1.0` 版本升级记分板
## v2.0.0.4
- 添加彩色字体
## v2.0.0.3
- `tagplayer` 需要 Carpet **1.4.18** 及以上版本来运行
- 优化了 `tagplayer` 体验及修复若干 BUG
## v2.0.0.2
- 重写
+116
View File
@@ -0,0 +1,116 @@
# 开发文档
## 指引
- `函数`,指数据包`<命名空间>/functions`目录下的`.mcfunction`文件
- `标签`,指数据包`<命名空间>/tags`目录下的`.json`文件
- `覆盖标签并填入函数`时,`replace``true`
```
{
"replace": true,
"values": ...
}
```
- `向标签中注册函数`时,`replace`为`false`
```
{
"replace": false,
"values": ...
}
```
## 基本要求
- 接口逻辑和模块逻辑分离
- 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用!
- 函数调用尽量不要使用`function`命令,应改在标签中按顺序调用!
## 未来计划
- 细化版本管理,提供不同版本之间的升级函数,由`update_manager`控制。*务必仔细测试再发布,一旦升级无法降级!*
- playerdata相关功能
## 系统模块
### 频繁使用的计算单元
- [`#fz:calculation/*`](data/fz/tags/functions/calculation/)标签通常被用来进行简单重复的计算任务
### 事件模块
- 通常由**进度**触发,触发后调用同名的事件标签
- 在[`#fz:game_event/(<...>/)on_<事件>`](data/fz/tags/functions/game_event/)标签中注册触发时需要调用的函数即可
### 日志模块
- 仓库中提供了日志相关的代码片段,位于[`.vscode/settings.json`](.vscode/settings.json)
- 暂时没有找到方法在服务端控制台打印日志,但会被记录在客户端
#### 详细 Fine
- 等级:300
- 使用方法:`execute if score fz.logger.level fz.variable.integer matches ..300 run tellraw @a [{"nbt": "fz.level.fine", "interpret": true, "storage": "fz:logger"}, {"text": "你的日志"}`
#### 调试 Debug
- 等级:400
- 使用方法:`execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "你的日志"}`
#### 信息 Info
- 等级:500
- 使用方法:`execute if score fz.logger.level fz.variable.integer matches ..500 run tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "你的日志"}`
#### 提醒 Alert
- 等级:600
- 使用方法:`execute if score fz.logger.level fz.variable.integer matches ..600 run tellraw @a [{"nbt": "fz.level.alert", "interpret": true, "storage": "fz:logger"}, {"text": "你的日志"}`
#### 意外 Exception
###### 暂不提供
#### 错误 Error
- 等级:800
- 使用方法:`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. 定义一个显示按钮时执行的函数,使用形如`tellraw @s {"text": "[按钮]", "clickEvent": {"action": "run_command", "value": "/trigger fz.module.config.trigger set <触发器分数>"}}`的指令定义按钮。**大多数情况下这里的触发器分数必须是独一无二的**
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)标签中**
5. 在[`#fz:module/config/on_click`](data/fz/tags/functions/module/config/on_click.json)标签中注册上述函数
#### 其他接口
- 标签[`#fz:module/config/timeout`](data/fz/tags/functions/module/config/timeout.json):超时时的操作
- 标签[`#fz:module/config/reset_trigger`](data/fz/tags/functions/module/config/reset_trigger.json):重置玩家`@s`的触发器计分板
### 计分板模块
#### 自定义计分板颜色
- 数据包提供了所有计分板的全部16色命名函数
- 使用方法:**覆盖**[`#fz:module/scoreboard/display/set_text/<计分板名称>`](data/fz/tags/functions/module/scoreboard/display/set_text/)标签,填入[`fz:module/scoreboard/display/set_text/<计分板名称>/<颜色名称>`](data/fz/functions/module/scoreboard/display/set_text/)函数
#### 自定义计分板名称
1. 定义一个设置计分板颜色、文本的函数,格式可以参考[`fz:module/scoreboard/display/set_text/general/*`](data/fz/functions/module/scoreboard/display/set_text/general/)函数
2. **覆盖**[`#fz:module/scoreboard/display/set_text/<计分板名称>`](data/fz/tags/functions/module/scoreboard/display/set_text/)标签,填入上述函数
#### 扩展自己的计分板
1. 定义一个安装函数,参考[`fz:module/scoreboard/install`](data/fz/functions/module/scoreboard/install.mcfunction)函数
2. 在[`#fz:module/scoreboard/install`](data/fz/tags/functions/module/scoreboard/install.json)标签中注册该函数
3. 按照“自定义计分板颜色”和“自定义计分板名称”中的操作,定义你的计分板颜色和名称
4. 定义一个生成计分板运行时id的函数,参考[`fz:module/scoreboard/display/register_id`](data/fz/functions/module/scoreboard/display/register_id.mcfunction)函数
5. 在[`#fz:module/scoreboard/display/register_id`](data/fz/tags/functions/module/scoreboard/display/register_id.json)标签中注册该函数
6. 定义一个用来在轮播时显示你的计分板的函数,参考[`fz:module/scoreboard/display/carousel/set_display/*`](data/fz/functions/module/scoreboard/display/carousel/set_display/activation.mcfunction)函数
7. 定义一个用来判断在轮播时是否轮到你的计分板的函数,在判断后调用上一条中的函数,参考[`fz:module/scoreboard/display/carousel/try_display/*`](data/fz/functions/module/scoreboard/display/carousel/try_display/activation.mcfunction)函数
8. 将该函数注册到[`#fz:module/scoreboard/display/try_display`](data/fz/tags/functions/module/scoreboard/display/carousel/try_display.json)标签中
## 自定义模块
#### 注册安装、卸载、加载函数
- 在下列标签中注册你的安装、卸载、加载函数:
- [`#fz:system/install/module`](data/fz/tags/functions/system/install/module.json)
- [`#fz:system/uninstall/module`](data/fz/tags/functions/system/uninstall/module.json)
- [`#fz:system/load/module`](data/fz/tags/functions/system/load/module.json)
#### 注册设置页面
- 见[按钮操作](#按钮操作)
+21 -21
View File
@@ -1,21 +1,21 @@
MIT License MIT License
Copyright (c) 2022 延皓 Copyright (c) 2022 延皓
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions: furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software. copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
+9 -146
View File
@@ -1,146 +1,9 @@
# FZ-sDataPack # FZ datapack 3.0 版
A Minecraft Datapack 啊哈! 欢迎来到FZ数据包的3.0区域
[![mc版本](https://img.shields.io/badge/Minecraft-1.17+-blue.svg)](https://minecraft.net/) 不过很抱歉,这里还在装修,得等一段时间,谢谢!
[![carpet版本](https://img.shields.io/badge/fabric_carpet-1.4.24+-blue.svg)](https://github.com/gnembon/fabric-carpet/releases)
目前已有的东西:
#### @Author: Harvey_Husky
- `scripts`
#### This project is licensed under the terms of the GNU General Public License v3.0
#### Copyright (C) 2019-2021 Harvey_Husky
[B站链接](https://www.bilibili.com/read/cv4267319)
## 说明太长不想看·直接安装教程
- 1.前往 [发行页面](https://gitee.com/harvey-husky/FZ-sDatapack/releases) 下载此数据包
- 2.从zip文件中挑选你需要的`.sc`文件
- 3.在`world`文件夹中创建`datapacks``scripts`两个文件夹
- 4.将主体`zip`文件放入 `world/datapacks` 中(在客户端位于 `.minecraft/saves/<存档名>/datapacks`
- 5.将挑选出来的`.sc`文件放到 `world/scripts` 中(在客户端位于 `.minecraft/saves/<存档名>/scripts`
- 6.在控制台输入`/reload`(客户端则是重新进入世界)
## 总览
[![release版本](https://img.shields.io/badge/发行版-2.1.2-blue.svg)](https://gitee.com/harvey-husky/FZ-sDatapack/releases/2.1)
![设置界面](./图片示例:设置界面.png)
- 抬头并按一下 `Shift` 来打开设置界面
- 提供玩家挖掘、死亡、击杀、受伤、交易、钓鱼、滑翔和(破基岩)的数据榜单
- 提供扫地机
- 无需配置即可支持该铁头功破基岩榜 Mod:[FZ-BBL](https://gitee.com/harvey-husky/FZ-BBL/releases)
- 破基岩榜的分数和订阅设置会在铁头功记分板的总分大于 0 时显示,以免未添加该 Mod 的服务器显示破基岩榜
- [B站链接](https://www.bilibili.com/read/cv9178207)
- 记分板对照表:
| Object Name | 内容 |
| - | - |
| activation | 活跃时间(h) |
| damageTaken | 受伤害榜 |
| deathCounter | 死亡榜 |
| digCounter | 挖掘榜 |
| fishingCounter | 钓鱼榜 |
| killCounter | 击杀榜 |
| tradingCounter | 交易榜 |
| totalList | 总 量 |
| bedrockBreaked(最开始拼错了,后来不方便改了,不要在意) | [铁头功破基岩](https://www.bilibili.com/video/BV1KJ411b73z) |
| fz.aviate1m | 滑翔距离 |
- 提供一些[地毯脚本](#地毯脚本)`.sc` 文件):***请在升级数据包的同时替换这些工具!!!***
- 还有一个用于`census`脚本转移数据的python脚本`score_move`
## 更新记录
更新记录可在[此处](./CHANGELOG.md)找到
## 使用
### 注意事项
- 需要 [Carpet](https://github.com/gnembon/fabric-carpet/releases) Mod **1.4.24** 及以上版本
- **版本的兼容性**
- `v2.1.x` 支持 `Minecraft 1.17+`
- `v2.0.x` 支持 `Minecraft 1.16.3-1.16.5`
### 安装
- 前往 [发行页面](https://gitee.com/harvey-husky/FZ-sDatapack/releases) 下载此数据包
>请下载以 `FZ'sDatapack` 开头的 `.zip` 文件
- **将其放入 `world/datapacks` 中(在客户端位于 `.minecraft/saves/<存档名>/datapacks`**
- 载入数据包
- 如果是单人存档,请保存并退出,再打开存档
- 如果是服务器,可使用 `/reload` 指令或重启服务器以载入数据包
- 计分板的数据迁移
- 请使用 [restore_scores.sc](#restore_scoressc) 地毯脚本
## 地毯脚本
- **以下脚本皆在数据包(`.zip` 文件)中,请将其(`.sc` 文件)提取,并将其放入 `world/scripts` (在客户端位于 `.minecraft/saves/<存档名>/scripts` **
- 可使用 `/reload` 指令或重启服务器以载入脚本(或使用 Carpet Mod 的指令 `/script load <脚本名>` 载入)
### `here.sc`
- `/here` 向所有人发送自己的位置和所在维度
- 发送的消息使用 [VoxelMap](https://www.curseforge.com/minecraft/mc-mods/voxelmap) 可识别的数组格式
- 安装 [VoxelMap](https://www.curseforge.com/minecraft/mc-mods/voxelmap/files) Mod 后,左键高亮该坐标,`Ctrl+左键` 新建坐标点
### `c.sc`
- `/c` 修改玩家模式为旁观模式
### `s.sc`
- `/s` 修改玩家模式为生存模式
### `tagplayer.sc`
- 这个工具可以防止将地毯 Mod 生成的假人计入记分板
- 可以通过自定义文件名来自定义游戏内命令
- 配置文件:
- `allow_bot_tp`:用于控制是否允许传送假人
- `allow_spawning_whitelist_players`:用于控制是否允许生成白名单内的玩家
- 使用方法:
- 安装 [Carpet](https://github.com/gnembon/fabric-carpet/releases) Mod
- 输入`/script load tagplayer`加载工具
- 包含全部地毯假人自带的功能,如:
- `/tagplayer use xxx once`让假人xxx按一次使用键
- 包含新功能,如:
- `/tagplayer check xxx`:检查玩家的状态
- `/tagplayer checkall`:检查所有玩家的状态
- `/tagplayer killall`:清除所有假人
- 其他用法可以在游戏内输入 `/tagplayer` 查看
### `restore_scores.sc`
- 从数据包 `v1.4` 升级时也需要使用这个工具
- 这个工具可以从白名单读取玩家列表,逐一召唤假人,读取统计信息并赋值给记分板
- 如未开启白名单,请把 `usercache.json` 复制一份改成 `whitelist.json` 再进行操作
- ***注意:原有的记分板会被删除***
- 使用方法:
- 输入 `/script load restore_scores` 加载工具
- 输入 `/restore_scores by_whitelist` 开始数据迁移
- 输入 `/script unload restore_scores` 卸载工具
- 记得用完就删掉它!
### `Census.sc`
- `/census`
- 一个还在测试的脚本,可以输出挖掘榜
@@ -1,18 +1,17 @@
#给萌新辅助自动配置地毯优化和功能的函数 carpet setDefault language zh_cn
carpet setDefault language zh_cn carpet setDefault stackableShulkerBoxes 16
carpet setDefault antiCheatDisabled true carpet setDefault leadFix true
carpet setDefault combineXPOrbs true carpet setDefault ctrlQCraftingFix true
carpet setDefault persistentParrots true carpet setDefault smoothClientAnimations true
carpet setDefault stackableShulkerBoxes true carpet setDefault fastRedstoneDust true
carpet setDefault lagFreeSpawning true carpet setDefault reloadSuffocationFix true
carpet setDefault ctrlQCraftingFix true carpet setDefault persistentParrots true
carpet setDefault flippinCactus true carpet setDefault missingTools true
carpet setDefault missingTools true carpet setDefault optimizedTNT true
carpet setDefault smoothClientAnimations true carpet setDefault placementRotationFix true
carpet setDefault optimizedTNT true carpet setDefault cleanLogs true
carpet setDefault leadFix true carpet setDefault lightningKillsDropsFix true
carpet setDefault placementRotationFix true carpet setDefault lagFreeSpawning true
carpet setDefault xpNoCooldown true carpet setDefault accurateBlockPlacement true
carpet setDefault defaultLoggers mobcaps,tps carpet setDefault flippinCactus true
carpet setDefault commandTick true carpet setDefault defaultLoggers mobcaps,tps
carpet setDefault commandTrackAI true
@@ -0,0 +1,9 @@
{
"replace": false,
"values": [
{
"id": "fz.admin:autocarpet",
"required": true
}
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/debug"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/fine"
]
}
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"fz:logger/level/info"
]
}
-20
View File
@@ -1,20 +0,0 @@
{
"criteria": {
"config_check_sneak":{
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"flags": {
"is_sneaking": true
}
}
}
]
}
}
}
}
-28
View File
@@ -1,28 +0,0 @@
{
"criteria": {
"config_check_sneak":{
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"player": {
"advancements": {
"fz:config/sneak": true
}
},
"flags": {
"is_sneaking": false
}
}
}
]
}
}
},
"rewards": {
"function": "fz:config/unsneak"
}
}
+7
View File
@@ -0,0 +1,7 @@
{
"criteria": {
"root":{
"trigger": "minecraft:impossible"
}
}
}
@@ -1,6 +1,7 @@
{ {
"parent": "fz:game_event",
"criteria": { "criteria": {
"activation": { "on_aviate_one_meter": {
"trigger": "minecraft:tick", "trigger": "minecraft:tick",
"conditions": { "conditions": {
"player": [ "player": [
@@ -8,7 +9,7 @@
"condition": "minecraft:entity_scores", "condition": "minecraft:entity_scores",
"entity": "this", "entity": "this",
"scores": { "scores": {
"fz.aviateCounter": { "fz.event.aviating_distance": {
"min": 200 "min": 200
} }
} }
@@ -18,6 +19,6 @@
} }
}, },
"rewards": { "rewards": {
"function": "fz:scoreboards/aviate1m/calculator" "function": "fz:game_event/player/on_aviate_one_meter"
} }
} }
@@ -1,23 +1,24 @@
{ {
"criteria": { "parent": "fz:game_event",
"damage_taken": { "criteria": {
"trigger": "minecraft:tick", "on_dead": {
"conditions": { "trigger": "minecraft:tick",
"player": [ "conditions": {
{ "player": [
"condition": "minecraft:entity_scores", {
"entity": "this", "condition": "minecraft:entity_scores",
"scores": { "entity": "this",
"10xDamageTaken": { "scores": {
"min": 1 "fz.event.death_count": {
} "min": 1
} }
} }
] }
} ]
} }
}, }
"rewards": { },
"function": "fz:scoreboards/damagetaken/calculator" "rewards": {
} "function": "fz:game_event/player/on_dead"
}
} }
@@ -0,0 +1,21 @@
{
"criteria": {
"on_entered_nether_portal": {
"trigger": "minecraft:changed_dimension",
"conditions": {
"player": {
"location": {
"block": {
"blocks": [
"minecraft:nether_portal"
]
}
}
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_entered_nether_portal"
}
}
@@ -0,0 +1,16 @@
{
"parent": "fz:game_event",
"criteria": {
"on_fished": {
"trigger": "minecraft:fishing_rod_hooked",
"conditions": {
"item": {
"tag": "fz:raw_fishes"
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_fished"
}
}
@@ -0,0 +1,20 @@
{
"parent": "fz:game_event",
"criteria": {
"on_hurt_entity_with_tools": {
"trigger": "minecraft:player_hurt_entity",
"conditions": {
"player": {
"equipment": {
"mainhand": {
"tag": "fz:tools"
}
}
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_hurt_entity_with_tools"
}
}
@@ -0,0 +1,28 @@
{
"parent": "fz:game_event",
"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:game_event/player/on_killed_mob_or_player"
}
}
@@ -1,26 +1,27 @@
{ {
"criteria": { "parent": "fz:game_event",
"leave_game": { "criteria": {
"trigger": "minecraft:tick", "on_login": {
"conditions": { "trigger": "tick",
"player": [ "conditions": {
{ "player": [
"condition": "minecraft:inverted", {
"term": { "condition": "minecraft:inverted",
"condition": "minecraft:entity_scores", "term": {
"entity": "this", "condition": "minecraft:entity_scores",
"scores": { "entity": "this",
"leaveGame": { "scores": {
"max": 0 "fz.event.leave_game": {
} "max": 0
} }
} }
} }
] }
} ]
} }
}, }
"rewards": { },
"function": "fz:login/onlogin" "rewards": {
} "function": "fz:game_event/player/on_login"
}
} }
@@ -0,0 +1,19 @@
{
"parent": "fz:game_event",
"criteria": {
"on_piglin_trade": {
"trigger": "minecraft:thrown_item_picked_up_by_entity",
"conditions": {
"entity": {
"type": "minecraft:piglin",
"flags": {
"is_baby": false
}
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_piglin_trade"
}
}
@@ -0,0 +1,11 @@
{
"parent": "fz:game_event",
"criteria": {
"on_placed_block": {
"trigger": "minecraft:placed_block"
}
},
"rewards": {
"function": "fz:game_event/player/on_placed_block"
}
}
@@ -1,23 +1,24 @@
{ {
"criteria": { "parent": "fz:game_event",
"activation": { "criteria": {
"trigger": "minecraft:tick", "on_play_one_hour": {
"conditions": { "trigger": "minecraft:tick",
"player": [ "conditions": {
{ "player": [
"condition": "minecraft:entity_scores", {
"entity": "this", "condition": "minecraft:entity_scores",
"scores": { "entity": "this",
"actimeCounter": { "scores": {
"min": 3600 "fz.event.play_ticks": {
} "min": 72000
} }
} }
] }
} ]
} }
}, }
"rewards": { },
"function": "fz:scoreboards/activation/calculator" "rewards": {
} "function": "fz:game_event/player/on_play_one_hour"
}
} }
@@ -0,0 +1,19 @@
{
"parent": "fz:game_event",
"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:game_event/player/on_shears_used_on_entity"
}
}
@@ -0,0 +1,18 @@
{
"parent": "fz:game_event",
"criteria": {
"on_sneak": {
"trigger": "minecraft:tick",
"conditions": {
"player": {
"flags": {
"is_sneaking": true
}
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_sneak"
}
}
@@ -1,6 +1,7 @@
{ {
"parent": "fz:game_event",
"criteria": { "criteria": {
"damage_taken": { "on_took_damage": {
"trigger": "minecraft:tick", "trigger": "minecraft:tick",
"conditions": { "conditions": {
"player": [ "player": [
@@ -8,8 +9,8 @@
"condition": "minecraft:entity_scores", "condition": "minecraft:entity_scores",
"entity": "this", "entity": "this",
"scores": { "scores": {
"fz.bbl": { "fz.event.damage_taken": {
"min": 1 "min": 10
} }
} }
} }
@@ -18,6 +19,6 @@
} }
}, },
"rewards": { "rewards": {
"function": "fz:scoreboards/bedrockbreaked/calculator" "function": "fz:game_event/player/on_took_damage"
} }
} }
@@ -0,0 +1,17 @@
{
"parent": "fz:game_event",
"criteria": {
"on_tools_used_on_block": {
"__comment": "斧子剥树皮会触发两次!",
"trigger": "minecraft:item_used_on_block",
"conditions": {
"item": {
"tag": "fz:tools"
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_tools_used_on_block"
}
}
@@ -0,0 +1,24 @@
{
"parent": "fz:game_event/on_sneak",
"criteria": {
"on_unsneak": {
"trigger": "minecraft:tick",
"conditions": {
"player": {
"flags": {
"is_sneaking": false
},
"type_specific": {
"type": "player",
"advancements": {
"fz:game_event/on_sneak": true
}
}
}
}
}
},
"rewards": {
"function": "fz:game_event/player/on_unsneak"
}
}
@@ -0,0 +1,20 @@
{
"parent": "fz:game_event",
"criteria": {
"on_used_tool": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:reference",
"entity": "this",
"name": "fz:used_tool"
}
]
}
}
},
"rewards": {
"function": "fz:game_event/player/on_used_tool"
}
}
@@ -0,0 +1,11 @@
{
"parent": "fz:game_event",
"criteria": {
"on_villager_trade": {
"trigger": "minecraft:villager_trade"
}
},
"rewards": {
"function": "fz:game_event/player/on_villager_trade"
}
}
@@ -1,23 +0,0 @@
{
"criteria": {
"death_counter": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"deathTester": {
"min": 1
}
}
}
]
}
}
},
"rewards": {
"function": "fz:scoreboards/deathcounter/calculator"
}
}
@@ -1,244 +0,0 @@
{
"criteria": {
"used_tools": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:alternative",
"terms": [
{
"condition": "minecraft:entity_scores",
"scores": {
"usedWooShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedWooPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedWooHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedWooAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedStoShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedStoPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedStoHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedStoAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedNetShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedNetPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedNetHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedNetAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedIroShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedIroPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedIroHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedIroAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedGolShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedGolPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedGolHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedGolAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedDiaShovel": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedDiaPickaxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedDiaHoe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedDiaAxe": {
"min": 1
}
},
"entity": "this"
},
{
"condition": "minecraft:entity_scores",
"scores": {
"usedShears": {
"min": 1
}
},
"entity": "this"
}
]
}
]
}
}
},
"rewards": {
"function": "fz:scoreboards/digcounter/digtrigger"
}
}
@@ -1,58 +0,0 @@
{
"criteria": {
"right_click_tools": {
"trigger": "minecraft:item_used_on_block",
"conditions": {
"item": {
"items": [
"golden_axe",
"golden_hoe",
"golden_shovel",
"wooden_axe",
"wooden_hoe",
"wooden_shovel",
"diamond_axe",
"diamond_hoe",
"diamond_shovel",
"iron_axe",
"iron_hoe",
"iron_shovel",
"stone_axe",
"stone_hoe",
"stone_shovel",
"netherite_axe",
"netherite_hoe",
"netherite_shovel"
]
},
"location": {
"block": {
"blocks": [
"dirt_path",
"farmland",
"oak_log",
"stripped_birch_log",
"stripped_acacia_log",
"stripped_jungle_log",
"stripped_spruce_log",
"stripped_dark_oak_log",
"stripped_warped_stem",
"stripped_crimson_stem",
"stripped_oak_wood",
"stripped_birch_wood",
"stripped_acacia_wood",
"stripped_jungle_wood",
"stripped_spruce_wood",
"stripped_dark_oak_wood",
"stripped_warped_hyphae",
"stripped_crimson_hyphae"
]
}
}
}
}
},
"rewards": {
"function": "fz:scoreboards/digcounter/toolsfix"
}
}
@@ -1,48 +0,0 @@
{
"criteria": {
"tools_hit_entities": {
"trigger": "minecraft:player_hurt_entity",
"conditions": {
"player": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"equipment": {
"mainhand": {
"items": [
"iron_axe",
"stone_axe",
"golden_axe",
"wooden_axe",
"diamond_axe",
"netherite_axe",
"iron_shovel",
"stone_shovel",
"golden_shovel",
"wooden_shovel",
"diamond_shovel",
"netherite_shovel",
"iron_hoe",
"stone_hoe",
"golden_hoe",
"wooden_hoe",
"diamond_hoe",
"netherite_hoe",
"iron_pickaxe",
"stone_pickaxe",
"golden_pickaxe",
"wooden_pickaxe",
"diamond_pickaxe",
"netherite_pickaxe"
]
}
}
}
}
]
}
}
},
"rewards": {"function": "fz:scoreboards/digcounter/toolsfix2"}
}
@@ -1,23 +0,0 @@
{
"criteria": {
"fishing_counter": {
"trigger": "minecraft:tick",
"conditions": {
"player": [
{
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"fishingTester": {
"min": 1
}
}
}
]
}
}
},
"rewards": {
"function": "fz:scoreboards/fishingcounter/calculator"
}
}
@@ -1,24 +0,0 @@
{
"criteria": {
"kill_counter": {
"trigger": "minecraft:player_killed_entity",
"conditions": {
"player": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"carpetBot": 1
}
}
}
]
}
}
},
"rewards": {
"function": "fz:scoreboards/killcounter/calculator"
}
}
@@ -1,24 +0,0 @@
{
"criteria": {
"trading_counter": {
"trigger": "minecraft:villager_trade",
"conditions": {
"player": [
{
"condition": "minecraft:inverted",
"term": {
"condition": "minecraft:entity_scores",
"entity": "this",
"scores": {
"carpetBot": 1
}
}
}
]
}
}
},
"rewards": {
"function": "fz:scoreboards/tradingcounter/calculator"
}
}
@@ -0,0 +1 @@
data modify storage fz:global fz.api.dimension.name set value '{"nbt": "fz.cache.dimension.id", "storage": "fz:global"}'
@@ -0,0 +1 @@
execute if data storage fz:global fz.api.dimension{id:'minecraft:overworld'} run data modify storage fz:global fz.api.dimension.name set value '{"text": "主世界", "color": "dark_green"}'
@@ -0,0 +1 @@
execute if data storage fz:global fz.api.dimension{id:'minecraft:the_end'} run data modify storage fz:global fz.api.dimension.name set value '{"text": "末地", "color": "dark_gray"}'
@@ -0,0 +1 @@
execute if data storage fz:global fz.api.dimension{id:'minecraft:the_nether'} run data modify storage fz:global fz.api.dimension.name set value '{"text": "下界", "color": "dark_red"}'
@@ -0,0 +1,2 @@
data modify storage fz:global fz.api.dimension.id set from entity @s Dimension
data remove storage fz:global fz.api.dimension.name
@@ -1,5 +0,0 @@
#初始化tagplayer
carpet setDefault commandScript true
carpet setDefault commandScriptACE ops
script run carpet_rules = system_info('world_carpet_rules'); if(carpet_rules:'scriptsAutoload' != 'true', run('carpet setDefault scriptsAutoload true'); run('tellraw @a {"text":"[错误]假人插件未正确加载,已自动将“scriptsAutoload”设为true。正在重载,如仍未加载,请手动加载...", "color":"#ff6100"}'); run('reload'))
script unload player
@@ -1,28 +0,0 @@
#设置或重设超时时间为300stimeout函数
schedule function fz:config/timeout 300s
#输出玩家可见的设置页面
##扫地机
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s {"text": "扫地机:","color": "#ccff00"}
##扫地机时间1478966210-1478966215
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s [{"text": "- "},{"text": "[关]","color": "#00ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966210"}},{"text": "[30秒]","color": "#5fff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966211"}},{"text": "[1分钟]","color": "#d7ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966212"}},{"text": "[2分钟]","color": "#ffd900","clickEvent": {"action": "run_command","value": "/trigger config set 1478966213"}},{"text": "[3分钟]","color": "#ff6100","clickEvent": {"action": "run_command","value": "/trigger config set 1478966214"}},{"text": "[4分钟]","color": "#ff0000","clickEvent": {"action": "run_command","value": "/trigger config set 1478966215"}}]
##开启矿车白名单1478966216
execute if data storage fz:survival installed{sweeper: 1b} unless score keepMinecart parameter matches 1 run tellraw @s [{"text": "- "},{"text": "矿车白名单:","color": "#8c8f91"},{"text": "[已关闭]","color": "#ff0000","clickEvent": {"action": "run_command","value": "/trigger config set 1478966216"}}]
##关闭矿车白名单1478966217
execute if data storage fz:survival installed{sweeper: 1b} if score keepMinecart parameter matches 1 run tellraw @s [{"text": "- "},{"text": "矿车白名单:","color": "#8c8f91"},{"text": "[已开启]","color": "#00ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966217"}}]
##声音提示
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=!fz.sweeperSoundOff] [{"text": "- "},{"text": "声音:","color": "#8c8f91"},{"text": "[已开启]","color": "#00ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966209"}}]
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=fz.sweeperSoundOff] [{"text": "- "},{"text": "声音:","color": "#8c8f91"},{"text": "[已关闭]","color": "#ff0000","clickEvent": {"action": "run_command","value": "/trigger config set 1478966208"}}]
##消息提示
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=!fz.sweeperMessageOff] [{"text": "- "},{"text": "消息:","color": "#8c8f91"},{"text": "[已开启]","color": "#00ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966205"}}]
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=fz.sweeperMessageOff] [{"text": "- "},{"text": "消息:","color": "#8c8f91"},{"text": "[已关闭]","color": "#ff0000","clickEvent": {"action": "run_command","value": "/trigger config set 1478966204"}}]
##血条栏提示
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=!fz.sweeperBossbarOff] [{"text": "- "},{"text": "血条栏:","color": "#8c8f91"},{"text": "[已开启]","color": "#00ff00","clickEvent": {"action": "run_command","value": "/trigger config set 1478966207"}}]
execute if data storage fz:survival installed{sweeper: 1b} run tellraw @s[tag=fz.sweeperBossbarOff] [{"text": "- "},{"text": "血条栏:","color": "#8c8f91"},{"text": "[已关闭]","color": "#ff0000","clickEvent": {"action": "run_command","value": "/trigger config set 1478966206"}}]
##记分板
execute if data storage fz:survival installed{scoreboards: 1b} run tellraw @s {"text": "记分板:","color": "#ccff00"}
##计分板显示1838019370-1838019379
execute if data storage fz:survival installed{scoreboards: 1b} unless score bedrockBreaked matches 1.. run tellraw @s [{"text": "- "},{"text": "[关]","color": "#ff0000","hoverEvent": {"action": "show_text","contents": {"text": "", "color": "#ff0000"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019370"}},{"text": "[轮播]","color": "gold","hoverEvent": {"action": "show_text","contents": {"text": "轮播", "color": "gold"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019371"}},{"text": "[总量]","color": "dark_aqua","hoverEvent": {"action": "show_text","contents": {"text": "总量","color": "dark_aqua"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019379"}},{"text": "[在线时间(h)]","color": "aqua","hoverEvent": {"action": "show_text","contents": {"text": "在线时间(h)","color": "aqua"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019372"}},{"text": "[抖M名单]","color": "yellow","hoverEvent": {"action": "show_text","contents": {"text": "受伤害量","color": "yellow"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019373"}},{"text": "[死亡榜]","color": "dark_red","hoverEvent": {"action": "show_text","contents": {"text": "死亡榜","color": "dark_red"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019374"}},{"text": "[挖掘榜]","color": "gray","hoverEvent": {"action": "show_text","contents": {"text": "挖掘榜","color": "gray"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019375"}},{"text": "[钩直饵咸]","color": "blue","hoverEvent": {"action": "show_text","contents": {"text": "钓鱼榜","color": "blue"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019376"}},{"text": "[击杀榜]","color": "red","hoverEvent": {"action": "show_text","contents": {"text": "击杀榜","color": "red"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019377"}},{"text": "[交♂易榜]","color": "green","hoverEvent": {"action": "show_text","contents": {"text": "交易榜","color": "green"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019378"}}]
execute if data storage fz:survival installed{scoreboards: 1b} unless score bedrockBreaked matches 1.. run tellraw @s [{"text": "- "},{"text": "[滑翔距离]", "color": "light_purple", "hoverEvent": {"action": "show_text","contents": {"text": "滑翔距离", "color": "light_purple"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019368"}}]
##计分板显示1838019369-1838019379()
execute if data storage fz:survival installed{scoreboards: 1b} if score bedrockBreaked matches 1.. run tellraw @s [{"text": "- "},{"text": "[关]","color": "#ff0000","hoverEvent": {"action": "show_text","contents": {"text": "", "color": "#ff0000"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019370"}},{"text": "[轮播]","color": "gold","hoverEvent": {"action": "show_text","contents": {"text": "轮播", "color": "gold"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019371"}},{"text": "[总量]","color": "dark_aqua","hoverEvent": {"action": "show_text","contents": {"text": "总量","color": "dark_aqua"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019379"}},{"text": "[在线时间(h)]","color": "aqua","hoverEvent": {"action": "show_text","contents": {"text": "在线时间(h)","color": "aqua"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019372"}},{"text": "[抖M名单]","color": "yellow","hoverEvent": {"action": "show_text","contents": {"text": "受伤害量","color": "yellow"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019373"}},{"text": "[死亡榜]","color": "dark_red","hoverEvent": {"action": "show_text","contents": {"text": "死亡榜","color": "dark_red"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019374"}},{"text": "[挖掘榜]","color": "gray","hoverEvent": {"action": "show_text","contents": {"text": "挖掘榜","color": "gray"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019375"}},{"text": "[钩直饵咸]","color": "blue","hoverEvent": {"action": "show_text","contents": {"text": "钓鱼榜","color": "blue"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019376"}},{"text": "[击杀榜]","color": "red","hoverEvent": {"action": "show_text","contents": {"text": "击杀榜","color": "red"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019377"}},{"text": "[交♂易榜]","color": "green","hoverEvent": {"action": "show_text","contents": {"text": "交易榜","color": "green"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019378"}}]
execute if data storage fz:survival installed{scoreboards: 1b} if score bedrockBreaked matches 1.. run tellraw @s [{"text": "- "},{"text": "[滑翔距离]", "color": "light_purple", "hoverEvent": {"action": "show_text","contents": {"text": "滑翔距离", "color": "light_purple"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019368"}},{"text": "[铁头功]","color": "dark_green","hoverEvent": {"action": "show_text","contents": {"text": "破基岩榜","color": "dark_green"}},"clickEvent": {"action": "run_command","value": "/trigger config set 1838019369"}}]
@@ -1,9 +0,0 @@
#安装设置功能
#初始化触发器记分板
scoreboard objectives add config trigger
#存入已安装信息
data modify storage fz:survival installed.config set value 1b
#提示已安装
tellraw @a {"text": "[信息]设置功能已安装","color": "#5fff00"}
#开始运行
function fz:config/start
-8
View File
@@ -1,8 +0,0 @@
#主函数
#允许玩家操作config记分板
scoreboard players enable @a config
#每条子函数都要reset config分数和function fz:config/display
execute if data storage fz.installed {sweeper: 1b} as @a if score @s config matches 1478966200..1478966217 run function fz:sweeper/config/trigger
execute if data storage fz.installed {scoreboards: 1b} as @a if score @s config matches 1838019368..1838019379 run function fz:scoreboards/config
#循环执行本函数
schedule function fz:config/main 1t
@@ -1,9 +0,0 @@
#删除进程残留
schedule clear fz:config/main
schedule clear fz:config/timeout
data remove storage fz.config is_open
scoreboard players enable @a config
advancement revoke @a only fz:config/sneak
advancement revoke @a only fz:config/unsneak
#测试用的输出
tellraw @a {"text": "[信息]设置功能已启用","color": "#5fff00"}
@@ -1,8 +0,0 @@
#关闭主进程
schedule clear fz:config/main
#输出给打开过设置界面的玩家的消息
tellraw @a[scores={openingConfig=1}] {"text": "[提醒]5分钟无任何人回应,为节省性能,已关闭设置功能,请重新唤起","color": "#66ffff"}
#重置打开过设置界面的玩家的列表
scoreboard objectives remove openingConfig
#移除设置界面被打开的信息
data remove storage fz.config is_open
@@ -1,11 +0,0 @@
#触发函数unsneak函数控制
#重置玩家的config分数
scoreboard players reset @s config
#判断设置功能是否已经开启
execute unless data storage fz.config {is_open: 1b} run function fz:config/main
execute unless data storage fz.config {is_open: 1b} run scoreboard objectives add openingConfig dummy
execute unless data storage fz.config {is_open: 1b} run data merge storage fz.config {is_open: 1b}
#将该玩家加入打开设置页面的玩家的列表
scoreboard players set @s openingConfig 1
#将设置内容输出给玩家
function fz:config/display
@@ -1,9 +0,0 @@
#卸载设置功能
#移除进程残留
schedule clear fz:config/main
schedule clear fz:config/timeout
data remove storage fz.config is_open
#写入已卸载的信息
data modify storage fz:survival installed.config set value 0b
#提示已卸载
tellraw @a {"text": "[信息]设置功能已卸载","color": "#5fff00"}
@@ -1,6 +0,0 @@
#由config/sneak和config/unsneak成就触发
#判断玩家视角是否指向正上方turnon函数
execute if data storage fz:survival installed{config: 1b} if entity @s[x_rotation=-90] run function fz:config/turnon
#重置该玩家的两个成就
advancement revoke @s only fz:config/sneak
advancement revoke @s only fz:config/unsneak
+10
View File
@@ -0,0 +1,10 @@
function #fz:uninstall
function #fz:install
function #fz:load
# execute unless data storage fz:installed fz.global run function #fz:install
# execute if data storage fz:installed fz{global:1b} run function #fz:load
@@ -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_ticks 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:installed fz.event set value 1b
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已安装系统组件:游戏事件"}]
@@ -0,0 +1,4 @@
execute as @a run function #fz:game_event/reset_all
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已加载系统组件:游戏事件"}]
@@ -0,0 +1,15 @@
# 调用者: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
@@ -0,0 +1,40 @@
# 调用者:fz:game_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:game_event/player/on_broke_block
@@ -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:game_event/player/on_dead
##
advancement revoke @s only fz:game_event/on_dead
@@ -0,0 +1,6 @@
##
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:game_event/player/on_entered_nether_portal
advancement revoke @s only fz:game_event/on_entered_nether_portal
@@ -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:game_event/player/on_fished
##
advancement revoke @s only fz:game_event/on_fished
@@ -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:game_event/player/on_hurt_entity_with_tools
##
advancement revoke @s only fz:game_event/on_hurt_entity_with_tools
@@ -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:game_event/player/on_killed_mob_or_player
##
advancement revoke @s only fz:game_event/on_killed_mob_or_player
@@ -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:game_event/player/on_login
@@ -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:game_event/player/on_piglin_trade
##
advancement revoke @s only fz:game_event/on_piglin_trade
@@ -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:game_event/player/on_placed_block
##
advancement revoke @s only fz:game_event/on_placed_block
@@ -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_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
@@ -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:game_event/player/on_shears_used_on_entity
##
advancement revoke @s only fz:game_event/on_shears_used_on_entity
@@ -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:game_event/player/on_sneak
@@ -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": "受到了伤害"}]
##
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
@@ -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:game_event/player/on_tools_used_on_block
##
advancement revoke @s only fz:game_event/on_tools_used_on_block
@@ -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": "从蹲下状态站起"}]
# 调用者:advancement/fz:unskeak
#####
##
function #fz:game_event/player/on_unsneak
##
advancement revoke @s until fz:game_event/on_unsneak
@@ -0,0 +1,18 @@
# 调用者: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,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计分板"}]
@@ -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:game_event/player/on_villager_trade
##
advancement revoke @s only fz:game_event/on_villager_trade
@@ -0,0 +1,6 @@
##
### fz:game_event
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": "的所有事件进度"}]
@@ -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_ticks
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:installed fz.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": "已卸载系统组件:游戏事件"}]
@@ -1,10 +0,0 @@
#安装血量显示
#初始化
scoreboard objectives add Health health {"text": "cm","color": "yellow"}
scoreboard objectives modify Health rendertype hearts
scoreboard objectives setdisplay list Health
scoreboard objectives setdisplay belowName Health
#写入已安装的信息
data modify storage fz:survival installed.health set value 1b
#提示已安装
tellraw @a {"text": "[信息]血量显示已安装","color": "#5fff00"}
@@ -1,7 +0,0 @@
#卸载血量显示
#删除计分板
scoreboard objectives remove Health
#写入已卸载的信息
data modify storage fz:survival installed.health set value 0b
#提示已卸载
tellraw @a {"text": "[信息]血量显示已卸载","color": "#5fff00"}
-42
View File
@@ -1,42 +0,0 @@
#用于储存参数的记分板
scoreboard objectives add parameter dummy
#用于数学计算的记分板
scoreboard objectives add calculator dummy
scoreboard players set 200 calculator 200
scoreboard players set 100 calculator 100
scoreboard players set 10 calculator 10
scoreboard players set 1 calculator 1
#检测玩家退出游戏的记分板
scoreboard objectives add leaveGame minecraft.custom:minecraft.leave_game
#安装各功能
function fz:config/install
function fz:sweeper/install
function fz:scoreboards/install
function fz:health/install
function fz:login/logintips/install
function fz:carpet/carpet
#版本信息
data modify storage fz:survival version set from storage fz:survival newVersion
data modify storage fz:survival date set value "2020-7.21"
data modify storage fz:survival time set value "1:14"
#提示已安装
data modify storage fz:survival installed.datapack set value 1b
tellraw @a {"text": "[信息]安装完成!","color": "#5fff00"}
tellraw @a {"text": "[信息]启动完毕","color": "#5fff00"}
#info: #5fff00
#alert: #d7ff00
#warn: #ffd900
#error: #ff6100
#抖M名单 -
#钩直饵咸 -
#交 -
#铁头功 -
#群p抖M -
#全部木大 -
#总交 -
#全员头铁 -
#{"text": "cm","color": "yellow"} - {"text": "HP"}
-22
View File
@@ -1,22 +0,0 @@
#新版本号
data modify storage fz:survival newVersion set value [2,1,3,2]
execute if data storage fz:survival newVersion[3] run data modify storage fz:survival snapshot set value 1b
execute unless data storage fz:survival newVersion[3] run data remove storage fz:survival snapshot
##data remove storage fz:survival snapshot
#版本号识别
scoreboard objectives add fz.cache dummy
execute store result score version1 fz.cache run data get storage fz:survival version[1]
execute store result score version2 fz.cache run data get storage fz:survival version[2]
execute store result score version3 fz.cache run data get storage fz:survival version[3]
execute store result score newVersion1 fz.cache run data get storage fz:survival newVersion[1]
execute store result score newVersion2 fz.cache run data get storage fz:survival newVersion[2]
execute store result score newVersion3 fz.cache run data get storage fz:survival newVersion[3]
#版本号比较
execute if data storage fz:survival installed{datapack: 1b} unless score version1 fz.cache = newVersion1 fz.cache run function fz:start/update
execute if data storage fz:survival installed{datapack: 1b} if score version1 fz.cache = newVersion1 fz.cache run function fz:start/00xx
scoreboard objectives remove fz.cache
#如果未安装且未卸载则安装
execute unless data storage fz:survival installed{datapack: 1b} unless data storage fz:survival installed{datapack: 0b} run function fz:install
#输出版本信息
execute unless data storage fz:survival {snapshot:1b} unless data storage fz:survival installed{datapack: 0b} run tellraw @a [{"text": "[版本信息]FZ's Datapack-","color": "#ffd900"},{"nbt":"version[0]","storage":"fz:survival","color": "#ffd900"},{"text":".","color": "#ffd900"},{"nbt":"version[1]","storage":"fz:survival","color": "#ffd900"},{"text": ".","color": "#ffd900"},{"nbt":"version[2]","storage":"fz:survival","color": "#ffd900"}]
execute if data storage fz:survival {snapshot:1b} unless data storage fz:survival installed{datapack: 0b} run tellraw @a [{"text": "[版本信息]FZ's Datapack-","color": "#ffd900"},{"nbt":"version[0]","storage":"fz:survival","color": "#ffd900"},{"text":".","color": "#ffd900"},{"nbt":"version[1]","storage":"fz:survival","color": "#ffd900"},{"text": ".","color": "#ffd900"},{"nbt":"version[2]","storage":"fz:survival","color": "#ffd900"},{"text": ".","color": "#ffd900"},{"nbt":"version[3]","storage":"fz:survival","color": "#ffd900"},{"text": "-SNAPSHOT","color": "red"}]
@@ -0,0 +1,6 @@
# 调用者:fz:logger/uninstall
##
tellraw @a [{"nbt": "fz.level.info", "interpret": true, "storage": "fz:logger"}, {"text": "已删除日志配置!"}]
data remove storage fz:logger fz
@@ -0,0 +1,31 @@
##### 使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
##
execute store result score fz.logger.level fz.variable.integer run data get storage fz:logger fz.levels.current
##
data modify storage fz:installed fz.logger set value 1b
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已安装系统组件:日志"}]
@@ -0,0 +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": "日志等级设为调试"}]
@@ -0,0 +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": "日志等级设为详细"}]
@@ -0,0 +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": "日志等级设为一般信息"}]
+7
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 ..400 run tellraw @a [{"nbt": "fz.level.debug", "interpret": true, "storage": "fz:logger"}, {"text": "已加载系统组件:日志"}]
@@ -0,0 +1,10 @@
## #fz:logger/uninstall
##
data remove storage fz:installed fz.logger
##
execute if score fz.logger.level fz.variable.integer matches ..400 run tellraw @a [{"nbt": "fz.level.debug", "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": "将命令填入聊天框"}}}]
@@ -1,4 +0,0 @@
#安装登陆提示
data modify storage fz:survival installed.logintips set value 1b
#提示已安装
tellraw @a {"text": "[信息]登陆提示已安装","color": "#5fff00"}
@@ -1,4 +0,0 @@
#卸载登陆提示
data modify storage fz:survival installed.logintips set value 0b
#提示已卸载
tellraw @a {"text": "[信息]登陆提示已卸载","color": "#5fff00"}
@@ -1,17 +0,0 @@
execute if data storage fz:survival installed{logintips: 1b} run tellraw @s {"text": "[提醒]站在地面,抬头并按一下shift即可打开设置页面","color": "#66ffff"}
scoreboard players set @s leaveGame 0
advancement revoke @s only fz:scoreboards/activation
advancement revoke @s only fz:scoreboards/damagetaken
advancement revoke @s only fz:scoreboards/deathcounter
advancement revoke @s only fz:scoreboards/fishingcounter
advancement revoke @s only fz:scoreboards/killcounter
advancement revoke @s only fz:scoreboards/tradingcounter
advancement revoke @s only fz:scoreboards/digcounter/digtrigger
advancement revoke @s only fz:scoreboards/digcounter/toolsfix
advancement revoke @s only fz:scoreboards/digcounter/toolsfix2
advancement revoke @s only fz:config/sneak
advancement revoke @s only fz:config/unsneak
execute if data storage fz:survival installed{datapack: 1b} run advancement revoke @s from fz:leavegame
@@ -0,0 +1,5 @@
scoreboard objectives add fz.module.health health
scoreboard objectives modify fz.module.health rendertype hearts
##
data modify storage fz:installed fz.module.health set value 1b
@@ -0,0 +1,4 @@
execute unless data storage fz:config fz.module.health.display{below_name: 0b} run scoreboard objectives setdisplay belowName fz.module.health
execute if data storage fz:config fz.module.health.display{below_name: 0b} run scoreboard objectives setdisplay belowName
execute unless data storage fz:config fz.module.health.display{list: 0b} run scoreboard objectives setdisplay list fz.module.health
execute if data storage fz:config fz.module.health.display{list: 0b} run scoreboard objectives setdisplay list

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