使用教程
本教程介绍如何在 Modular Machinery CE 的 CraftTweaker 配方脚本中使用耐久消耗需求。
基本用法
在你的 .zs 配方脚本中,使用 addDurabilityInput() 方法为配方添加耐久消耗需求:
import mods.modularmachinery.RecipeBuilder;
// 创建一个配方
val recipe = RecipeBuilder.newBuilder("my_recipe", "my_machine", 100);
// 添加常规输入/输出
recipe.addItemInput(<minecraft:cobblestone> * 64);
recipe.addItemOutput(<minecraft:stone> * 64);
// 添加耐久消耗:消耗铁镐 10 点耐久
recipe.addDurabilityInput(<minecraft:iron_pickaxe>, 10);
recipe.build();
参数说明
addDurabilityInput(IItemStack item, int durability)
| 参数 | 类型 | 说明 |
|---|---|---|
item | IItemStack | 需要消耗耐久的物品(CraftTweaker 物品表达式) |
durability | int | 每次配方运行消耗的耐久值 |
工作机制
- 检查阶段:配方开始前,检查输入总线中是否有匹配的物品且剩余耐久 ≥ 要求的消耗值
- 消耗阶段:配方启动时,扣减物品的耐久值
- 损坏处理:如果耐久降至 0 或以下,物品自动损坏并从输入总线移除
提示
耐久消耗不会消耗物品本身(除非耐久用完),玩家只需定期更换工具即可。
使用示例
基础示例:消耗铁镐耐久
val recipe = RecipeBuilder.newBuilder("crush_ore", "crusher", 80);
recipe.addItemInput(<minecraft:iron_ore> * 1);
recipe.addItemOutput(<minecraft:iron_ingot> * 2);
recipe.addDurabilityInput(<minecraft:iron_pickaxe>, 5);
recipe.build();
消耗钻石剑耐久
val recipe = RecipeBuilder.newBuilder("cut_log", "sawmill", 60);
recipe.addItemInput(<minecraft:log> * 8);
recipe.addItemOutput(<minecraft:planks> * 48);
recipe.addDurabilityInput(<minecraft:diamond_sword>, 2);
recipe.build();
使用通配元数据
元数据设为 32767 时匹配任意子类型:
// 匹配任意损坏程度的铁镐
recipe.addDurabilityInput(<minecraft:iron_pickaxe:*>, 10);
JEI 显示
添加耐久消耗需求后,JEI 配方界面中:
- 对应工具物品会显示在输入区域
- 鼠标悬停时会额外显示 "耐久消耗: X" 的提示文字
注意事项
- 物品必须是可损坏的(有耐久条的物品),对不可损坏物品无效
- 消耗值不能超过物品的最大耐久值
- 输入总线中需要放置匹配的工具物品
- 配方修改器(RecipeModifier)可以影响实际消耗的耐久数值