Skip to content

โ›‘๏ธ Custom Player Armors

Nexo allows for creating fully custom Armor-sets for Players, using EquipmentModels.
The same system also powers Custom Elytras, Custom Mob Armor, Saddles & Harnesses.

How to configure your armor?

Every armor-piece gets a CustomArmor-section with an id.
All items sharing the same id share one EquipmentModel, so the layer-textures only need to be defined once per set.

forest_helmet:
  itemname: "Forest Helmet"
  material: CHAINMAIL_HELMET
  Pack:
    texture: nexo:item/nexo_armor/forest_helmet
  CustomArmor:
    id: forest
    layer1: nexo:item/nexo_armor/forest_armor_layer_1
    layer2: nexo:item/nexo_armor/forest_armor_layer_2
forest_chestplate:
  itemname: "Forest Chestplate"
  material: CHAINMAIL_CHESTPLATE
  Pack:
    texture: nexo:item/nexo_armor/forest_chestplate
  CustomArmor:
    id: forest
forest_leggings:
  itemname: "Forest Leggings"
  material: CHAINMAIL_LEGGINGS
  Pack:
    texture: nexo:item/nexo_armor/forest_leggings
  CustomArmor:
    id: forest
forest_boots:
  itemname: "Forest Boots"
  material: CHAINMAIL_BOOTS
  Pack:
    texture: nexo:item/nexo_armor/forest_boots
  CustomArmor:
    id: forest

layer1 is the texture used for the helmet, chestplate & boots, layer2 the one used for leggings.
It does not matter which item of the set defines them.

Info

If you are unsure how to reference a TextureFile in a NexoItem config;
How do I reference a ResourcePack file in a config?

The Equippable-Component

For the armor to render, the item needs an Equippable-Component pointing at the EquipmentModel.
Nexo fills in anything you did not specify yourself and writes it back into your item-config:

  • slot is taken from the material, so a CHAINMAIL_HELMET gets HEAD.
    If the material is not wearable, like PAPER, the slot is taken from the layer instead.
    Player-armor layers do not imply a slot, so a PAPER based armor-piece needs slot set manually
  • asset_id is set to nexo:<id>, nexo:forest in the example above
  • allowed_entity_types is set from the defined mob-layers, but only for the BODY & SADDLE slots

Anything else the Equippable-Component leaves out, like the equip-sound, is kept from the vanilla material.
Values you do specify are never overridden.

forest_helmet:
  material: PAPER
  CustomArmor:
    id: forest
  Components:
    equippable:
      slot: HEAD
      #asset_id: nexo:forest   # Added by Nexo if not specified

Warning

Do not point asset_id at a vanilla model like minecraft:chainmail.
Nexo would not generate anything for it, and the item would render as normal chainmail

3D Helmets

A helmet using a 3D model does not need a CustomArmor-section.
It only needs an Equippable-Component without an asset_id, so no armor-texture renders underneath the model.

forest_helmet:
  itemname: "Forest Helmet"
  material: CHAINMAIL_HELMET
  Pack:
    model: nexo:item/nexo_armor/forest_helmet
  Components:
    equippable:
      slot: HEAD

Since the helmet is no longer part of the forest set, define layer1 & layer2 on another piece of the set instead.
If the set uses Armor Effects that require a full set, add set: forest to the helmet's armor_effects.

Custom EquipmentModels

Nexo generates the EquipmentModel at assets/nexo/equipment/<id>.json.
If your pack already contains a file at the asset_id path, Nexo leaves it untouched and uses yours instead.

Forest Armor Sets Nexo comes with (Player, Wolf, Horse & Llama)