A local web app for creating and managing custom armor resource packs for Minecraft Java Edition. Built for easy deployment to Realms.
python3 app.pyThen open http://127.0.0.1:8420 in your browser.
- Python 3.9+ with Pillow (
pip install Pillow) - Minecraft Java Edition installed (for extracting default textures)
- Create an armour set — pick a name and choose which armor material to reskin (diamond, netherite, iron, gold, copper, chainmail, leather)
- Edit textures — use the built-in pixel editor, upload PNGs, or open the folder in Blockbench
- Build resource pack — packages everything into a correctly structured
.zip - Install locally — one-click copy to your Minecraft
resourcepacks/folder - Upload to Realm — the Realm owner uploads the
.zipso all players see it
| File | Size | What It Controls |
|---|---|---|
humanoid.png |
64x32 | Helmet, chestplate, and boots as worn on the 3D player model |
humanoid_leggings.png |
64x32 | Leggings as worn on the 3D player model |
item_helmet.png |
16x16 | Helmet inventory icon |
item_chestplate.png |
16x16 | Chestplate inventory icon |
item_leggings.png |
16x16 | Leggings inventory icon |
item_boots.png |
16x16 | Boots inventory icon |
Important: Editing item_*.png only changes the inventory icons. To change how armor looks on the player, you must edit humanoid.png and humanoid_leggings.png.
- Resource pack format:
min_format: 77,max_format: 84 - Armor texture path:
assets/minecraft/textures/entity/equipment/humanoid/andhumanoid_leggings/ - The old
pack_format+supported_formatsfields cause "Broken or incompatible" errors - Must use
min_format/max_formatinstead (confirmed by examining the built-in Programmer Art pack)
{
"pack": {
"description": "Your pack description",
"min_format": 77,
"max_format": 84
}
}- Resource pack format:
pack_format: 46 - Armor texture path: Same as 26.1 (
equipment/humanoid/structure)
- Resource pack format:
pack_format: 34(1.21) or lower - Armor texture path (old):
assets/minecraft/textures/models/armor/diamond_layer_1.png(layer_1 = body, layer_2 = leggings) - This app does NOT support pre-1.21.4 texture paths
The pack_format field and structure changed in Minecraft 26.1. We found the correct format by:
- Extracting the built-in Programmer Art resource pack from the Minecraft jar's asset index
- Reading its
pack.mcmetawhich usesmin_format/max_formatinstead ofpack_format - The asset index is at
~/.minecraft/assets/indexes/30.json(for 26.1) - Built-in packs are stored as hashed objects in
~/.minecraft/assets/objects/
Since Minecraft 1.21.4, armor textures moved from the old models/armor/ path to:
assets/minecraft/textures/entity/equipment/humanoid/<material>.png # body (helmet, chest, boots)
assets/minecraft/textures/entity/equipment/humanoid_leggings/<material>.png # leggings
assets/minecraft/textures/item/<prefix>_<piece>.png # inventory icons
Materials: iron, chainmail, diamond, gold, netherite, copper, leather
Note: Gold uses the prefix golden for item textures (e.g., golden_helmet.png).
Leather armor has additional overlay files (leather_overlay.png) used for dye tinting.
- Build the resource pack in the app
- In Minecraft: Realms > Configure > Edit World > Resource Packs > Upload Pack
- Select the
.zipfromworkspace/output/ - All players will be prompted to download it when they join
- Operators cannot upload resource packs to a Realm — only the owner can
- Options: ask the owner to upload, or share the
.zipfor players to install locally - Ownership can be transferred: Realms > Configure > Members > Transfer Ownership
Players can install the pack on their own machine:
- Mac:
~/Library/Application Support/minecraft/resourcepacks/ - Windows:
%appdata%\.minecraft\resourcepacks\ - Linux:
~/.minecraft/resourcepacks/
- 7 armour sets max (one per material) when reskinning vanilla armor via resource packs
- Reskinning replaces the texture globally — all diamond armor looks the same
- Custom 3D armor models require mods (not yet supported)
- Resource packs are client-side; Realm upload requires the owner
minecraft-custom-armour/
app.py # Python backend (HTTP server + API)
static/
index.html # Web UI with built-in pixel editor
workspace/
templates/ # Default textures extracted from MC jar
# Resource packs are created directly in:
~/Library/Application Support/minecraft/resourcepacks/
MyPack/
pack.mcmeta # Pack metadata (auto-generated)
armour_manager.json # Our metadata marker
assets/minecraft/textures/entity/equipment/
humanoid/diamond.png # On-body texture
humanoid_leggings/diamond.png # On-body leggings
assets/minecraft/textures/item/
diamond_helmet.png # Inventory icon
...
The app works directly in Minecraft's resourcepacks/ folder as folder-based packs (not zips).
This means:
- No "build" or "install" step needed
- Edits are saved directly to the resource pack
- Press F3+T in Minecraft to reload textures and see changes instantly
- Use "Export .zip" when you need to share the pack or upload to a Realm
The app works alongside Blockbench:
- Click "Open Folder" on any armour set to reveal the texture files in Finder
- Open the
.pngfiles in Blockbench for advanced editing - Save in Blockbench — the file updates in place
- Rebuild the resource pack in the app to apply changes
- AI-powered texture generation (describe your armor, get textures)
- Custom items via data packs (break the 7-set limit)
- Custom 3D armor models
- One-click deploy to Realm
- Package as a standalone desktop app