合成组件(Crafting Ingredients)
Link to 合成组件crafting-ingredients
CraftTweaker 引入 IIngredient 作为组件接口。
继承此超接口的接口包括:
选择哪一个
Link to 选择哪一个
最好总是使用 IIngredient。 为什么?
因为许多用户期望所有的接受 IItemStack 的配方也接受 IOreDictEntry,这就是原因。
例如 IngredientConditions,一些方法返回 IIngredient(如 <mincraft:grass>.onlyDamaged()
或 iron_ingot | gold_ingot
)。
如何从组件中获取物品/流体?
Link to 如何从组件中获取物品流体
有许多方式可以检索你想要的类型:
你可以使用 ingredient.getItems()
来获取所有匹配的物品为 List<IItemStack>
。 但是,这意味着,如果物品有任何条件,这些条件就会丢失! 对于液体,你可以使用 ingredients.getFluids()
来获取所有匹配的液体为 List<ILiquidStack>
。 但是,这意味着,如果液体有任何条件,这些条件就会丢失!
如何获得实际的 ItemStack/FluidStack?
Link to 如何获得实际的-itemstackfluidstack
依赖:你可以使用CraftTweakerMC。
另外,如果你依赖 MTLib,你可以使用它的 input helper。
如果你需要依赖 ItemConditions,你始终可以使用 ingredient.matches(IItemStack other)
方法。