This page covers all related elements for adding a new material to Tinkers’ Construct.

Adding a material requires defining a material ID in the format <domain>:<name>, where <domain> is a name uniquely representing your mod or modpack, and <name> is a unique ID within the domain. Note that <domain> should never be tconstruct or tinkers_things for new materials, create an ID unique to your mod or modpack to prevent conflicts.

If you are creating a Java addon, all resources listed below can be generated using our datagen setup; the best examples of this are in Tinkers’ Construct itself. If you are making a modpack or low code mod, we recommend using Json Things; it both serves as a global datapack loader for modpacks, and lets low code mods register new items for the material.

Data Packs

Data packs are used to define all gameplay behavior related to a material, including stats, traits, recipes, and behavior on fluids.

Materials

Materials require 3 different JSON located under data/<domain>/tinkering/materials/. Click the links for details on the JSON format for each JSON.

  • definition/: The material definition enables the material to appear in books and JEI. In addition, definitions support conditions allowing a material to be conditionally disabled.
  • stats/: Material stats define the stats a material gives a tool when used in tools. In addition, materials only appear on tool parts if the material stats defines the matching stat type. For information on how we balanced our material stats, see the design docs.
  • traits/: Material traits define the modifiers added to a tool using the given material. Modifiers can be assigned either for a specific stat type, or as a default for any types with no specific list.

For examples of these files, see Tinkers’ Things, which adds 3 materials:

  • Hematite: a castable alloy material used for melee/harvest and armor plating.
  • Veinline: a composite material used as a binding and a bowstring.
  • Silky Cloth: a part builder material used as armor maille.

Recipes

Simply defining a material will not make it craftable. Instead, one or more recipes must be added under data/<domain>/recipes/ defining ways the material may be crafted (or recycled). Common recipes include:

  • Material Items: Defines an item as usable for repairing the tool. Additionally, if the materials definition allows, this item may be used in the part builder to create the material.
  • Casting and Composite: Defines the amount of fluid needed to cast this fluid. Can either set a base material to make this a composite material, or leave the base out to create this material using casts.
  • Melting: Defines the amount of fluid this material melts into. Not required, but its typically desired to allow recycling of tool parts.

In addition to material specific recipes, you may wish to add recipes to craft the fluid associated with your material:

  • Alloying: Recipe for combining multiple fluids into your material’s fluid.
  • Melting: Recipe for melting an item to produce your material’s fluid.
  • Casting: Recipes for casting your fluid to create the associated repair item.

Note that casting, composite, and melting all require creating a fluid associated with your material. This fluid can be an existing fluid, but more often you will wish to add a new one. In addition, while not required it is often desired to add new items associated with the material. See Thing Packs for references on how to add blocks, items, and fluids using Json Things for low code mods or datapacks.

Example recipes:

  • Silky Cloth: minimal material example with just a material recipe for the part builder. Uses an existing item.
  • Hematite: recipe examples for hematite and veinline. Includes some material adjacent recipes, such as alloying hematite, casting hematite blocks and items, and crafting the block from the item.

Fluid Effects

Main page: Fluid Effects

If your material includes a custom fluid, you will likely want to add a fluid effect. For an example, see molten hematite from Tinkers’ Things.

Resource Packs

Resource packs are used to define all cosmetic appearances of materials, including textures, colors, and localizations.

Render Info

Material render info are located under assets/<domain>/tinkering/materials/ and define the following:

  • Name of the unique texture for a material.
  • Tint color to use if the unique texture is missing.
  • List of fallback names to tint using the color if the unique texture is missing. If all fallbacks are missing, the base texture will be tinted.
  • Minimum light level for a material.
  • Information for the part generator command to generate unique textures.

In addition to creating a render info under assets/<domain>/tinkering/materials/<name>.json, you may also create any number of additional render infos under assets/<domain>/tinkering/materials/<name>/<variant>.json to define textures for material variants.

For example render infos, see Tinkers’ Things.

Localization

The material <domain>:<name> uses the following localization keys in assets/<domain>/lang/en_us.json and other languages:

  • material.<domain>.<name>: Display name of the material.
  • material.<domain>.<name>.flavor: Flavor text to show in non-encyclopedia book pages.
  • material.<domain>.<name>.encyclopedia: Description of the material’s trait(s) to show in the encyclopedia under melee/harvest materials.
  • material.<domain>.<name>.armor: Description of the material’s trait(s) to show in the encyclopedia under armor materials. If unset, uses the melee/harvest description.
  • material.<domain>.<name>.ranged: Description of the material’s trait(s) to show in the encyclopedia under ranged materials. If unset, uses the melee/harvest description.

If you define a new Mining Tier <domain>:<name>, it uses the key stat.tconstruct.harvest_tier.<domain>.<name> for the localization. If you add new items or fluids, they may need additional localization.

Examples:

Colors

Main page: Resource Colors

The material <domain>:<name> use the following resource color keys:

  • material.<domain>.<name>: Defines the default color for the material.
  • material.<domain>.<name>.<variant>: Defines the color for a specific variant. If unset, uses the default material color.

In addition, if you define a new Mining Tier <domain>:<name>, it uses the key harvest_tier.<domain>.<name> for the color.

For example colors, see Tinkers’ Things.

Fluid Tooltips

Main page: Fluid Tooltips

If adding a new fluid, you will typically want to either register a custom fluid tooltip JSON or add your fluid to the appropriate tooltip tag.

For an example fluid tooltip JSON, see Tinkers’ Construct metals.

Thing Packs

Json Things is a mod for Minecraft that allows adding new content to the game using JSON placed under things/<domain>. This allows adding content types which normally require registration in Java, providing a way to register that content in low code mods and modpacks. While there are many options of things you may register, the following are directly relevant to Tinkers’ Construct materials:

  • Items: While you can use an existing item, its often desired to create new items for a material, such as ingots or nuggets.
  • Blocks: While not required, its often desired to add a decorative storage block for your material’s item form.
  • Fluids: If you wish to create your material using casting or compositing, a new fluid is required.
  • Creative Tabs: If your addon or modpack adds a large number of items, you may wish to add your own creative tab. IF you only add a small number of items, you can always add your items to Tinkers’ Construct or vanilla creative tabs. Items must be in a tab to show up in JEI.
  • Item Tiers: If you wish to give your material a custom Mining Tier, you will need to define an item tier. Most of the properties will be unused by Tinkers’, apart from sort_after, sort_before, and tag. In most cases its better to use one of the existing tiers.

Examples:

  • Creative Mode Tab: Creates a unique tab for all contents from Tinkers’ Things.
  • Hematite
    • Item: Item form of hematite, used for repairing hematite tools.
    • Block: Storage block for the hematite item. Used for mass repair of hematite tools.
    • Fluid: Fluid form of hematite, used to cast tool parts and composite veinline.
    • Harvest Tier: adds a new harvest tier for the hematite material between diamond and netherite.