How to Make an Armor Set

An armor set is a group of pieces that grant set effects while the full set is worn, with optional partial effects for wearing only part of it and an advanced upgrade that unlocks bonus effects. Each set is one YAML file in the /sets/ folder. This page builds one from scratch and explains every part of the config.

Quick start

  1. Create a file in plugins/EcoArmor/sets/, e.g. reaper.yml (copy _example.yml as a starting point). The file name becomes the set ID.

  2. Define the set effects and amount_for_set (how many pieces must be worn for the bonus).

  3. Configure the helmet, chestplate, leggings, boots, and elytra pieces (all five are required).

  4. Run /ecoarmor reload.

  5. Give yourself the set with /ecoarmor give <you> set:reaper and equip it; the set bonus applies once you wear enough pieces.

Naming and IDs

The file name without .yml is the set ID. You use it in commands and in the Item Lookup System (e.g. ecoarmor:set_reaper_helmet).

The structure of an armor set

A set config has six parts:

PartWhat it controls
Set effectsThe bonus that applies when the full set is worn.
Partial effectsWeaker bonuses for wearing only part of the set.
Advanced effects and loreExtra effects and lore unlocked once the set is advanced.
SoundsSounds played on equip, advanced equip, and unequip.
Advancement shardThe item players use to advance the set.
Armor piecesEach piece's item, recipe, lore, tier, and per-piece effects.

Here is a complete set with every part in place:

# === Set effects: the bonus when the full set is worn ===
effects:
  - id: damage_multiplier
    args:
      multiplier: 1.25
    triggers:
      - melee_attack
      - bow_attack
      - trident_attack
amount_for_set: 4 # How many pieces must be worn for the set effects to activate

# === Partial effects: bonuses for wearing only part of the set ===
partialEffects:
  enabled: true # Whether partial effects apply at all
  stacked: false # If true, each tier's effects stack; if false, only the highest matched amount applies
  disabledByFull: false # If true, partial effects switch off once the full set is worn
  amounts:
    2: # Pieces worn needed to trigger this block of effects
      effects:
        - id: damage_multiplier
          args:
            multiplier: 1.15
          triggers:
            - melee_attack
            - bow_attack
            - trident_attack

# === Advanced effects and lore: unlocked once the set is advanced ===
advancedEffects:
  - id: damage_multiplier
    args:
      multiplier: 0.9
    triggers:
      - take_damage
advancedLore: # Lore appended to each piece once it is advanced
  - ''
  - "<gradient:f12711>&lADVANCED BONUS</gradient:f5af19>"
  - "&8» &6Take 10% less damage"
  - "&8&oRequires full set to be worn"

# === Sounds: played on equip, advanced equip, and unequip ===
sounds:
  equip:
    enabled: false # Whether a sound plays when the set is equipped
    sound: "" # Sound key, see https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
    volume: 1
    pitch: 1
  advancedEquip:
    enabled: false
    sound: ""
    volume: 1
    pitch: 1
  unequip:
    enabled: false
    sound: ""
    volume: 1
    pitch: 1

# === Advancement shard: the item that advances the set ===
shard:
  item: prismarine_shard unbreaking:1 hide_enchants # Shard item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
  name: "<GRADIENT:f12711>Advancement Shard:</GRADIENT:f5af19> &cReaper" # In-game name
  lore: # Set to `lore: []` to remove lore
    - "&8Drop this onto &cReaper Armor"
    - "&8to make it <GRADIENT:f12711>Advanced</GRADIENT:f5af19>."
  craftable: false # Whether the shard is craftable
  crafting-permission: "permission" # Optional; permission required to craft this recipe
  recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
    - prismarine_shard
    - ecoarmor:set_reaper_helmet
    - prismarine_shard
    - ecoarmor:set_reaper_chestplate
    - nether_star
    - ecoarmor:set_reaper_leggings
    - prismarine_shard
    - ecoarmor:set_reaper_boots
    - prismarine_shard

