The CraftTweaker Ingredient class which is used to power our recipes and ItemStack matching.

Importing the class

Link to importing-the-class

It might be required for you to import the package if you encounter any issues (like casting an Array), so better be safe than sorry and add the import at the very top of the file.

ZenScript
Copy
import crafttweaker.api.ingredient.IIngredient;

Implemented Interfaces

Link to implemented-interfaces

IIngredient implements the following interfaces. That means all methods defined in these interfaces are also available in IIngredient

Result typeIs Implicit
Result type
IData
Is Implicit
true
Result type
IIngredientWithAmount
Is Implicit
true
Result type
Ingredient
Is Implicit
true
Result type
MapData
Is Implicit
true

Link to addGlobalAttributeModifier

Name: addGlobalAttributeModifier

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

Return Type: void

ZenScript
Copy
// IIngredient.addGlobalAttributeModifier(attribute as Attribute, name as string, value as double, operation as AttributeOperation, slotTypes as EquipmentSlot[]) as void

<tag:items:forge:ingots>.addGlobalAttributeModifier(<attribute:minecraft:generic.attack_damage>, "Extra Power", 10, AttributeOperation.ADDITION, [<equipmentslot:chest>]);
ParameterTypeDescription
Parameter
attribute
Type
Attribute
Description
The Attribute of the modifier.
Parameter
name
Type
string
Description
The name of the modifier.
Parameter
value
Type
double
Description
The value of the modifier.
Parameter
operation
Type
AttributeOperation
Description
The operation of the modifier.
Parameter
slotTypes
Type
EquipmentSlot[]
Description
What slots the modifier is valid for.

Link to addGlobalAttributeModifier

Name: addGlobalAttributeModifier

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

Return Type: void

ZenScript
Copy
// IIngredient.addGlobalAttributeModifier(attribute as Attribute, uuid as string, name as string, value as double, operation as AttributeOperation, slotTypes as EquipmentSlot[]) as void

<tag:items:forge:ingots>.addGlobalAttributeModifier(<attribute:minecraft:generic.attack_damage>, "8c1b5535-9f79-448b-87ae-52d81480aaa3", "Extra Power", 10, AttributeOperation.ADDITION, [<equipmentslot:chest>]);
ParameterTypeDescription
Parameter
attribute
Type
Attribute
Description
The Attribute of the modifier.
Parameter
uuid
Type
string
Description
The unique identifier of the modifier to replace.
Parameter
name
Type
string
Description
The name of the modifier.
Parameter
value
Type
double
Description
The value of the modifier.
Parameter
operation
Type
AttributeOperation
Description
The operation of the modifier.
Parameter
slotTypes
Type
EquipmentSlot[]
Description
What slots the modifier is valid for.

Name: addShiftTooltip

Return Type: void

ZenScript
Copy
IIngredient.addShiftTooltip(content as Component, showMessage as Component) as void
ParameterTypeDescriptionOptionalDefaultValue
Parameter
content
Type
Component
Description
No Description Provided
Optional
false
DefaultValue
Parameter
showMessage
Type
Component
Description
No Description Provided
Optional
true
DefaultValue

Name: addTooltip

Return Type: void

ZenScript
Copy
IIngredient.addTooltip(content as Component) as void
ParameterTypeDescription
Parameter
content
Type
Component
Description
No Description Provided

Name: anyDamage

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
// IIngredient.anyDamage() as IngredientConditioned<IIngredient>

<tag:items:forge:ingots>.anyDamage();

Link to asIIngredientWithAmount

Name: asIIngredientWithAmount

Used implicitly when a machine can accept more than one item but you only provide one.

Return Type: IIngredientWithAmount

ZenScript
Copy
// IIngredient.asIIngredientWithAmount() as IIngredientWithAmount

<tag:items:forge:ingots>.asIIngredientWithAmount();

Link to asVanillaIngredient

Name: asVanillaIngredient

Create a Vanilla ingredient matching this one.

Return Type: Ingredient

ZenScript
Copy
// IIngredient.asVanillaIngredient() as Ingredient

<tag:items:forge:ingots>.asVanillaIngredient();

Name: clearTooltip

Return Type: void

ZenScript
Copy
// IIngredient.clearTooltip() as void

