If you need to reference this type directly, like when casting an Array, or as a parameter, you will need to import it. Simply add the import at
the top of the file.
import crafttweaker . api.ingredient . IIngredient;
The CraftTweaker Ingredient class which is used to power our recipes and ItemStack matching. IIngredient
implements the following interfaces:
CommandStringDisplayable
Does the ingredient contain the given ingredient? // ((ingredient as IIngredient) in IIngredient) as bool
myIIngredient in myIIngredient
Return Type:
bool
Use this in contexts where machines accept more than one item to state that fact. // (IIngredient * (amount as int)) as IIngredientWithAmount
Return Type:
IIngredientWithAmount
// (IIngredient | (other as IIngredient)) as IIngredientList
myIIngredient | myIIngredient
Return Type:
IIngredientList
Adds an AttributeModifier to this IIngredient. Attributes added with this method appear on all ItemStacks that match this IIngredient, regardless of how or when the ItemStack was made, if you want to have the attribute on a single specific ItemStack (such as a specific Diamond Sword made in a recipe), then you should use IItemStack#withAttributeModifier // IIngredient.addGlobalAttributeModifier(attribute as Attribute, name as string, value as double, operation as Operation, slotTypes as EquipmentSlot[]);
myIIngredient . addGlobalAttributeModifier( < attribute : minecraft:generic.attack_damage > , "Extra Power" , 10 , AttributeOperation . ADDITION, [ < constant : minecraft:equipmentslot:chest > ]);
Parameters:
name: string
Type: string
- The name of the modifier.
value: double
Type: double
- The value of the modifier.
Adds an AttributeModifier to this IIngredient using a specific UUID. The UUID can be used to override an existing attribute on an ItemStack with this new modifier. You can use /ct hand attributes
to get the UUID of the attributes on an ItemStack. Attributes added with this method appear on all ItemStacks that match this IIngredient, regardless of how or when the ItemStack was made, if you want to have the attribute on a single specific ItemStack (such as a specific Diamond Sword made in a recipe), then you should use IItemStack#withAttributeModifier // IIngredient.addGlobalAttributeModifier(attribute as Attribute, uuid as string, name as string, value as double, operation as Operation, slotTypes as EquipmentSlot[]);
myIIngredient . addGlobalAttributeModifier( < attribute : minecraft:generic.attack_damage > , "8c1b5535-9f79-448b-87ae-52d81480aaa3" , "Extra Power" , 10 , AttributeOperation . ADDITION, [ < constant : minecraft:equipmentslot:chest > ]);
Parameters:
uuid: string
Type: string
- The unique identifier of the modifier to replace.
name: string
Type: string
- The name of the modifier.
value: double
Type: double
- The value of the modifier.
Adds an AttributeModifier to this IIngredient using a specific UUID. The UUID can be used to override an existing attribute on an ItemStack with this new modifier. You can use /ct hand attributes
to get the UUID of the attributes on an ItemStack. Attributes added with this method appear on all ItemStacks that match this IIngredient, regardless of how or when the ItemStack was made, if you want to have the attribute on a single specific ItemStack (such as a specific Diamond Sword made in a recipe), then you should use IItemStack#withAttributeModifier // IIngredient.addGlobalAttributeModifier(attribute as Attribute, uuid as UUID, name as string, value as double, operation as Operation, slotTypes as EquipmentSlot[]);
myIIngredient . addGlobalAttributeModifier( < attribute : minecraft:generic.attack_damage > , IItemStack . BASE_ATTACK_DAMAGE_UUID, "Extra Power" , 10 , AttributeOperation . ADDITION, [ < constant : minecraft:equipmentslot:chest > ]);
Parameters:
uuid: UUID
Type: UUID
- The unique identifier of the modifier to replace.
name: string
Type: string
- The name of the modifier.
value: double
Type: double
- The value of the modifier.
// IIngredient.addShiftTooltip(content as Component, showMessage as Component = null);
myIIngredient . addShiftTooltip(myComponent, myComponent);
// IIngredient.addTooltip(content as Component);
myIIngredient . addTooltip(myComponent);
Used implicitly when a machine can accept more than one item but you only provide one. // IIngredient.asIIngredientWithAmount() as IIngredientWithAmount;
myIIngredient . asIIngredientWithAmount();
Return Type:
IIngredientWithAmount
Used implicitly when a machine can accept more than one item but you only provide one. // IIngredient as IIngredientWithAmount
myIIngredient as IIngredientWithAmount
Return Type:
IIngredientWithAmount
// IIngredient as MapData
Return Type:
MapData
Create a Vanilla ingredient matching this one. // IIngredient.asVanillaIngredient() as Ingredient;
myIIngredient . asVanillaIngredient();
Return Type:
Ingredient
Create a Vanilla ingredient matching this one. // IIngredient as Ingredient
myIIngredient as Ingredient
Return Type:
Ingredient
Sets the burn time of this ingredient, for use in the furnace and other machines // IIngredient.burnTime = (time as int);
myIIngredient . burnTime = myInt;
Parameters:
time: int
Type: int
- the new burn time
Sets the burn time of this ingredient, for use in the furnace and other machines // IIngredient.burnTime(time as int);
myIIngredient . burnTime( 500 );
Parameters:
time: int
Type: int
- the new burn time
// IIngredient.clearTooltip(leaveName as bool = false);
myIIngredient . clearTooltip(myBool);
Parameters:
leaveName: bool
(optional) Type: bool
Default Value: false
Returns the BEP to get this stack // IIngredient.commandString as string
myIIngredient . commandString
Return Type:
string
Does the ingredient contain the given ingredient? // IIngredient.contains(ingredient as IIngredient) as bool;
myIIngredient . contains(( < item : minecraft:iron_ingot > | < item : minecraft:gold_ingot > ));
Return Type:
bool
Checks if this ingredient is empty. // IIngredient.empty as bool
Return Type:
bool
Checks if this ingredient is empty. Returns : true if empty, false otherwise
// IIngredient.empty() as bool;
Return Type:
bool
When this ingredient stack is crafted, what will remain in the grid? Does not check if the stack matches though! Used e.g. in Crafting Table recipes. // IIngredient.getRemainingItem(stack as IItemStack) as IItemStack;
myIIngredient . getRemainingItem( < item : minecraft:iron_ingot > );
Return Type:
IItemStack
// IIngredient.items as IItemStack[]
Return Type:
IItemStack []
Does the given stack match the ingredient? // IIngredient.matches(stack as IItemStack) as bool;
myIIngredient . matches( < item : minecraft:iron_ingot > );
Return Type:
bool
Does the given stack match the ingredient? // IIngredient.matches(stack as IItemStack, ignoreDamage as bool) as bool;
myIIngredient . matches( < item : minecraft:iron_ingot > , myBool);
Parameters:
ignoreDamage: bool
Type: bool
- Should damage be checked?
Return Type:
bool
// IIngredient.modifyShiftTooltip(shiftedFunction as ITooltipFunction, unshiftedFunction as ITooltipFunction = null);
myIIngredient . modifyShiftTooltip(myITooltipFunction, myITooltipFunction);
// IIngredient.modifyTooltip(function as ITooltipFunction);
myIIngredient . modifyTooltip(myITooltipFunction);
Use this in contexts where machines accept more than one item to state that fact. // IIngredient.mul(amount as int) as IIngredientWithAmount;
myIIngredient . mul(myInt);
Return Type:
IIngredientWithAmount
Use this if you already have the condition from another ingredient // IIngredient.only(condition as IIngredientCondition<IIngredient>) as IIngredientConditioned<IIngredient>;
myIIngredient . only(myIIngredientCondition);
Return Type:
IngredientConditioned <IIngredient >
// IIngredient.onlyDamagedAtLeast(minDamage as int) as IIngredientConditioned<IIngredient>;
myIIngredient . onlyDamagedAtLeast(myInt);
Return Type:
IngredientConditioned <IIngredient >
// IIngredient.onlyDamagedAtMost(maxDamage as int) as IIngredientConditioned<IIngredient>;
myIIngredient . onlyDamagedAtMost(myInt);
Return Type:
IngredientConditioned <IIngredient >
// IIngredient.onlyIf(uid as string, function as function(t as IItemStack) as bool = null) as IIngredientConditioned<IIngredient>;
myIIngredient . onlyIf(myString, myPredicate);
Parameters:
uid: string
Type: string
function: function(t as IItemStack ) as bool
(optional) Type: function(t as IItemStack ) as bool
Default Value: null
Return Type:
IngredientConditioned <IIngredient >
Removes all AttributeModifiers that use the given Attribute from this IIngredient. Attributes removed with this method are removed from ItemStacks that match this IIngredient, regardless of how or when the ItemStack was made, if you want to remove the attribute on a single specific ItemStack (such as a specific Diamond Sword made in a recipe), then you should use IItemStack#withoutAttribute. This method can only remove default Attributes from an ItemStack, it is still possible that an ItemStack can override it. // IIngredient.removeGlobalAttribute(attribute as Attribute, slotTypes as EquipmentSlot[]);
myIIngredient . removeGlobalAttribute( < attribute : minecraft:generic.attack_damage > , [ < constant : minecraft:equipmentslot:chest > ]);
Removes all AttributeModifiers who's ID is the same as the given uuid from this IIngredient. // IIngredient.removeGlobalAttributeModifier(uuid as string, slotTypes as EquipmentSlot[]);
myIIngredient . removeGlobalAttributeModifier( "8c1b5535-9f79-448b-87ae-52d81480aaa3" , [ < constant : minecraft:equipmentslot:chest > ]);
Parameters:
uuid: string
Type: string
- The unique id of the AttributeModifier to remove.
Removes all AttributeModifiers who's ID is the same as the given uuid from this IIngredient. // IIngredient.removeGlobalAttributeModifier(uuid as UUID, slotTypes as EquipmentSlot[]);
myIIngredient . removeGlobalAttributeModifier( IItemStack . BASE_ATTACK_DAMAGE_UUID, [ < constant : minecraft:equipmentslot:chest > ]);
Parameters:
uuid: UUID
Type: UUID
- The unique id of the AttributeModifier to remove.
// IIngredient.removeTooltip(regex as string);
myIIngredient . removeTooltip(myString);
Parameters:
regex: string
Type: string
Use this if you already have the transformer from another ingredient // IIngredient.transform(transformer as IIngredientTransformer<IIngredient>) as IIngredientTransformed<IIngredient>;
myIIngredient . transform(myIIngredientTransformer);
Return Type:
IIngredientTransformed <IIngredient >
// IIngredient.transformCustom(uid as string, function as function(r as IItemStack) as IItemStack = null) as IIngredientTransformed<IIngredient>;
myIIngredient . transformCustom(myString, myFunction);
Return Type:
IIngredientTransformed <IIngredient >
// IIngredient.transformDamage(amount as int = 1) as IIngredientTransformed<IIngredient>;
myIIngredient . transformDamage(myInt);
Parameters:
amount: int
(optional) Type: int
Default Value: 1
Return Type:
IIngredientTransformed <IIngredient >
// IIngredient.transformReplace(replaceWith as IItemStack) as IIngredientTransformed<IIngredient>;
myIIngredient . transformReplace(myIItemStack);
Return Type:
IIngredientTransformed <IIngredient >