This page is about the recipes used to apply modifiers to tools. For the recipes implementing repair based modifiers, see Modifier Repair Recipes. For the recipes implementing the severing modifier, see Severing Recipes.

Modifier recipes are used to apply modifiers to tools. Unless otherwise stated, the inputs in the modifier recipe may be applied in any order.

Common Components

Modifier recipes share certain common components, which are discussed more in depth here.

Level Ranges

Many modifier recipes support level ranges, which validate the minimum and maximum levels allowed by the recipe. This level is validated after applying the modifier recipe (that is, the current level plus 1). Level ranges typically default the minimum to 1 if unset. For more information on the level range format, see Integer Ranges.

For example, if the level range has a minimum of 2 and a maximum of 5, then the recipe requires the tool has at least 1 level of the modifier to apply, and may not increase the level above 5.

Basic Modifiers

Basic modifier recipes are the most common way to apply modifiers. They define a recipe combining a list of supported tools with a list of unique inputs to apply a modifier.

Basic modifier recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:modifier.
    • tools (Item Ingredient): Ingredient matching tools that may receive this modifier. Typically should be a tag or a combination of tags.
    • max_tool_size (Integer): Maximum number of tools that can receive this modifier at once. Used by stackable tools such as daggers to allow applying a modifier to fewer tools at once. If unset, defaults to 16.
    • inputs (Array): List of sized ingredients for the requirements to apply this recipe. All items must be present with the minimum stack size to apply.
    • slots (Slot Count): Modifier slots required to apply this recipe, will be removed when applied, or produce a validation error if the tool has too few slots. If unset, no slots are required.
      • <slot> (Integer): Number of slots required of the slot type <slot>. Only one slot type may be specified.
    • result (Modifier ID): Modifier applied by this recipe. In addition to other validations, the tool will be validated after applying this modifier to check modifier requirements.
    • level (Integer Range): The resulting tool’s level of result must be within this range after applying the recipe, see level ranges. If unset, any level is allowed.
    • check_trait_level (Boolean): If true, level will consider the trait level on the tool, useful for preventing wasting resources on some abilities that also appear as traits. Defaults to false, which ignores the trait level.
    • allow_crystal (Boolean): If true (default), this modifier recipe may be applied using a modifier crystal, ignoring the standard inputs. Unusual modifier recipes will often set this to false to special case crystals.

Incremental Modifiers

Incremental modifier recipes support adding a partial level of the modifier instead of requiring a full level to be added at once. Partial levels of modifiers cause the modifier effect to be scaled, though note not every effect supports scaling; some may simply round down to the nearest level.

Incremental modifier recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:incremental_modifier.
    • tools (Item Ingredient): Ingredient matching tools that may receive this modifier. Typically should be a tag or a combination of tags.
    • max_tool_size (Integer): Maximum number of tools that can receive this modifier at once. Used by stackable tools such as daggers to allow applying a modifier to fewer tools at once. If unset, defaults to 16.
    • input (Item Ingredient): Item used to apply this modifier.
    • needed_per_level (Integer): Number of items needed for a full level of this modifier.
    • amount_per_item (Integer): Amount this recipe counts towards needed_per_level. Used to allow multiple recipes to apply the same modifier at different values, for instance redstone may count as 1 while redstone blocks count as 9. If unset, defaults to 1.
    • leftover (Item Output): Item to return if the tool needs less than amount_per_item to reach needed_per_level. Stack size will be scaled based on the extra amount. If unset, then no leftover is returned. Unused if amount_per_item is 1.
    • slots (Slot Count): Modifier slots required to apply this recipe, will be removed when applied, or produce a validation error if the tool has too few slots. If unset, no slots are required. Ignored on tools that already contain this modifier.
      • <slot> (Integer): Number of slots required of the slot type <slot>. Only one slot type may be specified.
    • result (Modifier ID): Modifier applied by this recipe. In addition to other validations, the tool will be validated after applying this modifier to check modifier requirements.
    • level (Integer Range): The resulting tool’s level of result must be within this range after applying the recipe, see level ranges. If unset, any level is allowed.
    • check_trait_level (Boolean): If true, level will consider the trait level on the tool, useful for preventing wasting resources on some abilities that also appear as traits. Defaults to false, which ignores the trait level.
    • allow_crystal (Boolean): If true (default), this modifier recipe may be applied using a modifier crystal, ignoring the standard inputs. Unusual modifier recipes will often set this to false to special case crystals.

Swappable Modifiers

Swappable modifier recipes allow a single modifier to have multiple variants applied with different recipes. If a modifier is already present on a tool and a different variant recipe is applied, the variant is changed and no modifier slots are consumed. This recipe is notably used for the rebalanced modifier, along with the crystalshot variants.

