API 参考
本页面提供 EMC 简单的耐久消耗模组的技术细节和 API 参考。
ZenScript API
addDurabilityInput
为 Modular Machinery CE 配方添加耐久消耗需求。
RecipePrimer.addDurabilityInput(IItemStack item, int durability)
参数:
| 参数 | 类型 | 说明 |
|---|---|---|
item | IItemStack | 目标物品,必须是可损坏物品 |
durability | int | 消耗的耐久值,必须 ≥ 1 |
返回值: RecipePrimer(支持链式调用)
示例:
// 链式调用
RecipeBuilder.newBuilder("example", "machine", 100)
.addItemInput(<minecraft:cobblestone> * 64)
.addItemOutput(<minecraft:stone> * 64)
.addDurabilityInput(<minecraft:iron_pickaxe>, 10)
.addEnergyPerTickInput(100)
.build();
物品匹配规则
| 条件 | 说明 |
|---|---|
| 物品 ID | 必须完全匹配 |
| 元数据 (metadata) | 精确匹配,或使用 32767(通配符 *)匹配任意 |
| 可损坏性 | 物品必须是可损坏的(isItemStackDamageable() == true) |
| 耐久检查 | 剩余耐久(最大耐久 - 当前损坏值)必须 ≥ 消耗值 |
内部类结构
RequirementDurability
继承自 ComponentRequirement<ItemStack, RequirementTypeItemDurability>,实现耐久消耗逻辑。
关键方法:
| 方法 | 说明 |
|---|---|
canStartCrafting() | 检查输入总线中是否有匹配物品且耐久足够 |
startCrafting() | 执行耐久消耗,耐久归零时销毁物品 |
finishCrafting() | 配方完成回调(始终返回成功) |
deepCopy() | 深拷贝需求实例 |
deepCopyModified() | 应用配方修改器后的深拷贝 |
JEIComponentDurability
JEI 集成组件,在配方界面显示耐久消耗信息。
- 在输入区域展示目标工具物品
- 悬停提示显示 "耐久消耗: X"
配方修改器兼容
当 Modular Machinery CE 的 RecipeModifier 应用于配方时:
- 耐久消耗值会经过
RecipeModifier.applyModifiers()处理 - 修改后的值会被
Math.max(1, ...)限制,确保至少消耗 1 点耐久
依赖关系
EMC 简单的耐久消耗
├── Modular Machinery CE (required-after)
│ └── 提供 ComponentRequirement 框架
└── CraftTweaker (required-after)
└── 提供 ZenScript 扩展能力