fz-survival-datapack/DEVDOC.md

59 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1. 主要逻辑和模块逻辑分离
2. 细化版本管理,提供不同版本之间的升级函数,由`update_manager`控制。*务必仔细测试再发布,一旦升级无法降级!*
3. 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用!
## 系统模块
### 频繁使用的计算单元
- 位于`tags/functions/calculation`目录下的标签通常被用来进行简单重复的计算任务
### 事件
- 通常由**进度**触发,触发后调用同名的事件标签
- 将需要调用的函数填入`tags/functions/event/<事件名称>`标签即可
### 日志
- 仓库中提供了日志相关的代码片段,位于`.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": "${你的日志}"}`
## 功能模块
### 配置
- 标签`tags/functions/module/config/timeout`:注册超时时的操作
- 标签`tags/functions/module/config/reset_trigger`:用于重置玩家`@s`的触发器计分板
#### 按钮操作
1. 定义一个显示按钮时执行的函数,使用形如`tellraw @s {"text": "[按钮]", "clickEvent": {"action": "run_command", "value": "/trigger fz.module.config.trigger set <触发器分数>"}}`的指令定义按钮。**大多数情况下这里的触发器分数必须是独一无二的**
2. 在`tags/functions/module/config/display`标签中注册
3. 定义一个点击按钮时执行的函数,使用形如`execute if score @s fz.module.config.trigger matches <min>..<max> run ...`的指令判断玩家的触发器分数,并执行你的操作
4. 在`tags/functions/module/config/on_click`标签中注册上述函数
### 计分板
#### 自定义计分板颜色
#### 自定义计分板名称
#### 扩展自己的计分板