Swappable modifier recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:swappable_modifier.
    • tools (Item Ingredient): Ingredient matching tools that may receive this modifier. Typically should be a tag or a combination of tags.
    • max_tool_size (Integer): Maximum number of tools that can receive this modifier at once. Used by stackable tools such as daggers to allow applying a modifier to fewer tools at once. If unset, defaults to 16.
    • inputs (Array): List of sized ingredients for the requirements to apply this recipe. All items must be present with the minimum stack size to apply.
    • slots (): Modifier slots required to apply this recipe, will be removed when applied, or produce a valuation error if the tool has too few slots. If unset, no slots are required.
      • <slot> (Integer): Number of slots required of the slot type <slot>. Only one slot type may be specified.
    • result (Object): Result object.
      • name (Modifier ID): Modifier applied by this recipe. In addition to other validations, the tool will be validated after applying this modifier to check modifier requirements.
      • value (String): Modifier variant applied by this recipe. In the recipe serializer, any value is allowed, though based on the modifier there may be restrictions on useful values.
    • variant_formatter (Resource Location): Determines how the modifier variant is displayed in recipe viewers such as JEI. The following options exist by default:
      • tconstruct:default: Displays the variant using the translation key modifier.<result_domain>.<result_name>.<value>. Default since 1.19.2.
      • tconstruct:material: Treats the variant as a material variant, formatting it using the material’s display name.
      • tconstruct:none: Displays the variant as an untranslated string. Only available in 1.18.2, where it is the default value (to prevent breaking old recipes).
    • allow_crystal (Boolean): If true (default), this modifier recipe may be applied using a modifier crystal, ignoring the standard inputs. For swappable modifiers, typically all variants except at most one should set this to false to prevent conflicts.

Multilevel Modifiers

Multilevel modifier recipes allow a modifier to have different slot requirements each level without changing the input list. It is also commonly used to allow modifier crystals to function in recipes with different inputs on each level.

Multilevel modifier recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:multilevel_modifier.
    • tools (Item Ingredient): Ingredient matching tools that may receive this modifier. Typically should be a tag or a combination of tags.
    • max_tool_size (Integer): Maximum number of tools that can receive this modifier at once. Used by stackable tools such as daggers to allow applying a modifier to fewer tools at once. If unset, defaults to 16.
    • inputs (Array): List of sized ingredients for the requirements to apply this recipe. All items must be present with the minimum stack size to apply. If unset, this recipe will only work with modifier crystals, and will not be displayed in JEI.
    • result (Modifier ID): Modifier applied by this recipe. In addition to other validations, the tool will be validated after applying this modifier to check modifier requirements.
    • levels (Array): List of slot requirements for each level range. Any levels outside the ranges listed are not supported for this recipe and will produce a validation error.
      • (Object): A level entry object. Determines for a given level range the slot requirement.
        • level (Integer Range): If the resulting tool’s level of result is within this range after applying the recipe, this entry applies. See level ranges.
        • slots (Slot Count): Modifier slots required to apply this recipe for this level range, will be removed when applied, or produce a validation error if the tool has too few slots. If unset, no slots are required for this level range.
          • <slot> (Integer): Number of slots required of the slot type <slot>. Only one slot type may be specified.
    • check_trait_level (Boolean): If true, levels will consider the trait level on the tool, useful for preventing wasting resources on some abilities that also appear as traits. Defaults to false, which ignores the trait level.
    • allow_crystal (Boolean): If true (default), this modifier recipe may be applied using a modifier crystal, ignoring the standard inputs. Unusual modifier recipes will often set this to false to special case crystals.

Modifier Salvage

Modifier salvage recipes are used to define the modifier slots returned after removing a modifier using the modifier worktable. When adding recipes through datagen, you can automatically datagen a salvage recipe from the builders for any of the above formats.

Modifier salvage recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:modifier_salvage.
    • tools (Item Ingredient): Ingredient matching tools that may produce this salvage. Typically should be a tag or a combination of tags.
    • max_tool_size (Integer): Unused, leftover from an older version of modifier salvage.
    • modifier (Modifier ID): Modifier removed to apply this salvage.
    • level (Integer Range): The initial tool’s level of modifier must be within this range for this salvage to apply, see level ranges. If unset, any level will apply this salvage.
    • slots (Slot Count): Modifier slots returned when removing this modifier.
      • <slot> (Integer): Number of slots returned of the slot type <slot>. Only one slot type may be specified.

Specialized Recipes

These modifier recipes are used to apply modifiers with specialized behavior.

Overslime

The overslime modifier recipe is used to apply the overslime modifier and increase the amount of overslime. This modifier essentially acts as a second durability bar on tool, making this recipe type effectively repairing the tool’s overslime. This recipe will be applicable to any tool that supports durability based modifiers.

Overslime modifier recipes have the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:overslime_modifier.
    • ingredient (Item Ingredient): Item used to apply this recipe. Typically a slimeball variant.
    • restore_amount (Integer): Amount of overslime restored by this recipe.

Armor Dyeing

The armor dyeing modifier recipe is used to apply the dyed modifier. Typically, its not useful to add another copy of this recipe, as Tinkers’ Construct already adds this modifier to any tools in the item tag tconstruct:modifiable/dyeable (meaning its easier to just add your tool to the item tag).

The armor dyeing recipe has the following format:

  • (Object): The recipe object.
    • type (Resource Location): Always tconstruct:armor_dyeing_modifier.
    • tools (Item Ingredient): Ingredient matching tools that may receive this modifier. Typically should be a tag or a combination of tags.

Creative Slot

The creative slot modifier recipe tconstruct:creative_slot_modifier is used to apply the creative slot modifier. This recipe will dynamically support adding in any registered modifier slot type with no limit. It is designed for testing in creative mode, and will likely be made creative only in the future due to abuse in modpacks.

If you are a modpack maker, do not give players creative modifiers, they are meant for creative mode. Use basic modifier recipes to add a new recipe for a new modifier slot you can properly limit.