From 5a2255a9f8de3c9abe1ab492b11e96edc65ceec3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=B6=E7=9A=93?= <1214946206@qq.com> Date: Mon, 11 Jul 2022 18:28:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BC=80=E5=8F=91=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEVDOC.md | 85 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 53 insertions(+), 32 deletions(-) diff --git a/DEVDOC.md b/DEVDOC.md index c372a56..c0ddc1b 100644 --- a/DEVDOC.md +++ b/DEVDOC.md @@ -4,44 +4,45 @@ ## 指引 - `函数`,指数据包`<命名空间>/functions`目录下的`.mcfunction`文件 - `标签`,指数据包`<命名空间>/tags`目录下的`.json`文件 - - `覆盖标签并填入函数`时,`replace`为`true` - ``` - { - "replace": true, - "values": ... - } - ``` - - `向标签中注册函数`时,`replace`为`false` - ``` - { - "replace": false, - "values": ... - } - ``` + - `覆盖标签并填入函数`时,`replace`为`true` + ``` + { + "replace": true, + "values": ... + } + ``` + - `向标签中注册函数`时,`replace`为`false` + ``` + { + "replace": false, + "values": ... + } + ``` ## 基本要求 - -- 主要逻辑和模块逻辑分离 +- 接口逻辑和模块逻辑分离 - 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用! +- 函数调用尽量不要使用`function`命令,应改在标签中按顺序调用! ## 未来计划 - 细化版本管理,提供不同版本之间的升级函数,由`update_manager`控制。*务必仔细测试再发布,一旦升级无法降级!* +- playerdata相关功能 ## 系统模块 ### 频繁使用的计算单元 -- 位于`tags/functions/calculation`目录下的标签通常被用来进行简单重复的计算任务 +- `#fz:calculation/*`标签通常被用来进行简单重复的计算任务 ### 事件模块 - 通常由**进度**触发,触发后调用同名的事件标签 -- 在`tags/functions/event/<事件名称>`标签中注册触发时需要调用的函数即可 +- 在`#fz:game_event/<事件>(/...)`标签中注册触发时需要调用的函数即可 ### 日志模块 - 仓库中提供了日志相关的代码片段,位于`.vscode/settings.json` -- 暂时没有找到方法在控制台记录日志 +- 暂时没有找到方法在服务端控制台打印日志,但会被记录在客户端 #### 详细 Fine - 等级:300 @@ -70,31 +71,51 @@ ## 功能模块 ### 配置模块 -- 标签`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`标签中注册上述函数 +4. 在[`#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色命名函数 -- 使用方法:**覆盖**`tags/functions/module/scoreboard/display/set_text/<计分板名称>`标签,填入`functions/module/scoreboard/display/set_text/<计分板名称>/<颜色名称>`函数 +- 使用方法:**覆盖**`#fz:module/scoreboard/display/set_text/<计分板名称>`标签,填入`fz:module/scoreboard/display/set_text/<计分板名称>/<颜色名称>`函数 #### 自定义计分板名称 -1. 定义一个设置计分板颜色、文本的函数,格式可以参考`functions/module/scoreboard/display/set_text/general/*`函数 -2. **覆盖**`tags/functions/module/scoreboard/display/set_text/<计分板名称>`标签,填入上述函数 +1. 定义一个设置计分板颜色、文本的函数,格式可以参考[`fz:module/scoreboard/display/set_text/general/*`](data/fz/functions/module/scoreboard/display/set_text/general/aqua.mcfunction)函数 +2. **覆盖**`#fz:module/scoreboard/display/set_text/<计分板名称>`标签,填入上述函数 #### 扩展自己的计分板 -1. 定义一个创建计分板的函数,参考`functions/module/scoreboard/display/create`函数 -2. 在`tags/functions/module/scoreboard/display/create`标签中注册该函数 +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的函数,参考`functions/module/scoreboard/display/register_id`函数 -5. 在`tags/functions/module/scoreboard/display/register_id`标签中注册该函数 -6. 定义一个用来在轮播时显示你的计分板的函数,参考`functions/module/scoreboard/display/carousel/set_display/*`函数 -7. 定义一个用来判断在轮播时是否轮到你的计分板的函数,在判断后调用上一条中的函数,参考`functions/module/scoreboard/display/carousel/try_display/*`函数 -8. 将该函数注册到`tags/functions/module/scoreboard/display/try_display`标签中 +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) + +#### 注册设置页面 + +1. 定义显示函数,参考: + - [`fz:module/scoreboard/config/display/head`](data/fz/functions/module/scoreboard/config/display/head.mcfunction) + - [`fz:module/scoreboard/config/display/buttons`](data/fz/functions/module/scoreboard/config/display/buttons.mcfunction) +2. 向[`#fz:module/config/display`](data/fz/tags/functions/module/config/display.json)标签中注册上述函数 +3. 定义点击按钮时运行的函数,参考[`fz:module/scoreboard/config/on_click`](data/fz/functions/module/scoreboard/config/on_click.mcfunction) +4. 向[`#fz:module/config/on_click`](data/fz/tags/functions/module/config/on_click.json)标签中注册上述函数