跳转至

服务端增强

Command Block Studio 的主要编辑器是客户端功能。服务端安装模组后,会通过 NeoForge 原生自定义载荷额外启用共享注释、最近编辑记录、工作区数据刷新、工作模式命令预览和运行测试。客户端与服务端版本号可以不同,实际能力按每个载荷通道分别协商。

工作模式命令预览

客户端使用“切换工作模式”按键(默认 Alt+Tab,可在控制设置中修改)开启工作模式并指向命令方块时,会请求当前目标的只读快照。服务端返回:

  • 命令文本。
  • 脉冲、连锁或循环模式。
  • 条件与自动执行状态。
  • 最近一条 Studio 历史中的修改时间和编辑者。

预览请求使用与编辑器相同的权限和 64 方块距离检查。服务端未提供该通道时,客户端只显示“接口不可用”,不会使用不兼容载荷。

运行测试

编辑器播放按钮会先通过原版命令方块保存数据包提交当前修改,再发送独立的运行测试请求。服务端确认玩家权限、距离和目标类型后,调用命令方块本身的执行路径触发一次,并把更新后的输出同步回编辑器。

运行测试必须由服务端执行。仅客户端安装时,编辑器仍可正常保存命令,但播放按钮会禁用。

共享命令方块注释

连接到支持该功能的服务端后,左侧活动栏会在工具入口后显示对话气泡形状的注释入口。编辑者可以记录命令方块用途、上下游关系或维护注意事项。

注释行为:

  • 与目标命令方块一起保存在方块持久化数据中。
  • 最大长度为 2048 个字符。
  • 空白注释会从方块数据中移除。
  • 保存后由服务端向当前编辑者回传规范化内容。
  • 不会参与命令执行,也不会修改命令文本。

最近编辑记录

服务端在原版命令方块保存数据包处理完成后记录修改,因此历史以服务端实际接受的状态为准。每个命令方块保存最近 10 个完整版本,注释页会显示修改时间、编辑者和命令摘要。

  • 每个版本包含命令文本、命令方块模式、条件模式、红石需求和输出追踪状态。
  • 连续保存完全相同的完整状态不会重复新增记录。
  • 记录与注释一样写入命令方块的 NeoForge 持久化数据。
  • 首次创建新版历史时会保留修改前的初始版本。
  • 客户端保存命令后会刷新当前注释页,无需关闭界面重开。
  • 选择旧版本并点击“回滚”后,旧快照会作为一个新版本提交;回滚前的当前版本不会被删除,行为类似 git revert
  • 旧版本模组留下的仅时间/编辑者记录仍会显示,但由于没有完整快照,不能回滚。

权限与距离

服务器接受注释读取、修改、工作区打开、命令预览或运行测试请求前会检查:

  • 玩家能够使用游戏管理员命令方块。
  • 玩家与目标方块距离不超过 64 方块。
  • 目标位置确实存在命令方块实体。

不满足条件时,服务器忽略请求,不会把任意区块数据暴露给客户端。

可选安装语义

Studio 的载荷全部通过 NeoForge 原生 optional() 模式注册,因此安装要求是双向非必须的。

服务端未安装、客户端已安装时:

  • 客户端仍可打开 Studio 并保存命令。
  • 注释入口不会显示。
  • 工作区切换使用原版交互回退。
  • 工作模式不会获得远程命令内容。
  • 运行测试按钮禁用。
  • 不会因为缺少载荷通道而断开连接。

服务端已安装、客户端未安装时:

  • 原版客户端仍可正常连接和使用原版命令方块界面。
  • 服务端不会向该客户端发送 Studio 自定义载荷。
  • 服务端仍会在处理原版命令方块保存数据包后记录最近编辑版本。
  • 共享注释保留在方块持久化数据中,但原版客户端没有查看或编辑入口。

因此服务器可以按团队是否需要共享维护信息、命令投影和运行测试决定是否安装,玩家也可以自行决定是否安装客户端编辑器。

不同版本共存

Studio 使用稳定的可选协议代次,并把注释、打开工作区、命令预览和运行测试注册为独立载荷。客户端在显示入口或发送请求前会检查服务端是否声明了对应载荷:

  • 双端版本不同不会仅因模组版本号不同而断开连接。
  • 两端都认识的旧接口继续可用。
  • 只有新端认识的接口会隐藏、禁用或显示不可用状态。
  • 载荷结构发生不兼容变化时应新增载荷 ID,而不是修改旧载荷的编码。

这保证了不同补丁版本的客户端与服务端仍能使用基础编辑器和双方共同支持的功能;命令预览与运行测试会自动降级。

备份与迁移

共享注释和最近编辑记录都属于命令方块的附加持久化数据。迁移世界或复制包含该方块的存档时,它们会随方块 NBT 一起迁移。使用原版命令直接重建方块时,不保证保留附加数据。