MythicArmors
Wearable 3D armor models for players and mobs, imported straight from Blockbench and rendered through resource-pack core shaders. Supports emissive and dyeable regions, scaled entities, and a 2D fallback for clients that cannot run the shader.
MythicArmors is a premium Paper plugin and requires Java 25 β a stricter runtime than the rest of the Mythic suite, and the usual reason it alone fails to enable. It works standalone; the MythicMobs/Crucible and Nexo integrations are optional. The armor item is ordinary vanilla leather armor carrying an minecraft:equippable component β the plugin supplies the asset the component points at.
How it works
You model armor in Blockbench against a fixed skeleton, drop the .bbmodel into a pack source folder, and reload. MythicArmors generates a resource pack containing core shaders that render your geometry on the wearer. Because the shaders drive the rendering, the armor tracks the player's animation and β since 1.20.5 introduced entity scaling via attributes β correctly follows scaled players and mobs, including naturally small ones like baby zombies and tall ones like wither skeletons.
Setup
- Drop
MythicArmors.jarintoplugins/and restart. Requires Java 25 on a Paper-based server. - Put your
.bbmodelinto a pack source folder βplugins/MythicArmors/models/, orplugins/MythicMobs/<pack>/armors/. - Run
/ma reload. The pack is generated atplugins/MythicArmor/pack.zip(or merged into a pack manager, if configured). - Equip the pack, then
/ma give <player> <armor_name> <chestplate|leggings|boots>.
Start from the official armor.bbmodel template rather than an empty project. It already contains every required bone with correct pivot points β and the pivots must not be moved. Model your shapes into the existing bones instead of building your own hierarchy.
The bone contract
Bones are matched by name. Each limb accepts several aliases, so you can use whichever naming convention you prefer β but it must be one of these:
| Limb | Accepted bone names |
|---|---|
| Body | body, chest, torso |
| Left arm | left_arm, leftarm, arm_l, l_arm |
| Right arm | right_arm, rightarm, arm_r, r_arm |
| Waist | waist, hips |
| Left leg | left_leg, leftleg, leg_l, l_leg |
| Right leg | right_leg, rightleg, leg_r, r_leg |
| Left foot | left_foot, leftfoot, foot_l, l_foot, left_boot, boot_l, left_feet, leftfeet, feet_l, l_feet |
| Right foot | right_foot, rightfoot, foot_r, r_foot, right_boot, boot_r, right_feet, rightfeet, feet_r, r_feet |
Tint, emissive & fallback textures
Three optional companion textures extend a base texture. None of them are applied to the model in Blockbench β they sit alongside the base texture and the plugin reads them by filename suffix.
| Suffix | Purpose | How to make it |
|---|---|---|
_t | Tintable β which pixels can be dyed. | Duplicate the base texture, erase every pixel that should not be tintable. |
_e | Emissive β which pixels glow. | Duplicate the base texture, erase every pixel that should not be emissive. |
_t_e | Both tintable and emissive. | Combine the two conventions in one file. |
_layer_1 | 2D fallback for chestplates and boots. | A flat vanilla-style armor texture. |
_layer_2 | 2D fallback for leggings. | A flat vanilla-style armor texture. |
For a base texture mythical_dragon_armor.png the companions are mythical_dragon_armor_t.png, mythical_dragon_armor_e.png, mythical_dragon_armor_layer_1.png and mythical_dragon_armor_layer_2.png.
The 2D fallback also renders beyond the 3D render distance as a performance measure, controlled by render-distance. So supplying _layer_1/_layer_2 textures improves how your armor looks at range for every player, not just those on unsupported hardware.
Giving the armor
Under the hood every piece is leather armor with an equippable component whose asset_id names your model. That makes it reachable from vanilla, Mythic/Crucible and Nexo alike.
Vanilla commands
Vanilla /give with the equippable component
/give @s minecraft:leather_chestplate[minecraft:equippable={slot:chest,asset_id:"mythicarmor:name_of_your_armor_chest_piece"}]
/give @s minecraft:leather_leggings[minecraft:equippable={slot:legs,asset_id:"mythicarmor:name_of_your_armor_legs_piece"}]
/give @s minecraft:leather_boots[minecraft:equippable={slot:feet,asset_id:"mythicarmor:name_of_your_armor_feet_piece"}]
As a Mythic / Crucible item
plugins/MythicMobs/Items/dragon_armor.yml
name_of_your_armor_chest_piece:
Material: LEATHER_CHESTPLATE
Display: Name of your cool armor
Equippable:
Model: mythicarmor:name_of_your_armor_chest_piece
Slot: CHEST
name_of_your_armor_legs_piece:
Material: LEATHER_LEGGINGS
Display: Name of your cool armor
Equippable:
Model: mythicarmor:name_of_your_armor_legs_piece
Slot: LEGS
name_of_your_armor_feet_piece:
Material: LEATHER_BOOTS
Display: Name of your cool armor
Equippable:
Model: mythicarmor:name_of_your_armor_feet_piece
Slot: FEET
As a Nexo item
plugins/Nexo/items/example.yml
example_chest_piece:
itemname: Example Chestpiece
material: LEATHER_CHESTPLATE
Components:
equippable:
slot: CHEST
asset_id: mythicarmor:example_chest_piece
Configuration
plugins/MythicArmor/config.yml
# Where the resource pack is written.
pack-output: pack
# Delete that folder before each rebuild so removed models leave no files behind.
remove-old-pack: true
# Also write pack.zip next to it.
zip-pack: true
pack-description: MythicArmor 3D armor
# Build the pack on server start.
build-on-enable: true
# 3D armor render distance in blocks; the flat fallback texture shows beyond it.
render-distance: 32
experimental:
# Pack four cube faces per texture instead of two (fewer textures and draw calls).
# Requires 26.2+; breaks armor rendering on 1.21.6 through 26.1.
reduced-draw-calls: false
# Also ride the body carrier box's down face (a 3rd face per body layer):
# fewer textures and draw calls for body-heavy models.
down-slot-packing: true
integrations:
# Register the armor as Nexo items and add the assets to Nexo's pack.
nexo:
enabled: true
# Generate item definitions in plugins/Nexo/items/mythicarmor_generated.yml.
auto-generated-files: true
# Reload Nexo automatically after /mythicarmor reload.
reload: true
# Register the armor as MythicMobs/Crucible items: <namespace>:<set>_<piece>.
mythicmobs:
enabled: false
# Generate item definitions in plugins/MythicMobs/packs/MythicArmor/items/mythicarmor_generated.yml.
auto-generated-files: true
namespace: mythicarmor
Pack sources & merging
MythicArmors reads .bbmodel files from either its own models/ folder or a Mythic pack's armors/ directory, and can hand its generated assets to another pack generator instead of shipping its own zip:
- MythicCrucible can merge MythicArmors' pack automatically β configured either in
plugins/MythicArmors/config.ymlor as an import directory inplugins/MythicMobs/config/config-generation.yml. - Nexo can absorb the resources through the
integrations.nexoblock above.
Two rules the docs give to anyone distributing armor packs:
- Never ship modified plugin configs. If your pack needs a setting changed β the ModelEngine
create-shadercase below being the classic β say so in a README or install instructions. Do not overwrite the user's config files. - Namespace your textures. Blockbench texture names carry into pack generation, so a texture called
texture.pngwill collide with every other pack'stexture.png. Use specific names likesuper_armor_textures1, and set the texture's namespace (blank by default) to match your pack.
Commands & permissions
| Command | Does |
|---|---|
/ma give [player] [armor_name] [chestplate|leggings|boots] | Gives an armor piece. |
/ma reload | Reloads the plugin and regenerates the pack. |
/ma info | Reports loaded armors. |
| Permission | Grants |
|---|---|
mythicarmor.admin | /ma reload |
mythicarmor.give | /ma give |
Compatibility & version notes
MythicArmors is incompatible with external entity core shaders. If ModelEngine is installed, set create-shader: false in plugins/ModelEngine/config.yml. Both the setup guide and the packs page call this out; it is the single most likely conflict on a server running the full Mythic suite.
- macOS, MC 1.21.6 β 26.1 β macOS is capped at OpenGL 4.1 and cannot load the OpenGL 4.6 core shader, so those clients get the 2D fallback instead of 3D armor.
- macOS, MC 26.2+ β macOS clients on Vulkan see the full 3D armor.
experimental.reduced-draw-callsβ requires 26.2+ and breaks armor rendering on 1.21.6 through 26.1. Keep itfalseunless your entire player base is on 26.2+.- Entity scaling works because MC 1.20.5 added attribute-driven scaling (0.01β16); MythicArmors tracks it for scaled players and mobs.
- Runtime β Java 25 on Paper.
Modded shaders. Core shaders do not coexist with OptiFine, Iris or Oculus shader packs, so MythicArmors ships ETF and EMF configuration options to let players using those mods still display 3D armor.
The MythicArmors wiki publishes no changelog, so no plugin-version history is given here. The meaningful compatibility axis for this plugin is the Minecraft version, captured above.
Gotchas
- Java 25 or it will not load.
- Do not move the template's pivot points or invent bone names outside the alias table.
- Companion textures must never be applied to the model β they are read by filename only.
- The pack must actually reach the client. Armor showing as plain leather almost always means the generated pack is not being served or applied.
reduced-draw-callsis a footgun below 26.2 β it does not degrade, it breaks rendering.- Generic texture names collide across packs. Namespace them.