# === Armor pieces: one block each for helmet, chestplate, leggings, boots, elytra ===
# All five pieces share the same fields; the helmet is shown here in full.
helmet:
  item: leather_helmet color:#303030 hide_dye # Base item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
  name: "&cReaper Helmet" # In-game name
  advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Helmet" # Name shown once advanced
  lore: # Set to `lore: []` to remove lore
    - "&c&lREAPER SET BONUS"
    - "&8» &cDeal 25% more damage"
    - "&8&oRequires full set to be worn"
    - ''
    - "&fTier: %tier%"
    - "&8&oUpgrade with an Upgrade Crystal"
  advancedLore: [] # Optional; extra lore shown on this piece once advanced, combined with the set-wide advancedLore
  craftable: true # Whether this piece is craftable
  crafting-permission: "permission" # Optional; permission required to craft this recipe
  recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
    - ecoitems:armor_core ? air
    - nether_star
    - ecoitems:armor_core ? air
    - nether_star
    - netherite_helmet
    - nether_star
    - air
    - nether_star
    - air
  defaultTier: default # Tier this piece starts on
  effectiveDurability: 2048 # Optional; scales how quickly the item wears instead of changing real durability
  components: # Optional; vanilla item components: https://minecraft.wiki/w/Data_component_format
    equippable:
      slot: head
      damage_on_hurt: false
  advancedComponents: # Optional; components applied only to the advanced piece, on top of components
    enchantment_glint_override: true
  effects: [] # Effects that run only while this piece is worn
  advancedEffects: [] # Per-piece effects unlocked once advanced
  conditions: [] # Conditions required for this piece's effects to run

Set effects

The set effects are the core of the armor set, the functionality that runs while the full set is worn.

effects:
  - id: damage_multiplier
    args:
      multiplier: 1.25
    triggers:
      - melee_attack
      - bow_attack
      - trident_attack
amount_for_set: 4 # How many pieces must be worn for the set effects to activate

Partial effects

Partial effects reward players for wearing part of a set, before they complete it.

partialEffects:
  enabled: true # Whether partial effects apply at all
  stacked: false # If true, each tier's effects stack; if false, only the highest matched amount applies
  disabledByFull: false # If true, partial effects switch off once the full set is worn
  amounts:
    2: # Pieces worn needed to trigger this block of effects
      effects:
        - id: damage_multiplier
          args:
            multiplier: 1.15
          triggers:
            - melee_attack
            - bow_attack
            - trident_attack

Advanced effects and lore

Advanced effects apply on top of the set effects once every piece has been advanced with a shard. advancedLore is appended to each piece's lore at the same time. To give a piece its own advanced lore, set advancedLore inside that piece's block. By default it is added alongside the set-wide advancedLore; per-piece-advanced-lore in config.yml controls whether it is added or replaces the set-wide lore, and which comes first. Leave it empty (advancedLore: []) to use only the set-wide lore.

advancedEffects:
  - id: damage_multiplier
    args:
      multiplier: 0.9
    triggers:
      - take_damage
advancedLore: # Lore appended to each piece once it is advanced
  - ''
  - "<gradient:f12711>&lADVANCED BONUS</gradient:f5af19>"
  - "&8» &6Take 10% less damage"
  - "&8&oRequires full set to be worn"

Sounds

Optional sounds played as players equip and unequip the set.

sounds:
  equip:
    enabled: false # Whether a sound plays when the set is equipped
    sound: "" # Sound key, see https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Sound.html
    volume: 1
    pitch: 1
  advancedEquip: # Plays when an advanced set is equipped
    enabled: false
    sound: ""
    volume: 1
    pitch: 1
  unequip:
    enabled: false
    sound: ""
    volume: 1
    pitch: 1

Advancement shard

The shard is the in-game item players drop onto a piece to advance it.

shard:
  item: prismarine_shard unbreaking:1 hide_enchants # Shard item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
  name: "<GRADIENT:f12711>Advancement Shard:</GRADIENT:f5af19> &cReaper" # In-game name
  lore: # Set to `lore: []` to remove lore
    - "&8Drop this onto &cReaper Armor"
    - "&8to make it <GRADIENT:f12711>Advanced</GRADIENT:f5af19>."
  craftable: false # Whether the shard is craftable
  crafting-permission: "permission" # Optional; permission required to craft this recipe
  recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
    - prismarine_shard
    - ecoarmor:set_reaper_helmet
    - prismarine_shard
    - ecoarmor:set_reaper_chestplate
    - nether_star
    - ecoarmor:set_reaper_leggings
    - prismarine_shard
    - ecoarmor:set_reaper_boots
    - prismarine_shard

