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:
0b00specific-damage, nbt insensitive0b01wildcard-damage, nbt insensitive0b10specific-damage, nbt sensitive0b11wildcard-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