跳到主要内容

🔄 物品更新器

简介

在配置物品时,我们可能会忽略某些细节,需要调整玩家现有的物品数据。这时物品更新器就派上了用场——它能更新服务器上存量物品的数据。

由于更新器的工作方式(在触发特定事件时更新物品),会带来一些性能开销。你可以在 config.yml 中配置哪些事件应该触发物品更新器。默认情况下,所有触发器都是禁用的,你可以根据需要启用它们。

item:
update-triggers:
click-in-inventory: false # 此选项对于创造模式物品栏无效
drop: false
pick-up: false
...更多内容
提示

如果你只需要更新物品的视觉元素,例如自定义模型数据(custom-model-data)、物品模型(item-model)、物品提示框中的描述信息(lore)或物品名称(name),建议使用 client-bound-data 而不是物品更新器。

要配置物品更新器,只需按照以下格式添加一个新的 updater 部分。默认情况下,物品的版本号为 0,插件会尝试将它们更新到最新版本。

在以下示例中:

  • 若物品版本为 0,将同时执行更新逻辑 1 和 2
  • 若物品版本为 1,则仅应用逻辑 2
items:
default:my_sword:
material: wooden_sword
custom-model-data: 1000
updater:
1:
type: apply_data
data:
item-name: 首次更新
# 你可以通过列表格式同时应用多个更新器。
2:
- type: apply_data
data:
lore:
- "再次更新"
- type: transmute
material: wooden_sword

更新器类型

apply_data(应用数据)

应用任何 CraftEngine 支持的物品数据

type: apply_data
data:
item-name: 首次更新

transmute(材质置换)

将物品的基础材质替换为另一种物品的材质,同时保留其所有组件或NBT数据。

type: transmute
material: wooden_sword

reset(重置)

立即将物品更新至最新状态,同时保留指定的组件或NBT标签

type: reset
# 1.20.5+
keep-components:
- minecraft:enchantments
# 旧版本
keep-tags:
- Enchantments