fz-survival-datapack/DEVDOC.md
2022-07-19 20:53:53 +08:00

6.7 KiB
Raw Blame History

开发文档

指引

  • 函数,指数据包<命名空间>/functions目录下的.mcfunction文件
  • 标签,指数据包<命名空间>/tags目录下的.json文件
    • 覆盖标签并填入函数时,replacetrue
    {
        "replace": true,
        "values": ...
    }
    
    • 向标签中注册函数时,replacefalse
    {
        "replace": false,
        "values": ...
    }
    

基本要求

  • 接口逻辑和模块逻辑分离
  • 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用!
  • 函数调用尽量不要使用function命令,应改在标签中按顺序调用!

未来计划

  • 细化版本管理,提供不同版本之间的升级函数,由update_manager控制。务必仔细测试再发布,一旦升级无法降级!
  • playerdata相关功能

系统模块

频繁使用的计算单元

事件模块

日志模块

  • 仓库中提供了日志相关的代码片段,位于.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标签中注册上述函数
  3. 定义一个点击按钮时执行的函数,使用形如execute if score @s fz.module.config.trigger matches <min>..<max> run ...的指令判断玩家的触发器分数,并执行你的操作
  4. 如需在点击后重新显示一遍配置页面,请在上述函数中调用一次#fz:module/config/display标签,请不要将此标签直接注册到#fz:module/config/on_click标签中
  5. #fz:module/config/on_click标签中注册上述函数

其他接口

计分板模块

自定义计分板颜色

自定义计分板名称

  1. 定义一个设置计分板颜色、文本的函数,格式可以参考fz:module/scoreboard/display/set_text/general/*函数
  2. 覆盖#fz:module/scoreboard/display/set_text/<计分板名称>标签,填入上述函数

扩展自己的计分板

  1. 定义一个安装函数,参考fz:module/scoreboard/install函数
  2. #fz:module/scoreboard/install标签中注册该函数
  3. 按照“自定义计分板颜色”和“自定义计分板名称”中的操作,定义你的计分板颜色和名称
  4. 定义一个生成计分板运行时id的函数参考fz:module/scoreboard/display/register_id函数
  5. #fz:module/scoreboard/display/register_id标签中注册该函数
  6. 定义一个用来在轮播时显示你的计分板的函数,参考fz:module/scoreboard/display/carousel/set_display/*函数
  7. 定义一个用来判断在轮播时是否轮到你的计分板的函数,在判断后调用上一条中的函数,参考fz:module/scoreboard/display/carousel/try_display/*函数
  8. 将该函数注册到#fz:module/scoreboard/display/try_display标签中

自定义模块

注册安装、卸载、加载函数

注册设置页面