<tag:items:forge:ingots>.clearTooltip();

Name: contains

Does the ingredient contain the given ingredient?

Return Type: boolean

ZenScript
Copy
// IIngredient.contains(ingredient as IIngredient) as boolean

<tag:items:forge:ingots>.contains((<item:minecraft:iron_ingot> | <item:minecraft:gold_ingot>));
ParameterTypeDescription
Parameter
ingredient
Type
IIngredient
Description
The ingredient to check

Link to getRemainingItem

Name: getRemainingItem

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.

Return Type: IItemStack

ZenScript
Copy
// IIngredient.getRemainingItem(stack as IItemStack) as IItemStack

<tag:items:forge:ingots>.getRemainingItem(<item:minecraft:iron_ingot>);
ParameterTypeDescription
Parameter
stack
Type
IItemStack
Description
The stack to provide for this ingredient.

Name: matches

Does the given stack match the ingredient?

Return Type: boolean

ZenScript
Copy
// IIngredient.matches(stack as IItemStack) as boolean

<tag:items:forge:ingots>.matches(<item:minecraft:iron_ingot>);
ParameterTypeDescription
Parameter
stack
Type
IItemStack
Description
The stack to check

Name: matches

Does the given stack match the ingredient?

Return Type: boolean

ZenScript
Copy
IIngredient.matches(stack as IItemStack, ignoreDamage as boolean) as boolean
ParameterTypeDescription
Parameter
stack
Type
IItemStack
Description
The stack to check
Parameter
ignoreDamage
Type
boolean
Description
Should damage be checked?

Link to modifyShiftTooltip

Name: modifyShiftTooltip

Return Type: void

ZenScript
Copy
IIngredient.modifyShiftTooltip(shiftedFunction as ITooltipFunction, unshiftedFunction as ITooltipFunction) as void
ParameterTypeDescriptionOptionalDefaultValue
Parameter
shiftedFunction
Type
ITooltipFunction
Description
No Description Provided
Optional
false
DefaultValue
Parameter
unshiftedFunction
Type
ITooltipFunction
Description
No Description Provided
Optional
true
DefaultValue

Name: modifyTooltip

Return Type: void

ZenScript
Copy
IIngredient.modifyTooltip(function as ITooltipFunction) as void
ParameterTypeDescription
Parameter
function
Type
ITooltipFunction
Description
No Description Provided

Name: mul

Use this in contexts where machines accept more than one item to state that fact.

Return Type: IIngredientWithAmount

ZenScript
Copy
IIngredient.mul(amount as int) as IIngredientWithAmount
ParameterTypeDescription
Parameter
amount
Type
int
Description
No Description Provided

Name: only

Use this if you already have the condition from another ingredient

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
IIngredient.only(condition as IIngredientCondition<IIngredient>) as IngredientConditioned<IIngredient>
ParameterTypeDescription
Parameter
condition
Type
IIngredientCondition<IIngredient>
Description
No Description Provided

Name: onlyDamaged

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
// IIngredient.onlyDamaged() as IngredientConditioned<IIngredient>

<tag:items:forge:ingots>.onlyDamaged();

Link to onlyDamagedAtLeast

Name: onlyDamagedAtLeast

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
IIngredient.onlyDamagedAtLeast(minDamage as int) as IngredientConditioned<IIngredient>
ParameterTypeDescription
Parameter
minDamage
Type
int
Description
No Description Provided

Link to onlyDamagedAtMost

Name: onlyDamagedAtMost

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
IIngredient.onlyDamagedAtMost(maxDamage as int) as IngredientConditioned<IIngredient>
ParameterTypeDescription
Parameter
maxDamage
Type
int
Description
No Description Provided

Name: onlyIf

Return Type: IngredientConditioned<IIngredient>

ZenScript
Copy
IIngredient.onlyIf(uid as string, function as Predicate<IItemStack>) as IngredientConditioned<IIngredient>
ParameterTypeDescriptionOptionalDefaultValue
Parameter
uid
Type
string
Description
No Description Provided
Optional
false
DefaultValue
Parameter
function
Type
Predicate<IItemStack>
Description
No Description Provided
Optional
true
DefaultValue

