CustomGear is a data-driven NeoForge mod for Minecraft 1.21.1 that allows server owners, modpack creators, and players to add fully custom armor sets, weapons, and tools — all through simple JSON files. No coding required.
- Add custom armor sets with per-piece defense, durability, toughness, and knockback resistance
- Add custom weapons and tool sets (sword, pickaxe, axe, shovel, hoe) with custom damage, speed, and mining speed
- Per-piece armor effects (e.g., helmet gives Night Vision when worn individually)
- Set bonus effects when wearing the full armor set
- Held effects per tool (e.g., pickaxe gives Haste, sword gives Strength)
- Full multi-language support — define the full item name per language with no format restrictions
- Custom textures with a flexible path system, or reuse textures from other mods
- JSON files can be organized in any subfolder structure inside
.minecraft/customgear/ - Compatible with JEI
- All items are enchantable with vanilla and modded enchantments
/customgear reloadcommand to reload names, textures, and effects without restarting
- Download and install NeoForge 1.21.1
- Place
customgear-1.0.0.jarin yourmods/folder - Launch the game once to generate the
customgear/folder inside.minecraft/ - Add your JSON files to
.minecraft/customgear/ - Restart the game
All JSON files go inside .minecraft/customgear/. Each file defines one armor set or one tool set. Files can be organized in any subfolder structure you prefer.
{
"id": "my_armor",
"type": "armor_set",
"piece_names": {
"en_us": {
"helmet": "My Armor Helmet",
"chestplate": "My Armor Chestplate",
"leggings": "My Armor Leggings",
"boots": "My Armor Boots"
},
"es_mx": {
"helmet": "Casco de Mi Armadura",
"chestplate": "Pechera de Mi Armadura",
"leggings": "Pantalones de Mi Armadura",
"boots": "Botas de Mi Armadura"
},
"ja_jp": {
"helmet": "マイアーマーヘルメット",
"chestplate": "マイアーマーチェストプレート",
"leggings": "マイアーマーレギンス",
"boots": "マイアーマーブーツ"
}
},
"pieces": {
"helmet": { "durability": 363, "defense": 3, "toughness": 1.0, "knockback_resistance": 0.0 },
"chestplate": { "durability": 528, "defense": 8, "toughness": 2.0, "knockback_resistance": 0.1 },
"leggings": { "durability": 495, "defense": 6, "toughness": 1.5, "knockback_resistance": 0.1 },
"boots": { "durability": 429, "defense": 3, "toughness": 1.0, "knockback_resistance": 0.0 }
},
"enchantable": true,
"enchantability": 15,
"piece_effects": {
"helmet": [
{ "effect": "minecraft:night_vision", "amplifier": 0 }
],
"chestplate": [
{ "effect": "minecraft:fire_resistance", "amplifier": 0 }
],
"leggings": [
{ "effect": "minecraft:speed", "amplifier": 0 }
],
"boots": [
{ "effect": "minecraft:jump_boost", "amplifier": 0 }
]
},
"set_bonus": {
"required_pieces": 4,
"effects": [
{ "effect": "minecraft:strength", "amplifier": 1 },
{ "effect": "minecraft:resistance", "amplifier": 0 }
]
},
"texture": {
"mode": "custom",
"armor_layers": {
"layer_1": "models/my_armor/layer_1.png",
"layer_2": "models/my_armor/layer_2.png"
},
"refs": {
"helmet": "item/armor/helmet.png",
"chestplate": "item/armor/chestplate.png",
"leggings": "item/armor/leggings.png",
"boots": "item/armor/boots.png"
}
}
}{
"id": "my_tools",
"type": "tool_set",
"tool_names": {
"en_us": {
"pickaxe": "My Pickaxe",
"axe": "My Axe",
"shovel": "My Shovel",
"hoe": "My Hoe",
"sword": "My Sword"
},
"es_mx": {
"pickaxe": "Mi Pico",
"axe": "Mi Hacha",
"shovel": "Mi Pala",
"hoe": "Mi Azada",
"sword": "Mi Espada"
},
"ja_jp": {
"pickaxe": "マイピッケル",
"axe": "マイ斧",
"shovel": "マイシャベル",
"hoe": "マイ鍬",
"sword": "マイソード"
}
},
"tools": {
"pickaxe": {
"durability": 8000,
"attack_damage": 5.0,
"attack_speed": 1.2,
"mining_speed": 20.0,
"harvest_level": 4,
"held_effects": [
{ "effect": "minecraft:haste", "amplifier": 1 }
]
},
"axe": {
"durability": 7000,
"attack_damage": 8.0,
"attack_speed": 0.9,
"mining_speed": 15.0,
"harvest_level": 4,
"held_effects": [
{ "effect": "minecraft:strength", "amplifier": 1 }
]
},
"shovel": {
"durability": 6000,
"attack_damage": 4.0,
"attack_speed": 1.0,
"mining_speed": 18.0,
"harvest_level": 4
},
"hoe": {
"durability": 5000,
"attack_damage": 3.0,
"attack_speed": 1.0,
"mining_speed": 16.0,
"harvest_level": 4,
"till_radius": 3,
"held_effects": [
{ "effect": "minecraft:regeneration", "amplifier": 0 }
]
},
"sword": {
"durability": 5000,
"attack_damage": 20.0,
"attack_speed": 1.6,
"held_effects": [
{ "effect": "minecraft:strength", "amplifier": 2 }
]
}
},
"enchantable": true,
"enchantability": 22,
"texture": {
"mode": "custom",
"refs": {
"pickaxe": "item/tools/pickaxe.png",
"axe": "item/tools/axe.png",
"shovel": "item/tools/shovel.png",
"hoe": "item/tools/hoe.png",
"sword": "item/tools/sword.png"
}
}
}{
"id": "my_sword",
"type": "sword",
"name": {
"en_us": "My Custom Sword",
"es_mx": "Mi Espada Personalizada"
},
"durability": 1561,
"attack_damage": 5.0,
"attack_damage_bonus": 3.0,
"attack_speed": 1.6,
"enchantable": true,
"enchantability": 10,
"held_effects": [
{ "effect": "minecraft:strength", "amplifier": 1 }
],
"texture": {
"mode": "custom",
"refs": {
"sword": "item/weapons/my_sword.png"
}
}
}| Field | Type | Description |
|---|---|---|
id |
String | Unique identifier. Lowercase letters, numbers, and underscores only. |
type |
String | armor_set, tool_set, or individual tool types (sword, pickaxe, etc.) |
name |
Map | Full item name per language (only for individual tools) |
enchantable |
Boolean | Whether the item can be enchanted |
enchantability |
Int | Higher = better enchantments. Iron = 9, Gold = 25, Diamond = 10 |
| Field | Type | Description |
|---|---|---|
pieces |
Map | Defines each armor piece. Keys: helmet, chestplate, leggings, boots |
pieces.durability |
Int | Durability of this piece |
pieces.defense |
Int | Armor points this piece provides |
pieces.toughness |
Float | Armor toughness per piece. Netherite = 3.0 |
pieces.knockback_resistance |
Float | Knockback resistance. Max is 1.0 (full resistance) |
piece_names |
Map | Full name for each piece per language. Each language defines all four pieces independently. |
piece_effects |
Map | Effects applied when a specific piece is worn individually |
set_bonus |
Object | Effects applied when the required number of pieces are worn |
set_bonus.required_pieces |
Int | Number of pieces needed to activate the bonus |
set_bonus.effects |
List | List of effects to apply when set is complete |
| Field | Type | Description |
|---|---|---|
tools |
Map | Defines each tool. Keys: pickaxe, axe, shovel, hoe, sword |
tools.durability |
Int | Durability of this tool |
tools.attack_damage |
Float | Bonus attack damage |
tools.attack_damage_bonus |
Float | Additional weapon damage (bonus). Added to attack_damage |
tools.attack_speed |
Float | Attack speed. Standard sword = 1.6 |
tools.mining_speed |
Float | Mining speed. Netherite = 9.0, Diamond = 8.0 |
tools.harvest_level |
Int | 0=Wood, 1=Stone, 2=Iron, 3=Diamond, 4=Netherite |
tools.held_effects |
List | Effects applied when this specific tool is held in hand |
tools.till_radius |
Int | (Hoe only) Radius of blocks to till around the target block. 0 = no area tilling |
tool_names |
Map | Full name for each tool type per language. Each language defines all tools independently. |
attack_damage: Weapon's base attack damage.attack_damage_bonus: Additional damage that is added toattack_damage.
Note: For reference, vanilla tools:
- Wooden Sword: 4.0 attack damage
- Stone Sword: 5.0 attack damage
- Iron Sword: 6.0 attack damage
- Diamond Sword: 7.0 attack damage
- Netherite Sword: 8.0 attack damage
| Field | Type | Description |
|---|---|---|
effect |
String | Effect ID in namespace:effect_name format (e.g. minecraft:strength) |
amplifier |
Int | Effect level minus 1. 0 = Level I, 1 = Level II, etc. |
| Field | Type | Description |
|---|---|---|
texture.mode |
String | default, custom, or reference |
texture.refs |
Map | Texture path per piece/tool. For custom: relative path from .minecraft/customgear/. For reference: resource location from another mod. |
texture.armor_layers |
Map | Layer textures for the armor model (layer_1, layer_2). Required for custom and reference modes. If omitted in custom mode, the JSON will be rejected with an error message. In default mode, this field is ignored. |
Uses iron armor/tool textures as placeholders. Good for testing.
"texture": {
"mode": "default"
}Uses your own PNG files. All paths in refs and armor_layers are relative to .minecraft/customgear/.
For armor sets, you must provide:
- armor_layers: Layer textures for the armor model
- refs: Individual texture paths for each armor piece
"texture": {
"mode": "custom",
"armor_layers": {
"layer_1": "models/my_armor/layer_1.png",
"layer_2": "models/my_armor/layer_2.png"
},
"refs": {
"helmet": "item/armor/helmet.png",
"chestplate": "item/armor/chestplate.png",
"leggings": "item/armor/leggings.png",
"boots": "item/armor/boots.png"
}
}For tool sets, one PNG per tool:
- refs: Individual texture paths for each tool
"texture": {
"mode": "custom",
"refs": {
"pickaxe": "item/tools/pickaxe.png",
"axe": "item/tools/axe.png",
"shovel": "item/tools/shovel.png",
"hoe": "item/tools/hoe.png",
"sword": "item/tools/sword.png"
}
}Example file structure:
.minecraft/customgear/
├── models/
│ └── my_armor/
│ ├── layer_1.png
│ └── layer_2.png
├── item/
│ ├── armor/
│ │ ├── helmet.png
│ │ ├── chestplate.png
│ │ ├── leggings.png
│ │ └── boots.png
│ └── tools/
│ ├── pickaxe.png
│ ├── axe.png
│ ├── shovel.png
│ ├── hoe.png
│ └── sword.png
├── armor1.json
├── tool1.json
└── json/
├── armor2.json
├── armors/
│ └── armor3.json
└── tools/
└── tool2.json
JSON files can be placed in any subfolder — CustomGear scans all subfolders automatically.
Reuses textures from another installed mod. All refs must use the full resource location (modid:path/to/texture).
For tool sets:
"texture": {
"mode": "reference",
"refs": {
"pickaxe": "othermod:item/mytool/pickaxe",
"axe": "othermod:item/mytool/axe",
"shovel": "othermod:item/mytool/shovel",
"hoe": "othermod:item/mytool/hoe",
"sword": "othermod:item/mytool/sword"
}
}For armor sets:
"texture": {
"mode": "reference",
"refs": {
"helmet": "othermod:item/myarmor/helmet",
"chestplate": "othermod:item/myarmor/chestplate",
"leggings": "othermod:item/myarmor/leggings",
"boots": "othermod:item/myarmor/boots"
},
"armor_layers": {
"layer_1": "othermod:textures/models/armor/myarmor_layer_1",
"layer_2": "othermod:textures/models/armor/myarmor_layer_2"
}
}Note: To find the correct resource location for a texture from another mod, open the mod's
.jarfile (it's a ZIP) and navigate toassets/<modid>/textures/. The resource location follows the patternmodid:path/within/textures/folderwithout the.pngextension forreferencemode.
| Effect | ID |
|---|---|
| Speed | minecraft:speed |
| Haste | minecraft:haste |
| Strength | minecraft:strength |
| Jump Boost | minecraft:jump_boost |
| Regeneration | minecraft:regeneration |
| Resistance | minecraft:resistance |
| Fire Resistance | minecraft:fire_resistance |
| Night Vision | minecraft:night_vision |
| Water Breathing | minecraft:water_breathing |
| Invisibility | minecraft:invisibility |
| Slow Falling | minecraft:slow_falling |
| Health Boost | minecraft:health_boost |
| Luck | minecraft:luck |
Effects from other mods also work — use their ID in modid:effect_name format.
| Command | Permission | Description |
|---|---|---|
/customgear reload |
OP level 2 | Reloads all JSON files and textures without restarting |
- Item names
- Textures
- Held effects (weapons and tools)
- Piece effects and set bonuses (armor)
- Durability display
- Attack damage and attack speed
- Armor defense, toughness, and knockback resistance
- Mining speed and harvest level
- Adding new items (new JSON files)
- Removing existing items (deleted JSON files)
- Changing item IDs
CustomGear does not add crafting recipes by default. To add recipes, use KubeJS or a similar mod. Item IDs follow the pattern:
- Armor:
customgear:my_armor_helmet,customgear:my_armor_chestplate, etc. - Tools:
customgear:my_tools_pickaxe,customgear:my_tools_sword, etc.
- Minecraft 1.21.1
- NeoForge 21.1.x
- JEI (optional, recommended)
- Compatible with KubeJS for recipes
- Modded enchantments work automatically on enchantable items
- Textures from any installed mod can be referenced with
referencemode
MIT License — see LICENSE file for details.