跳到主要内容

API 参考

本页面提供 EMC 简单的耐久消耗模组的技术细节和 API 参考。


ZenScript API

addDurabilityInput

为 Modular Machinery CE 配方添加耐久消耗需求。

RecipePrimer.addDurabilityInput(IItemStack item, int durability)

参数:

参数类型说明
itemIItemStack目标物品,必须是可损坏物品
durabilityint消耗的耐久值,必须 ≥ 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 扩展能力