Link to removeGlobalAttribute

Name: removeGlobalAttribute

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.

Return Type: void

ZenScript
Copy
// IIngredient.removeGlobalAttribute(attribute as Attribute, slotTypes as EquipmentSlot[]) as void

<tag:items:forge:ingots>.removeGlobalAttribute(<attribute:minecraft:generic.attack_damage>, [<equipmentslot:chest>]);
ParameterTypeDescription
Parameter
attribute
Type
Attribute
Description
The attribute to remove.
Parameter
slotTypes
Type
EquipmentSlot[]
Description
The slot types to remove it from.

Link to removeGlobalAttributeModifier

Name: removeGlobalAttributeModifier

Removes all AttributeModifiers who's ID is the same as the given uuid from this IIngredient.

Return Type: void

ZenScript
Copy
// IIngredient.removeGlobalAttributeModifier(uuid as string, slotTypes as EquipmentSlot[]) as void

<tag:items:forge:ingots>.removeGlobalAttributeModifier("8c1b5535-9f79-448b-87ae-52d81480aaa3", [<equipmentslot:chest>]);
ParameterTypeDescription
Parameter
uuid
Type
string
Description
The unique id of the AttributeModifier to remove.
Parameter
slotTypes
Type
EquipmentSlot[]
Description
The slot types to remove it from.

Name: removeTooltip

Return Type: void

ZenScript
Copy
IIngredient.removeTooltip(regex as string) as void
ParameterTypeDescription
Parameter
regex
Type
string
Description
No Description Provided

Name: reuse

Return Type: IIngredientTransformed<IIngredient>

ZenScript
Copy
// IIngredient.reuse() as IIngredientTransformed<IIngredient>

<tag:items:forge:ingots>.reuse();

Name: transform

Use this if you already have the transformer from another ingredient

Return Type: IIngredientTransformed<IIngredient>

ZenScript
Copy
IIngredient.transform(transformer as IIngredientTransformer<IIngredient>) as IIngredientTransformed<IIngredient>
ParameterTypeDescription
Parameter
transformer
Type
IIngredientTransformer<IIngredient>
Description
No Description Provided

Name: transformCustom

Return Type: IIngredientTransformed<IIngredient>

ZenScript
Copy
IIngredient.transformCustom(uid as string, function as Function<IItemStack,IItemStack>) as IIngredientTransformed<IIngredient>
ParameterTypeDescriptionOptionalDefaultValue
Parameter
uid
Type
string
Description
No Description Provided
Optional
false
DefaultValue
Parameter
function
Type
Function<IItemStack,IItemStack>
Description
No Description Provided
Optional
true
DefaultValue

Name: transformDamage

Return Type: IIngredientTransformed<IIngredient>

ZenScript
Copy
IIngredient.transformDamage(amount as int) as IIngredientTransformed<IIngredient>
ParameterTypeDescriptionOptionalDefaultValue
Parameter
amount
Type
int
Description
No Description Provided
Optional
true
DefaultValue
1

Link to transformReplace

Name: transformReplace

Return Type: IIngredientTransformed<IIngredient>

ZenScript
Copy
IIngredient.transformReplace(replaceWith as IItemStack) as IIngredientTransformed<IIngredient>
ParameterTypeDescription
Parameter
replaceWith
Type
IItemStack
Description
No Description Provided

Name: CONTAINS

Does the ingredient contain the given ingredient?

ZenScript
Copy
ingredient as IIngredient in myIIngredient
(<item:minecraft:iron_ingot> | <item:minecraft:gold_ingot>) in <tag:items:forge:ingots>

Name: MUL

Use this in contexts where machines accept more than one item to state that fact.

ZenScript
Copy
myIIngredient * amount as int

Name: OR

ZenScript
Copy
myIIngredient | other as IIngredient
NameTypeHas GetterHas SetterDescription
Name
burnTime
Type
void
Has Getter
false
Has Setter
true
Description
Sets the burn time of this ingredient, for use in the furnace and other machines
Name
commandString
Type
string
Has Getter
true
Has Setter
false
Description
Returns the BEP to get this stack
Name
items
Type
IItemStack[]
Has Getter
true
Has Setter
false
Description
No Description Provided