# 开发文档 ## 基本要求 - 主要逻辑和模块逻辑分离 - 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用! ## 未来计划 - 细化版本管理,提供不同版本之间的升级函数,由`update_manager`控制。*务必仔细测试再发布,一旦升级无法降级!* ## 系统模块 ### 频繁使用的计算单元 - 位于`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 .. run ...`的指令判断玩家的触发器分数,并执行你的操作 4. 在`tags/functions/module/config/on_click`标签中注册上述函数 ### 计分板模块 #### 自定义计分板颜色 - 数据包提供了所有计分板的全部16色命名函数 - 使用方法:***覆盖***`tags/functions/module/scoreboard/` #### 自定义计分板名称 #### 扩展自己的计分板