Skip to content

CoreLib 动作

EmakiItem 启用后会向 CoreLib 动作注册表追加主手物品更新、重绘、修复、耐久操作,以及原版 Data Component 新增、修改和删除段。

NOTE

本页只记录 EmakiItem 注册的段;CoreLib 自带通用段见 CoreLib 动作系统。当前段 ID 只使用下表中的规范名,不再提供历史别名入口。旧的 emakiitem_update 现在写作 item_update,其余同理;旧的冒号写法 emakiitem:component_add 现在写作 item_component_add

段 ID

段 ID用途目标要求参数
item_update强制按 EmakiItem 更新服务刷新主手物品。REQUIRED_ENTITY
item_rerender通过 CoreLib 物品装配服务重建主手物品展示。REQUIRED_ENTITY
item_repair_amount修复主手物品指定耐久损伤值。REQUIRED_ENTITYamount
item_damage增加主手物品指定损伤值。REQUIRED_ENTITYamount
item_set_damage设置主手物品当前损伤值。REQUIRED_ENTITYvalue
item_set_durability设置主手物品剩余耐久值。REQUIRED_ENTITYvalue
item_component_add新增一个 Data Component;目标已存在该组件时失败。OPTIONALcomponentvalue、可选 slot
item_component_modify修改一个已存在的 Data Component;目标缺少该组件时失败。OPTIONALcomponentvalue、可选 slot
item_component_remove删除一个 Data Component;目标缺少该组件时幂等跳过。OPTIONALcomponent、可选 slot
item_state_set设置一个类型化持久 item state。OPTIONALkeytypevalue、可选 slot
item_state_add对数值型持久 item state 增量。OPTIONALkeytypeamount、可选 slot
item_state_remove删除一个持久 item state。OPTIONALkeytype、可选 slot
item_state_refresh刷新目标物品并保留其持久 state。OPTIONAL可选 slot

门控 ID

门控 ID用途参数提供变量
item_state_read读取一个持久 item state 并写入管道变量。keytype、可选 slotitem_state.valueitem_state.existsitem_state.keyitem_state.type

参数

耐久与更新段

参数类型必填默认值说明
amountINTEGER是(item_repair_amountitem_damage修复或增加损伤的数量;负数按 0 处理。
valueINTEGER是(item_set_damageitem_set_durability目标损伤值或目标剩余耐久值。

item_updateitem_rerender 不读取参数。

Component 段

参数类型必填默认值说明
componentSTRINGData Component ID;省略命名空间时按 minecraft: 解析。
valueSTRING是(add / modifyJSON-ish component 值,支持 JSON 对象/数组、引号字符串、布尔值、数字、null 和普通字符串。结构化值格式错误时该段失败。
slotSTRING""指定玩家背包槽位;留空时按下面的顺序解析目标。

item_component_remove 只有 componentslot,没有 value

item state 段与门控

参数类型必填默认值说明
keySTRING是(除 item_state_refreshitem state 字段名。
typeSTRING是(除 item_state_refreshitem state 类型。
valueSTRING是(item_state_set要写入的字段值。
amountDOUBLE是(item_state_add数值增量。
slotSTRING""指定玩家背包槽位;槽位名与 Component 段一致。

item_state_refresh 只有可选 slotitem_state_read 是门控而不是段,参数为 keytype 与可选 slot

Component 目标解析

Component 段按以下顺序解析要改的物品:

  1. 参数中显式给出的 slot
  2. 管道物品(由 create_item 等段发布的 CoreActionKeys.ITEM)。
  3. 目标玩家的主手。

显式 slot 优先于管道物品:写出槽位是明确指令,不是回退。管道物品会被原地修改,因为后续段读的是同一个引用,替换成新对象会让它们看到未修改的副本。

三个 Component 段的目标要求是 OPTIONAL 而不是 REQUIRED_ENTITY:只要管道里有物品,没有玩家目标也能改。

支持的槽位

槽位名沿用 CoreLib 的统一槽位表:

  • 主手:mainhandmain_handhand
  • 副手:offhandoff_hand
  • 护甲:helmetchestplate / chestleggings / legsboots
  • 背包索引:035,也可写成 slot_12hotbar_0

示例

yaml
actions:
  - 'self | item_update'
  - 'self | item_repair_amount amount=25'
  - 'self | item_damage amount=10'
  - 'self | item_set_durability value=100'
  - 'self | item_component_add component=max_stack_size value=16'
  - 'self | item_component_modify component=enchantment_glint_override value=true slot=mainhand'
  - 'self | item_component_remove component=custom_name slot=offhand'
  # 改管道物品而不是背包里的物品
  - 'self | create_item item_source=minecraft-diamond_sword | item_component_add component=max_stack_size value=1 | send_item'

带空格或结构化内容的 value 要加引号:

text
self | item_component_modify component=custom_name value='<gold>锻造之刃</gold>'
self | item_component_add component=custom_data value='{"emaki":{"source":"forge"}}'

使用提示

  • 更新与耐久段作用于目标玩家主手物品,主手为空时跳过;成功时输出 changeddamagemax_damage
  • item_set_durability 在物品没有最大耐久时不做修改;损伤值会被钳制到 [0, max_damage],降到上限以下时自动清除修复禁用标记。
  • item_component_add 遇到已存在的组件、item_component_modify 遇到缺失的组件都会以 REJECTED 失败而不是静默纠正,这两种情况都是配置写错了。item_component_remove 遇到缺失组件则按跳过处理。
  • 组件修改通过 CoreLib ConfiguredItemDefinition patch 应用,会保留第三方物品来源身份、PDC 和未涉及的组件。
  • Component 段成功时输出 componenttargetchangedexisted_beforetarget 是槽位名或 pipeline:item
  • 目标物品为空气时跳过;三种解析路径都没找到物品时该段失败。