Skip to content

物品修复系统

物品修复系统允许装备在耐久归零后进入"禁用"状态而非消失,玩家可以使用指定材料修复装备恢复使用。

耐久度禁用机制

当物品耐久即将归零时:

  1. PlayerItemDamageEvent 被取消,物品不会消失。
  2. 物品 damage 设为 max_damage,标记为禁用状态。
  3. PDC 写入 emakiitem:disabled (BYTE=1)。
  4. 禁用状态下所有触发器不会触发,攻击等交互被阻止。

配置字段

repair 是物品定义文件中的顶层字段:

字段类型说明
enabledboolean是否启用修复系统。
materialslist修复材料列表。
disabled_displayobject物品禁用后的外观修改。
on_disabledlist物品变为禁用状态时执行的动作列表。
on_repairedlist物品修复成功后执行的动作列表。

materials 条目字段

字段类型说明
itemstring材料物品来源(ItemSource shorthand 格式,如 minecraft-diamond)。
amountinteger需要消耗的数量。
restorestring恢复耐久量。支持固定值(如 250)或百分比(如 50%,相对于 max_damage)。

disabled_display 字段

字段类型说明
name_prefixstring物品禁用时在名称前追加的前缀(MiniMessage 格式)。
lore_appendlist物品禁用时追加到 Lore 末尾的文本列表。

修复触发方式

玩家在背包中用光标持有修复材料,点击被禁用的物品即可修复。修复后:

  • damage 减少对应的 restore 值。
  • 如果 damage < max_damage,自动清除 PDC 禁用标记。
  • 触发 on_repaired 动作列表。

完整示例

yaml
id: legendary_sword
display_name: '<gold>传说之剑'
material: NETHERITE_SWORD
repair:
  enabled: true
  materials:
    - item: "minecraft-NETHERITE_INGOT"
      amount: 1
      restore: "50%"
    - item: "minecraft-DIAMOND"
      amount: 3
      restore: 200
  disabled_display:
    name_prefix: "<red>[已损坏] "
    lore_append:
      - ""
      - "<red>此装备已损坏,无法使用。"
      - "<gray>使用修复材料点击此物品进行修复。"
  on_disabled:
    - 'sendmessage text="<red>你的装备已损坏!"'
    - 'playsound sound=ENTITY_ITEM_BREAK volume=1 pitch=0.5'
  on_repaired:
    - 'sendmessage text="<green>装备修复成功!"'
    - 'playsound sound=BLOCK_ANVIL_USE volume=1 pitch=1.2'