更好的附魔命令

更好的附魔命令,在使用 /enchants 和 /give 时增强你的创意玩法。

装备

Better Enchant Commands

通过扩展附魔等级、简化语法、预设以及经过审计的确认/撤销工作流,覆盖 /enchant、/give 及相关命令,适用于 Minecraft 1.21.x。

原版 /enchant 拒绝非整数等级,并在附魔自身规定的上限处封顶。原版 /give 需要为附魔物品编写冗长的组件语法。Better Enchant Commands 替换了这两个核心命令,并新增了若干工作流辅助功能,全部要求 op 等级 2,并由结构化审计日志提供支持。

特性

/enchant —— 超越原版限制的附魔

原版 /enchant 的直接替代品。可将任意附魔应用到玩家手持物品上,等级为 1–255。

  • /enchant @s minecraft:sharpness 255
  • /enchant aGamingGod minecraft:protection 10
  • /enchant list

/enchant list 会打印执行命令的玩家手持物品上的附魔。

/give —— 内联附魔语法

原版 /give 的直接替代品。不带附魔使用时,行为与原版完全一致。追加可选的 enchantments: 块即可立即获得附魔物品:

  • /give @s minecraft:netherite_chestplate enchantments:protection:10,unbreaking:3
  • /give @s minecraft:diamond_sword 1 enchantments:sharpness:255,fire_aspect:5,looting:10

minecraft: 命名空间是可选的 —— sharpness:255 即可使用。无需 JSON、无需方括号、无需引号。Tab 补全会将候选过滤为与所选物品实际兼容的附魔。

/enchantpreset —— 保存并重放附魔组合

  • /enchantpreset save <name> —— 保存当前手持物品的附魔
  • /enchantpreset apply <name> <targets>
  • /enchantpreset delete <name>
  • /enchantpreset list

名称经过校验(1–64 个字符,A–Z、a–z、0–9、_、-)。被跳过的空手目标会在输出中报告。

/unenchant、/enchantinfo、/enchantlist

清理与检查辅助命令:

  • /unenchant <targets> —— 移除所有附魔
  • /unenchant <targets> <enchantment> —— 移除单个附魔
  • /enchantinfo —— 查看手持物品的完整详情
  • /enchantlist [filter] —— 附魔注册表列表,可选过滤

/repair —— 一条命令修复装备

发放任意物品的副本,并预先应用经验修补(以及在兼容时应用耐久 III)。反射式兼容性查找按会话缓存,因此重复调用很快。

/enchants —— 批量操作、撤销与配置

  • /enchants undo —— 恢复你上一次的批量修改
  • /enchants confirm <token> —— 完成需要确认的批量操作
  • /enchants status
  • /enchants allow_all_enchantments true|false

影响目标数超过 confirmation_threshold 的操作需要短期令牌 —— 再也不会发生意外“给整个服务器附魔”的事故。撤销是按操作者限制的有界双端队列(默认 8 条)。

设计亮点

  • 故障安全校验。 附魔字符串会先解析为完全校验过的 (Identifier, level) 对,然后才会触碰任何物品。解析失败时物品保持不变。
  • 结构化审计日志。 每个特权操作都会发送到专用的 SLF4J [AUDIT] logger,包含经过清理的操作者、目标和标签字段 —— 可安全接入日志聚合管道。
  • 日志注入防护。 任何来自玩家输入的字符串在格式化进日志行之前都会移除 ASCII 控制字符,因此精心构造的计分板名称无法伪造或破坏审计条目。
  • 有界批量修改。 影响目标数超过 confirmation_threshold 的命令需要基于令牌的确认往返。
  • 反射式兼容层。 权限检查、注册表查找和组件读取通过按类缓存的方法形态启发式解析,因此同一个 jar 可在所有 1.21.x 次要版本上运行而无需重新编译。
  • 零 mixin。 纯 Fabric API 命令注册 —— 与其他模组最大程度兼容。
  • 仅服务端。 客户端无需安装该模组。

为什么选择 Better Enchant Commands?

  • 直接替代。 直接覆盖原版 /enchant 和 /give;核心工作流无需记忆新命令。
  • 完全向后兼容。 /give @s diamond 64 仍与原版完全一致。
  • 轻量。 约 105 KB,仅服务端,无 tick 钩子,无 mixin。
  • 防崩溃。 每条代码路径都有防御性包装;畸形输入会给出有帮助的错误消息,绝不会导致服务器崩溃。
  • 跨版本。 基于 1.21 基础构建 —— 可在每个 1.21.x 子版本上运行而无需重新编译。
  • 预设驱动工作流。 一次保存标准配装;用一条命令将其应用到任意数量的玩家。
  • 审计追踪。 操作者可为其附魔了什么、给谁附魔以及何时附魔负责。

要求

  • Minecraft 1.21.x(任意子版本)
  • Fabric Loader 0.16.0+
  • Fabric API

权限

所有命令需要 操作者等级 2,与原版 /enchant 和 /give 一致。

技术说明

Better Enchant Commands 直接写入物品堆叠上的 DataComponents.ENCHANTMENTS 组件,绕过原版的等级校验但执行自己的边界(1–255)。附魔的存储方式与原版附魔完全一致 —— 没有自定义数据,也不会与其他读取你物品的模组产生兼容性问题。