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.

πŸ“Œ Scope note

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

  1. Drop MythicArmors.jar into plugins/ and restart. Requires Java 25 on a Paper-based server.
  2. Put your .bbmodel into a pack source folder β€” plugins/MythicArmors/models/, or plugins/MythicMobs/<pack>/armors/.
  3. Run /ma reload. The pack is generated at plugins/MythicArmor/pack.zip (or merged into a pack manager, if configured).
  4. Equip the pack, then /ma give <player> <armor_name> <chestplate|leggings|boots>.
πŸ’‘ Best practice

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:

LimbAccepted bone names
Bodybody, chest, torso
Left armleft_arm, leftarm, arm_l, l_arm
Right armright_arm, rightarm, arm_r, r_arm
Waistwaist, hips
Left legleft_leg, leftleg, leg_l, l_leg
Right legright_leg, rightleg, leg_r, r_leg
Left footleft_foot, leftfoot, foot_l, l_foot, left_boot, boot_l, left_feet, leftfeet, feet_l, l_feet
Right footright_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.

SuffixPurposeHow to make it
_tTintable β€” which pixels can be dyed.Duplicate the base texture, erase every pixel that should not be tintable.
_eEmissive β€” which pixels glow.Duplicate the base texture, erase every pixel that should not be emissive.
_t_eBoth tintable and emissive.Combine the two conventions in one file.
_layer_12D fallback for chestplates and boots.A flat vanilla-style armor texture.
_layer_22D 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 fallback is not only for macOS

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:

πŸ’‘ Vendor best practice

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-shader case 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.png will collide with every other pack's texture.png. Use specific names like super_armor_textures1, and set the texture's namespace (blank by default) to match your pack.

Commands & permissions

CommandDoes
/ma give [player] [armor_name] [chestplate|leggings|boots]Gives an armor piece.
/ma reloadReloads the plugin and regenerates the pack.
/ma infoReports loaded armors.
PermissionGrants
mythicarmor.admin/ma reload
mythicarmor.give/ma give

Compatibility & version notes

🚧 ModelEngine shader conflict

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.

⚠ Version differences
  • 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 it false unless 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.

πŸ“Œ Note

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

Sources