Tinkers' Schema
Data-driven tool registration for Tinkers' Construct 2.
Tinkers' Schema is an addon for Tinkers' Construct 2 that lets you add custom melee weapons, harvest tools, and ranged weapons using only JSON. No Java code, no compilation, no resource pack restructuring — drop a config file, supply your models and textures, and the tool becomes a fully functional Tinkers' item.
For custom models and textures, Resource Loader is recommended.
A ready-to-use example pack is available here: Tinkers' Schema - Example Tools.
Tinkers' Schema by itself adds nothing to the game. It only provides the framework — you need the example pack or your own JSON and resource files for any tool to appear.
Features
- JSON-driven registration — Each tool is defined by a single file in
config/tinkersschema/tools/. - First-class Tinkers' items — Tools are craftable in the Tool Station and Tool Forge, repairable, modifiable, and compatible with existing Tinkers' materials.
- Configurable parts — Combine any Tinkers' tool parts using
head,handle,extra,bowlimb,bowstring, or any registered stat ID. Multiple parts of the same type are supported. - Configurable stats — Damage, attack speed, knockback, durability, mining speed, and damage cutoff are all adjustable with sensible defaults.
- Intrinsic traits — Attach any registered trait (e.g.,
splintering,beheading) to a tool. - AOE range — Harvest tools can define their own area-of-effect dimensions.
- Custom GUI layout — Nine-grid slot presets (
topleft,center,bottomright) or precise pixel coordinates ("12,62"). - Station routing — Craft in the Tool Station, or restrict to the Tool Forge.
- Zero side effects — No config files means no changes to your game.
Current Scope
| Tool Type | Base Class | Use Case |
|---|---|---|
sword |
SwordCore |
Melee weapons |
harvest |
AoeToolCore |
Harvest tools with AOE mining |
bow |
BowCore |
Ranged weapons using arrows |
Requirements
- Minecraft 1.12.2
- Forge
- Tinkers' Construct 2
- Mantle
- Resource Loader (recommended for loading custom models and textures)
Quick Start
Install Tinkers' Schema and its dependencies.
Create a tool definition in
config/tinkersschema/tools/:
{
"id": "tinkersschema:war_club",
"tooltype": "sword",
"station": "table",
"categories": ["WEAPON"],
"traits": ["splintering"],
"repairParts": [1, 2],
"repairModifiers": { "1": 1.5, "2": 1.5 },
"parts": [
{ "type": "handle", "item": "tconstruct:tool_rod" },
{ "type": "head", "item": "tconstruct:bow_limb" },
{ "type": "head", "item": "tconstruct:bow_limb" }
],
"guiSlots": ["center", "topright", "bottomleft"],
"stats": {
"damagePotential": 0.9,
"attackSpeed": 1.6,
"knockback": 1.1,
"bonusAttack": 0.5,
"attackMultiplier": 1.1,
"durabilityMultiplier": 1.2,
"damageCutoff": 15.0,
"repairModifier": 1.0
}
}
- Provide the model and textures via Resource Loader or a resource pack:
resources/tinkersschema/
├── models/item/tools/war_club.tcon.json
├── textures/items/tools/war_club/
│ ├── handle.png
│ ├── limb1.png
│ ├── limb2.png
│ └── limb1_broken.png
└── lang/
├── en_us.lang
└── zh_CN.lang
- Launch the game. Your tool appears in the Tool Station and the Tinkers' Construct creative tab.
Configuration Reference
Required Fields
| Field | Description |
|---|---|
id |
Registry name in namespace:path form |
tooltype |
sword, harvest, or bow |
parts |
Ordered list of tool parts |
Optional Fields
| Field | Default | Description |
|---|---|---|
station |
"table" |
table (Tool Station + Tool Forge) or forge (Tool Forge only) |
categories |
[] |
WEAPON, HARVEST |
traits |
[] |
Intrinsic trait IDs |
harvestToolClass |
null |
pickaxe, shovel, axe |
effectiveMaterials |
[] |
Block materials for AOE tools (ROCK, WOOD, etc.) |
aoeRange |
[1,1,1] |
AOE dimensions for harvest tools |
repairParts |
[1] |
Part indices used for repair |
repairModifiers |
{} |
Repair multiplier per part index |
guiSlots |
preset | Slot positions (topleft, center, "12,62", etc.) |
Stats
All values default to Tinkers' Construct baselines:
| Stat | Default | Applies To |
|---|---|---|
damagePotential |
1.0 |
All |
attackSpeed |
1.6 |
All |
knockback |
1.0 |
All |
bonusAttack |
0.0 |
All |
attackMultiplier |
1.0 |
All |
durabilityMultiplier |
1.0 |
All |
miningSpeedModifier |
1.0 |
All |
damageCutoff |
15.0 |
All |
repairModifier |
1.0 |
All |
drawSpeedMultiplier |
1.0 |
bow |
rangeMultiplier |
1.0 |
bow |
projectileDamageMultiplier |
1.0 |
bow |
drawMoveSpeed |
null |
bow |
Bow Stats
Additional fields for bow tools:
| Field | Default | Description |
|---|---|---|
drawSpeedMultiplier |
1.0 |
Multiplier on the material-derived draw speed |
rangeMultiplier |
1.0 |
Multiplier on the material-derived range |
projectileDamageMultiplier |
1.0 |
Multiplier on the material-derived projectile bonus damage |
drawMoveSpeed |
null |
Movement speed retained while drawing. Omit for vanilla slowdown |
Assets
Models and textures follow the standard resource pack layout. Place them in .minecraft/resources/tinkersschema/ (with Resource Loader) or package them as a resource pack.
- Models:
models/item/tools/<tool_name>.tcon.json— layered tool model - Textures:
textures/items/tools/<tool_name>/<layer>.png— grayscale, 16×16 - Language:
lang/<locale>.lang— keysitem.<modid>.<name>.nameand.desc
Grayscale textures are tinted by the material color at render time, following the same convention used by Tinkers' Construct's own tools.
Future Plans
- CraftTweaker/ZenScript integration
- Crossbows and ammunition (arrows, bolts, throwables)
- JSON-defined custom tool parts
- Stable API and full documentation
Known Limitations
- Tool behavior (sweep attack, AOE logic, bow draw mechanics) is inherited from Tinkers' base classes and cannot be reconfigured through JSON.
- Model paths are bound to Tinkers' loading convention:
models/item/tools/<name>.tcon.json. effectiveMaterialscurrently supports vanilla block materials only.- Config changes require a game restart (CraftTweaker 1.12.2 does not support
/reload).
License
MIT. Built on ForgeDevEnv (MIT, CleanroomMC).
Credits
- SlimeKnights — Tinkers' Construct 2
- Lumien231 — Resource Loader
- CleanroomMC — ForgeDevEnv
AI-assisted development.

