Item Condition (Craft / Drop / Pickup / Smelt)

基本信息

属性 值
父类 ItemConditionHandler(抽象)
子类 ID item.craft, item.drop, item.pickup, item.smelt
事件订阅 混合(ItemTossEvent 走 Forge EVENT_BUS,其它走 FML bus())

共享配置字段

字段 类型 默认 含义
item 字符串 必填 注册名 modid:itemname
meta int OreDictionary.WILDCARD_VALUE damage 值;范围 [0, 32767]
nbt SNBT 字符串 null NBT 过滤;非空时强制走 nbt-sensitive map

内部维护四张 ItemStackMap:

  • 0b00 specific-damage, nbt insensitive
  • 0b01 wildcard-damage, nbt insensitive
  • 0b10 specific-damage, nbt sensitive
  • 0b11 wildcard-damage, nbt sensitive

子类差异

子类 ID 监听事件 事件总线 触发对象 触发语义
item.craft cpw.mods.fml.common.gameevent.PlayerEvent$ItemCraftedEvent FML bus() event.crafting 玩家在工作台、合成输出或合成网格完成一份物品时触发
item.pickup PlayerEvent$ItemPickupEvent FML bus() event.pickedUp.getEntityItem() 玩家拾起地面的物品时触发
item.smelt PlayerEvent$ItemSmeltedEvent FML bus() event.smelting 玩家在熔炉冶炼获得产物时触发
item.drop net.minecraftforge.event.entity.item.ItemTossEvent Forge EVENT_BUS event.entityItem.getEntityItem() 玩家按 Q 丢出物品时触发(含死亡掉落)

JSON 示例

首次合成钻石镐:

{
  "id": "first_diamond_pickaxe",
  "x": 2, "y": 2,
  "icon": { "registryName": "minecraft:diamond_pickaxe" },
  "condition": {
    "type": "item.craft",
    "item": "minecraft:diamond_pickaxe",
    "meta": 0
  }
}

相关条目

源码

src/main/java/glowredman/amazingtrophies/condition/ItemConditionHandler.java