Armor pieces

Each piece (helmet, chestplate, leggings, boots, elytra) has its own block with the same fields, so you can give pieces different items, recipes, lore, and even piece-specific effects. The helmet is shown here; the rest follow the same shape.

helmet:
  item: leather_helmet color:#303030 hide_dye # Base item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
  name: "&cReaper Helmet" # In-game name
  advancedName: "<GRADIENT:f12711>Advanced</GRADIENT:f5af19>&c Reaper Helmet" # Name shown once advanced
  lore: # Set to `lore: []` to remove lore
    - "&c&lREAPER SET BONUS"
    - "&8» &cDeal 25% more damage"
    - "&8&oRequires full set to be worn"
    - ''
    - "&fTier: %tier%"
    - "&8&oUpgrade with an Upgrade Crystal"
  advancedLore: [] # Optional; extra lore shown on this piece once advanced, combined with the set-wide advancedLore
  craftable: true # Whether this piece is craftable
  crafting-permission: "permission" # Optional; permission required to craft this recipe
  recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
    - ecoitems:armor_core ? air
    - nether_star
    - ecoitems:armor_core ? air
    - nether_star
    - netherite_helmet
    - nether_star
    - air
    - nether_star
    - air
  defaultTier: default # Tier this piece starts on
  effectiveDurability: 2048 # Optional; scales how quickly the item wears instead of changing real durability
  components: # Optional; vanilla item components: https://minecraft.wiki/w/Data_component_format
    equippable:
      slot: head
      damage_on_hurt: false
  advancedComponents: # Optional; components applied only to the advanced piece, on top of components
    enchantment_glint_override: true
  effects: [] # Effects that run only while this piece is worn
  advancedEffects: [] # Per-piece effects unlocked once advanced
  conditions: [] # Conditions required for this piece's effects to run

Components

components lets you set any vanilla item component on a piece, using the same structure as vanilla commands - see the Data component format for every component and its fields. This is how you set equippability, tooltips, custom models, durability behaviour, and anything else the game itself supports:

helmet:
  components:
    max_stack_size: 1
    equippable:
      slot: head
      damage_on_hurt: false
    attribute_modifiers:
      - type: "minecraft:armor"
        id: "reaper:helmet_armor"
        amount: 4
        operation: "add_value"
        slot: "head"

Component keys without a namespace are treated as minecraft: components, so no quoting is needed; write "somemod:component" in quotes for anything namespaced. Invalid components are skipped with a warning in the console telling you what's wrong.

minecraft:attribute_modifiers merges with the base item's own modifiers instead of replacing them: a modifier you configure takes over that attribute in that slot, and every attribute you say nothing about keeps the base item's value. So setting armor on a netherite_helmet keeps the helmet's toughness.

advancedComponents is applied on top of components, and only on the advanced piece, so a set can share most of its components and override the few that differ once advanced:

helmet:
  components:
    item_model: "myserver:reaper_helmet"
  advancedComponents:
    item_model: "myserver:reaper_helmet_advanced"
    enchantment_glint_override: true

Internal placeholders

These placeholders are provided by EcoArmor and can be used in piece lore:

PlaceholderValue
%tier%The tier of the armor piece. If the piece has more than one additive tier stacked on it, this lists every distinct applied tier's display name joined by armor-display.tier-list-separator, with repeats of the same tier collapsed per armor-display.tier-stack-format (see Plugin Config) instead of a single name.

Where to go next

  • Tiers: How to Make a Tier for the per-piece attribute modifiers and upgrade crystals.

  • Effects: Configuring an Effect for everything in the effects sections.

  • Default sets: the shipped configs live on GitHub.

  • Community configs: browse and share more on lrcdb.