Repository navigation
Releases: mattjesmc/ArmorPieces
Release list
0.3.0
The release that turned a set of pieces into a wardrobe. Requires Minecraft 26.2, Fabric Loader 0.19.3 and Fabric API 0.159.0.
Ninety-one pieces
- Seventy-one new ones. Every one of the twelve sockets now has at least six answers, and the six themes reach across the whole suit.
- Among them a family of seven flat visor styles on the
browsocket, whose sights are real openings with your own face behind them rather than paint.
Armor skins
- A third template family beside the socket templates and the fitting templates: a skin is the armor's own texture - what the plate is, rather than what is bolted to it or painted over it. A piece, a trim and a skin are three independent choices on one piece of armor.
- Fourteen ship: plate, mail, gambeson, gothic, milanese, brigandine, scale, lamellar, lorica, varangian, hoplite, samurai, runic and chainmail.
- Each is one greyscale master pair on vanilla's own armor grid, recoloured at load through eight shades taken from that armor material's vanilla texture, so a skinned iron helmet still reads as iron and a modded armor material is skinned for free from the texture it already ships.
- Applied at the advanced smithing table with the piece's own reforging material: re-skinning is re-forging, and it costs the metal the piece is made of. Chainmail armor takes no skin and says so through a tag a pack can disagree with.
- Every skin's template wears its own icon, drawn by the game as the item atlas is built off the skin's own chestplate - so a skin a pack ships gets an icon on the same terms the mod's do.
Cloth
- A fourth layer, after the piece, the trim and the skin. A Tunic or a Tabard over a chestplate, applied with a cloth template and a banner made at a loom, so the heraldry is yours rather than a list the mod maintains.
- It is baked into the armor's own texture rather than hung off it: it moves with the armor, clips nothing, and the plate's rivets and edges read through it. One greyscale cut mask ships the whole feature - no per-material art, no per-banner art.
Found rather than made
- Most pieces now turn up in the chests that suit them. A loot group is one file naming a category of vanilla tables and the tag of pieces found in them; six ship, one per theme - knightly gear in strongholds and trial chambers, beast trophies in bastions, court jewellery in mansions and ancient cities, tidal pieces in shipwrecks and ocean ruins.
- Skins are divided over the same six groups, and a fitting template turns up in every one of them.
- The chance belongs to the table, not to the piece. One pool per table, rolled once: a chest's odds of holding something of ours stay put however many pieces are added. Another piece changes which one you find, never how often.
- Thirty recipes, not ninety-one. A template recipe now ships only where the centre item is plainly the piece or what it is made of - a bell for the bells, a goat horn for the horns. The rest are found.
The advanced smithing table
- A block, crafted from a smithing table, an armor stand and two iron ingots. It holds a whole set worn by a stand that can be turned by dragging, and a box opens out of the piece you pick, listing what it wears.
- A row is one socket, drawn as the socket template that carries the piece with a place after it per fitting; the last row is the piece's own - its trim, its skin and, on a chestplate, its cloth.
- Remove empties whatever is picked - a piece, one of its fittings, the trim, the skin or the cloth - which is the one way any of them is ever taken off, since the smithing table has no ingredient that means "nothing".
- Apply is not a new rule: the slots go to the ordinary smithing recipe lookup, so this mod's recipes and a vanilla trim both run, and a recipe a pack has turned off stays off.
Templates, and turning them off
- One template per fitting. Gemstone, Guard, Inlay and Banner, each with its own look, name and recipe, instead of one template that guessed.
- Any recipe the mod ships can be switched off by overriding its file with
{"type": "armorpieces:disabled"}- a piece that is found rather than made, a server without fittings.
For pack authors
- The Blockbench plugin no longer assumes content lives in this repository: it opens a piece on the vanilla player wearing real armor, paints master, static layer and fitting masks in place, previews any trim material live, and on Save writes every file into your datapack and resource pack - which it makes, finds and zips for you.
- It gained a second workspace for skins, on the same figure with the armor unlocked, and writes the datapack half of one the same way.
- Pieces, skins, cloths and loot groups are all datapack entries: adding any of them takes no Java. The authoring guide covers all four.
Armor decorated before this version reads back exactly as it was written.
0.2.0
A part can take a second material. Requires Minecraft 26.2, Fabric Loader 0.19.3 and Fabric API 0.159.0.
Fittings
- A fitting names a region of a part - a mask beside the master, or a bone of the geometry - and the kind of item that fills it. Four ship:
gemstone,guard,inlayandbanner. - One fitting template covers all of them. At the smithing table the item decides where it goes: a gem to the gemstone, an ingot to the guard, a dye to the inlay, a banner made at a loom to the banner. The template with nothing in the third slot takes every fitting out again.
- The circlet takes a gem in its stone, the sash a dye on its strap and a metal on its buckle, the greaves a dye in their inlay, and the back banner wears a real banner's design, drawn in pattern layers the way a shield wears one.
- Re-applying a part keeps what is set in it: a circlet goes from iron to gold without losing its emerald.
- An effect can be gated on a fitting with
armorpieces:if_fitting, so an emerald in the circlet can mean something. - Fittings are data in
data/<ns>/armorpieces/fitting/over three code types -material,dye,banner- and a mod can add a type the way it adds an effect type. Whatever item fills one also goes in#armorpieces:fitting_additions. - Nothing changes for a part without fittings, on disk or on screen. Armor decorated before this version reads back exactly as it was written.
Blockbench plugin, the datapack half
- Part... on the panel edits the name, the anchors and the fittings list, picked from every fitting definition in the pack and the mod. The panel follows at once.
- New... defines a fitting the pack lacks - material over a tag or ticked materials, dye, or banner on a bone - and writes the file, its language line and any tag on confirm.
- Effects are rows on the same dialog, with fields, ranges, defaults and descriptions parsed out of the built-in records so Java stays the one source of truth. Ids autocomplete from the game jar, and any row can be gated on a fitting.
- Masks are a third edit mode, greyscale like the master and created on first use; the material preview fills each fitting from a dropdown.
- Save writes the data file and the language line and never reformats a file for being opened. Fields the dialog has no control for are written back exactly as read.
Tools
fitting_mask.pypaints masks andsync_decoration_masters.pyinstalls and checks them.preview_material.pybakes masks the way the game does (--fitting gemstone=emerald), lists a part's fittings and the values each takes, and reads packs outside the mod with--pack.check_authoring.pyruns the Blockbench round trip over every shipped part;effect_schema.pyreads the effect records;vanilla_assets.pynow extracts the trim-material registry and tags too./armorpieces stage fittings [<part>]stages every fitting filled with everything the item registry puts in it, one block per fitting.
Docs
- The mod page gains the fitting sections, the
smithing_fittingrecipe type and theif_fittingeffect row. Authoring moved todocs/authoring.md, with the plugin as a feature in its own right. - New gallery: every set in all eleven trim materials, the front row up close, the same rows from behind, and one circlet in seven gems. A header banner and an icon.
Attached: the mod jar, and the same data and assets as standalone datapack and resource pack zips.
0.1.3
Docs. Every claim on the mod page was checked against the code, and four were wrong. Twelve
sockets do not hold one part each: they hold one part at a time, and the twenty parts are spread
unevenly over them, three on back alone. The built-in effects reach four of the five hooks, not
all of them - nothing built in touches Lifecycle. A part is two files and a PNG, plus a line in a
language file, not three files and a PNG. Four stale source comments were corrected to match the
code they describe, including one in DecorationEffect that claimed effects are stripped from the
network codec when ArmorDecoration in fact sends them, and one in ModItems that still counted
ten sockets rather than twelve.
No behaviour changes: comments, modpage.yml and the pages generated from it.
Attached: the mod jar, and the same data and assets as standalone datapack and resource pack zips.
0.1.2
Blockbench plugin. tools/blockbench_plugin/armorpieces.js turns Blockbench into an editor for
parts. A piece opens on the vanilla player wearing real armor, in its own trimmed-down workspace:
one panel holds the piece and anchor selectors, master or static editing, a live material preview,
the walk and sprint poses with a phase slider, and the reference toggles. Painting is kept legal by
construction - colour on the master folds to grey under the brush, the static layer is created on
first use, and strokes over a material preview land on the layer being edited. Cubes are box UV by
construction too: a new or resized cube is laid out in free space on the sheet, its paint moves with
its faces, and the sheet grows when it is full, all inside the same undo step as the edit. The
template recipe is two fields on the same panel, a centre item and a ring item with the game's item
list as autocomplete, written on Save.
Mittens. A twentieth part, on the vambraces socket, and the first made entirely in the plugin.
Animated rigs. The reference rigs now carry the vanilla walk and sprint cycles, baked from the
game's own limb arithmetic, and hang the part under the bone it is attached to so it swings with the
limb and the armor over it. The body, the armor and the cycle are transcribed once, in
tools/mc_humanoid.py; the rig's skin, armor and palette textures come from the game jar via
tools/vanilla_assets.py and are never committed.
Material preview outside the game. tools/preview_material.py is a literal port of the mod's
palette mapping, so a part can be seen in any trim material without a running client. It also
prints the ramps a live editor needs, which is what the plugin composites with.
Attached: the mod jar, and the same data and assets as standalone datapack and resource pack zips.
0.1.1: Ship LICENSE inside the pack zips and the sources jar
The mod jar carried the terms and the two pack zips did not, which had it backwards: a pack zip is already the shape a modpack wants and, unlike the jar, holds no metadata naming its licence, so it is the easiest thing here to re-host and the artifact that most needs the terms inside it. LICENSE now sits at each pack's root beside pack.mcmeta; the game ignores unknown files there. Not renamed the way the jar's copy is - that rename exists because jars get nested and merged and two LICENSE entries would collide, which cannot happen to a pack. The sources jar takes the renamed copy for the same reason the jar does, and it is the artifact that hands over every file the licence governs. All four artifacts verified to carry the file byte-identical to the LICENSE in the repo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ch1zMyEyyA6K3orz3Kx1pe
Initial release.
Armor Pieces 0.1.0 Decorative armor parts for Minecraft 26.2 (Fabric): nineteen parts across twelve sockets, applied at a smithing table like trims and coloured by the same vanilla trim materials. Geometry, textures and behaviour are all data. Includes the authoring tools (Blockbench rigs, grayscale master painters), the grayscale masters that are the source of truth for every part's art, and the generated store pages under dist/. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ch1zMyEyyA6K3orz3Kx1pe