da7af9fc83
- 将命名空间改为“fzsd” - 完善交互器 - 添加管理员命令(/function admin.fzsd:<...>) - 添加启动函数,用于自动升级等功能 - 添加重装、深度安装、深度卸载、深度重装函数
7.0 KiB
7.0 KiB
开发文档
指引
函数
,指数据包<命名空间>/functions
目录下的.mcfunction
文件标签
,指数据包<命名空间>/tags
目录下的.json
文件覆盖标签并填入函数
时,replace
为true
{ "replace": true, "values": ... }
向标签中注册函数
时,replace
为false
{ "replace": false, "values": ... }
基本要求
- 接口逻辑和模块逻辑分离
- 函数由两个以上的函数调用,或由不同包下的函数调用,或需要作为接口开放给下游数据包时,应改用标签调用!
- 函数调用尽量不要使用
function
命令,应改在标签中按顺序调用!
未来计划
- 细化版本管理,提供不同版本之间的升级函数,由
update_manager
控制。务必仔细测试再发布,一旦升级无法降级! - playerdata相关功能
系统模块
频繁使用的计算单元
#fzsd:calculation/*
标签通常被用来进行简单重复的计算任务
事件模块
- 通常由进度触发,触发后调用同名的事件标签
- 在
#fzsd:game_event/(<...>/)on_<事件>
标签中注册触发时需要调用的函数即可
日志模块
- 仓库中提供了日志相关的代码片段,位于
.vscode/settings.json
- 暂时没有找到方法在服务端控制台打印日志,但会被记录在客户端
详细 Fine
- 等级:300
- 使用方法:
execute if score fzsd.logger.level fzsd.variable.integer matches ..300 run tellraw @a [{"nbt": "fzsd.level.fine", "interpret": true, "storage": "fzsd:logger"}, {"text": "你的日志"}
调试 Debug
- 等级:400
- 使用方法:
execute if score fzsd.logger.level fzsd.variable.integer matches ..400 run tellraw @a [{"nbt": "fzsd.level.debug", "interpret": true, "storage": "fzsd:logger"}, {"text": "你的日志"}
信息 Info
- 等级:500
- 使用方法:
execute if score fzsd.logger.level fzsd.variable.integer matches ..500 run tellraw @a [{"nbt": "fzsd.level.info", "interpret": true, "storage": "fzsd:logger"}, {"text": "你的日志"}
提醒 Alert
- 等级:600
- 使用方法:
execute if score fzsd.logger.level fzsd.variable.integer matches ..600 run tellraw @a [{"nbt": "fzsd.level.alert", "interpret": true, "storage": "fzsd:logger"}, {"text": "你的日志"}
意外 Exception
暂不提供
错误 Error
- 等级:800
- 使用方法:
execute if score fzsd.logger.level fzsd.variable.integer matches ..800 run tellraw @a [{"nbt": "fzsd.level.error", "interpret": true, "storage": "fzsd:logger"}, {"text": "你的日志"}
功能模块
交互器模块
按钮操作
- 定义一个显示按钮时执行的函数,使用形如
tellraw @s {"text": "[按钮]", "clickEvent": {"action": "run_command", "value": "/trigger fzsd.module.config.trigger set <触发器分数>"}}
的指令定义按钮。- 触发器分数为正数会重新向玩家发送交互按钮,如不想重新发送,请使用负数
- 大多数情况下这里的触发器分数必须是独一无二的
- 建议使用
>10000
的随机数作为自定义按钮的触发器分数
- 在
#fzsd:module/config/display
标签中注册上述函数 - 定义一个点击按钮时执行的函数,使用形如
execute if score @s fzsd.module.config.trigger matches <min>..<max> run ...
的指令判断玩家的触发器分数,并执行你的操作 - 如需在点击后重新显示一遍配置页面,请在上述函数中调用一次
#fzsd:module/config/display
标签,请不要将此标签直接注册到#fzsd:module/config/on_click
标签中 - 在
#fzsd:module/config/on_click
标签中注册上述函数
其他接口
- 标签
#fzsd:module/config/timeout
:超时时的操作 - 标签
#fzsd:module/config/reset_trigger
:重置玩家@s
的触发器计分板
计分板模块
自定义计分板颜色
- 数据包提供了所有计分板的全部16色命名函数
- 使用方法:覆盖
#fzsd:module/scoreboard/display/set_text/<计分板名称>
标签,填入fzsd:module/scoreboard/display/set_text/<计分板名称>/<颜色名称>
函数
自定义计分板名称
- 定义一个设置计分板颜色、文本的函数,格式可以参考
fzsd:module/scoreboard/display/set_text/general/*
函数 - 覆盖
#fzsd:module/scoreboard/display/set_text/<计分板名称>
标签,填入上述函数
扩展自己的计分板
- 定义一个安装函数,参考
fzsd:module/scoreboard/install
函数 - 在
#fzsd:module/scoreboard/install
标签中注册该函数 - 按照“自定义计分板颜色”和“自定义计分板名称”中的操作,定义你的计分板颜色和名称
- 定义一个生成计分板运行时id的函数,参考
fzsd:module/scoreboard/display/register_id
函数 - 在
#fzsd:module/scoreboard/display/register_id
标签中注册该函数 - 定义一个用来在轮播时显示你的计分板的函数,参考
fzsd:module/scoreboard/display/carousel/set_display/*
函数 - 定义一个用来判断在轮播时是否轮到你的计分板的函数,在判断后调用上一条中的函数,参考
fzsd:module/scoreboard/display/carousel/try_display/*
函数 - 将该函数注册到
#fzsd:module/scoreboard/display/try_display
标签中
自定义模块
注册安装、卸载、加载函数
- 在下列标签中注册你的安装、卸载、加载函数: