How to Make a Tier
A tier is a set of attribute modifiers applied to a single armor piece, e.g. extra armor, toughness, or movement speed. Tiers apply per piece, even without the full set, and players move between them with Upgrade Crystals. Each tier is one YAML file in the /tiers/ folder. This page builds one and explains every part.
Quick start
Create a file in
plugins/EcoArmor/tiers/, e.g.netherite.yml(copy_example.ymlas a starting point). The file name becomes the tier ID.Set the
displayname and anyrequiresTiersprerequisites.Fill in the
propertiesfor each piece with the attribute values you want.Run
/ecoarmor reload.Give yourself a crystal with
/ecoarmor give <you> crystal:netherite, drop it onto a piece, and check the piece's stats change.
Naming and IDs
The file name without .yml is the tier ID. You use it in commands and in the defaultTier field of a set config. Crystal items resolve through the Item Lookup System as ecoarmor:upgrade_crystal_<id>.
The structure of a tier
A tier config has three parts:
| Part | What it controls |
|---|---|
| Info | The display name and which tier must come before this one. |
| Upgrade crystal | The in-game item that applies the tier. |
| Properties | The per-piece attribute modifiers the tier grants. |
Here is a complete tier with every part in place:
# === Info: display name and prerequisites ===
display: "&c&lNETHERITE" # In-game tier display name
requiresTiers: # Tiers a piece must already have before this one can be applied
- diamond
# === Upgrade crystal: the item that applies this tier ===
crystal:
item: end_crystal # Crystal item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
name: "&cNetherite Upgrade Crystal" # In-game name
lore: # Set to `lore: []` to remove lore
- "&8Drop this onto an armor piece"
- "&8to set its tier to:"
- "&c&lNETHERITE"
- ''
- "&8&oRequires the armor to already have Diamond tier"
craftable: true # Whether the crystal is craftable
recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
- air
- netherite_ingot
- air
- netherite_ingot
- ecoarmor:upgrade_crystal_diamond
- netherite_ingot
- air
- netherite_ingot
- air
giveAmount: 1 # Optional; how many crystals the recipe yields
# === Properties: per-piece attribute modifiers (helmet shown; repeat per piece) ===
properties:
helmet:
armor: 3 # Armor points (≈8 = netherite; >20 per piece has heavy diminishing returns)
toughness: 3 # Armor toughness (≈3 = netherite; >12 to 15 per piece has little benefit)
knockbackResistance: 1 # Knockback resist 0 to 100 (100 = immune; 40 to 60 ≈ netherite)
speedPercentage: 0 # Move speed % (-50 to +50 recommended)
attackSpeedPercentage: 0 # Attack speed % (-50 to +100; very high values can feel broken)
attackDamagePercentage: 0 # Damage % (-50 to +100; high values trivialize combat)
attackKnockbackPercentage: 0 # Knockback dealt % (-100 to +100; negative = less knockback)
maxHealth: 0 # Extra max health (0 to 40 total across set; +20 = +10 hearts)
attackDamageFlat: 0 # Flat damage bonus (0 to 6; +6 ≈ Sharp V extra)
attackSpeedFlat: 0 # Flat attack speed (0 to 4; base is 4.0, +4 = double speed)
jumpStrength: 0 # Jump strength % (0 to 100; +100 ≈ double jump height)
gravityPercentage: 0 # Gravity % (-80 to +100; negative = floatier, positive = heavier)
burningTimePercentage: 0 # Fire duration % (-100 to +100; -100 = fire immune)
explosionKnockbackResistance: 0 # Explosion knockback resist 0 to 100
oxygenBonus: 0 # Extra oxygen ticks (0 to 600; +300 ≈ +15s underwater)
movementEfficiency: 0 # Slowdown resistance 0 to 100 (100 = ignore soul sand/webs)
safeFallDistance: 0 # Extra safe fall blocks (0 to 20; +3 = vanilla, +10 ≈ 13 blocks)
entityInteractionRangePercentage: 0 # Entity reach % (0 to 100; +50 = noticeably longer)
blockInteractionRangePercentage: 0 # Block reach % (0 to 100; creative ≈ +50)
Info
The info block names the tier and gates it behind a prior tier.
display: "&c&lNETHERITE" # In-game tier display name
requiresTiers: # Tiers a piece must already have before this one can be applied
- diamond
requiresTiers builds a progression: in the example, the Netherite tier can only be applied to a piece that already has the Diamond tier. The default config ships this tier tree as an example:
/-> exotic
default --> iron --> diamond --> netherite --> manyullyn
\-> cobalt --> osmium
ancient --> mythic
Upgrade crystal
The crystal is the in-game item players drop onto a piece to apply this tier.
crystal:
item: end_crystal # Crystal item, see https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system
name: "&cNetherite Upgrade Crystal" # In-game name
lore: # Set to `lore: []` to remove lore
- "&8Drop this onto an armor piece"
- "&8to set its tier to:"
- "&c&lNETHERITE"
- ''
- "&8&oRequires the armor to already have Diamond tier"
craftable: true # Whether the crystal is craftable
recipe: # See https://hub.auxilor.io/wiki/eco/the-item-lookup-system-the-item-lookup-system/recipes
- air
- netherite_ingot
- air
- netherite_ingot
- ecoarmor:upgrade_crystal_diamond
- netherite_ingot
- air
- netherite_ingot
- air
giveAmount: 1 # Optional; how many crystals the recipe yields
Properties
Each piece gets its own attribute block under properties. The helmet is shown here; repeat the same block for chestplate, leggings, boots, and elytra. You can read how vanilla attributes work on the Minecraft Wiki.
properties:
helmet:
armor: 3 # Armor points (≈8 = netherite; >20 per piece has heavy diminishing returns)
toughness: 3 # Armor toughness (≈3 = netherite; >12 to 15 per piece has little benefit)
knockbackResistance: 1 # Knockback resist 0 to 100 (100 = immune; 40 to 60 ≈ netherite)
speedPercentage: 0 # Move speed % (-50 to +50 recommended)
attackSpeedPercentage: 0 # Attack speed % (-50 to +100; very high values can feel broken)
attackDamagePercentage: 0 # Damage % (-50 to +100; high values trivialize combat)
attackKnockbackPercentage: 0 # Knockback dealt % (-100 to +100; negative = less knockback)
maxHealth: 0 # Extra max health (0 to 40 total across set; +20 = +10 hearts)
attackDamageFlat: 0 # Flat damage bonus (0 to 6; +6 ≈ Sharp V extra)
attackSpeedFlat: 0 # Flat attack speed (0 to 4; base is 4.0, +4 = double speed)
jumpStrength: 0 # Jump strength % (0 to 100; +100 ≈ double jump height)
gravityPercentage: 0 # Gravity % (-80 to +100; negative = floatier, positive = heavier)
burningTimePercentage: 0 # Fire duration % (-100 to +100; -100 = fire immune)
explosionKnockbackResistance: 0 # Explosion knockback resist 0 to 100
oxygenBonus: 0 # Extra oxygen ticks (0 to 600; +300 ≈ +15s underwater)
movementEfficiency: 0 # Slowdown resistance 0 to 100 (100 = ignore soul sand/webs)
safeFallDistance: 0 # Extra safe fall blocks (0 to 20; +3 = vanilla, +10 ≈ 13 blocks)
entityInteractionRangePercentage: 0 # Entity reach % (0 to 100; +50 = noticeably longer)
blockInteractionRangePercentage: 0 # Block reach % (0 to 100; creative ≈ +50)
Where to go next
Sets: How to Make an Armor Set to attach tiers to pieces via
defaultTier.Default tiers: the shipped configs live on GitHub.
Commands: Commands and Permissions for giving crystals in-game.