ElementalArms
Turn your server's weapons and armor into real RPG gear: elemental damage with weaknesses, abilities on items, tiers with random rolls, upgrades, gems and reforging, sets, accessories, crafting stations and health bars above mobs. Everything is set up with a visual in-game editor, and it needs no other plugin.
What it is, in one sentence
ElementalArms adds an RPG layer on top of Minecraft items: every weapon or armor piece can carry stats (damage, crit, dodge, lifesteal…), damage from one or more elements, abilities cast on click or on hit, and a quality (tier) that decides how good each copy turns out. Players get them by crafting, at stations, from mobs or from ores, and improve them with stones and gems.
Everything it brings
How it all fits together
If this is your first time, this is the journey of an item from the moment you define it until a player fights with it:
- You define itIn a file under
items/or with/ea editor: material, name, tier, stats, elements and abilities. - Players get itBy crafting the vanilla recipe, at a station, from a mob or an ore (
drops.yml), from MythicMobs or with/ea give. When it is generated it rolls its stats from its tier. - They equip itIn the hand, in the armor slots or in the accessory slots of
/ea inventory. Its stats start counting. - They fightEvery hit adds the weapon damage, the crit, the elements against the mob's weaknesses and every multiplier. Abilities fire by themselves according to their trigger.
- They improve itWith upgrade stones (+1), gems in its sockets, reforge stones or identification scrolls.
Where do I start?
- Installation: drop the jar, add the licence, done.
- Your first 10 minutes: a guided tour, command by command.
- The editor: create your first item without touching files.
- FAQ: if something does not do what you expect.
Installation
Five minutes. ElementalArms needs no other plugin: MythicMobs, MMOCore and PlaceholderAPI are optional.
Requirements
| What | You need |
|---|---|
| Server | Spigot or Paper (or forks: Purpur, Pufferfish…) |
| Minecraft | 1.21 or newer (tested up to 26.2) |
| Java | 21 or newer |
| Internet | Outgoing internet access to validate the licence (see below) |
| Optional | MythicMobs · MMOCore · PlaceholderAPI |
Step by step
- Put the jar in
plugins/Download it from your panel on the website and drop it in the server'spluginsfolder. - Start the server onceIt creates
plugins/ElementalArms/with the config, the example items and the languages. The console will say it disables itself because there is no licence yet: that is normal. - Paste your licenceOpen
config.ymland put the licence from your panel inlicense: "...". - Choose the languageIn the same file:
language: en(English) orlanguage: es(Spanish). - RestartRestart the server (do not use Bukkit's
/reload). Type/ea help: if you see the command list, you are done.
What is in the folder
plugins/ElementalArms/
config.yml # licence, language and every system
stations.yml # crafting stations and their recipes
MythicMobs-Example.yml # reference only, it is not loaded
lang/en.yml lang/es.yml # every text
items/ # your items: one file per category
sword.yml axe.yml bow.yml crossbow.yml
spear.yml shield.yml armor.yml legendary.yml
misc/ # stones, gems, consumables, accessories
configurations/ # the rules of the system
tiers.yml # qualities and rolls
stats.yml # which stats exist
elements.yml # the 12 elements
sets.yml # armor sets
drops.yml # what mobs and blocks drop
vanilla-recipes.yml # replaced vanilla recipes
lore-formats.yml # order and look of the loreThe licence
The plugin checks the licence against the website every 3 minutes. If the website does not answer, it keeps working for 48 hours (grace period) and warns you in the console; it only disables itself if the outage lasts longer. If the licence is revoked or used on two servers at once, it disables itself right away.
infinity3113.mc-paradise.com.Updating to a new version
Replace the jar and restart. Your files are never overwritten: new options are added by themselves to config.yml and to the language files, with their explanation, and whatever you changed stays as it was. The details of each version are in
Your first 10 minutes
A guided tour to see everything working before you configure anything. Do it as an operator (op) on your test server.
1 · Get a weapon and look at it
/ea give <you> EXCALIBURHover over it in your inventory. The text under the name (the lore) is drawn by the plugin: stats, elemental damage, abilities with their trigger, gem sockets, requirements, durability and the tier at the end. Excalibur is an example that uses almost every system at once.
Stats:
Attack Damage: 12.60
Crit Chance: 15.75%
Elemental Damage:
- ■ Light: 5.0
Abilities:
▸ Fireball (right-click, 5s)
Requirements:
- Level 10
Durability: 1200/1200
✦ Legendary
/xp add <you> 10 levels.2 · Hit a mob
Hit any mob. You will see floating numbers (white for normal damage, gold for a crit, the element's colour for elemental damage) and a health bar above the mob for 6 seconds. Right-click the air: Excalibur casts a fireball where you aim.
3 · Open your equipment and character sheet
/ea give <you> RING_OF_POWER
/ea inventory
/ea statsIn /ea inventory drag the ring into one of the ring slots on the right. Close it and open /ea stats: its damage and crit are now added up, with a breakdown of where every point comes from (gear, set or accessories).
4 · Upgrade the weapon
/ea give <you> UPGRADE_STONE 3
/ea give <you> PRECISION_GEMIn your inventory, pick up the stone with the mouse and click on Excalibur. It goes to +1 and all its stats grow by 8%. Do the same with the gem: it goes into one of its sockets and adds crit. It is the same gesture for stones, gems, reforging and identification.
5 · Create your own item
- Open the editor
/ea editorand choose the Swords category. - Create a new oneClick the Create New Item star and type an ID in chat, for example
FROST_BLADE. - Shape itSet id to
DIAMOND_SWORD, set Attack Damage to 8, open Elemental Damage and give it 6 ice. In Item Abilities addfreezewith the on hit trigger. - SaveClick Save Changes (the green dye). If you do not save, the changes are lost on restart.
- Try it
/ea give <you> FROST_BLADEand hit a mob: it slows it down and the ice damage shows in blue.
6 · Place a station
Place a smithing table, look at it and type /ea station place FORGE. The Blacksmith's Forge hologram appears with particles. Right-click: it opens with its recipes. Only that table opens the station; every other table in the world stays normal.
Items
An ElementalArms item is an entry in a YAML file. Here is every field it can have, and what it really does.
Where they live
The plugin reads every .yml in items/ and in items/misc/. You can create new files with any name (for example items/boss-loot.yml). Each top-level key is one item, and that key is its ID: what you type in /ea give, in recipes and in drops.
frost_blade and FROST_BLADE are the same) and must be unique across all files: if one is repeated, the second one is ignored and the console says so. Subfolders other than misc/ are not read.A complete item, commented
FROST_BLADE: # the ID
id: DIAMOND_SWORD # Minecraft material
display-name: '&bFrost Blade' # name, with & colours
type: SWORD # category (see table)
tier: RARE # or RANDOM, or use tier-pool
revision-id: 1 # raise it to update copies
stats:
damage: 8.0 # hit damage
attack-speed: 1.6 # final speed, like vanilla
crit-chance: 10 # 10%
crit-damage: 50 # +50% on a crit
elemental-damage:
ice: 6.0 # added to every hit
abilities:
- ability: freeze
trigger: ON_HIT
chance: 25 # 25% of hits
cooldown: 4
duration: 3
max-sockets: 2 # gem sockets
max-upgrade: 10 # max upgrade (+N)
durability: 1500 # uses before breaking
soulbound: true # binds to one player
hand-style: ONE_HANDED # or TWO_HANDED
set: GUARDIAN # a set from sets.yml
requirements:
level: 20
permission: 'myserver.frostblade'
class: Mage # needs MMOCore
custom-model-data: 1001 # resource pack texture
lore:
- '&7Forged in eternal winter.'Every field
| Field | What it does |
|---|---|
id | The Minecraft material (DIAMOND_SWORD, BLAZE_ROD…). If it does not exist, it becomes stone. |
display-name | Visible name. Supports & colours. The tier colour goes in front and the (+N) after. |
type | Category: decides where it is equipped and how its stats count. See the types table. |
tier | Fixed quality (COMMON…MYTHIC) or RANDOM to roll it among all of them. |
tier-pool | List of tiers to roll from, for example [RARE, EPIC, LEGENDARY]. |
stats | The stats. Any of the 89 in the Stats section. |
elemental-damage | Extra damage of each element on every hit (fire: 5, ice: 3…). |
abilities | List of abilities with their trigger and settings. See Abilities. |
lore | Your own description lines (added to the lore the plugin generates). |
set | The set it belongs to (from sets.yml). Only counts on worn armor pieces. |
max-sockets | Gem sockets. Inserted gems cannot be taken out. |
max-upgrade | Maximum upgrade level of this item. If missing, upgrade.max-level (10) is used. |
durability | Custom durability: 1 point per melee hit. The item becomes unbreakable in vanilla terms. |
soulbound | true: binds to the first player who picks it up (or uses it) and nobody else can use it. |
consumable | true: one unit is used up when it casts a right-click ability (potions, scrolls). |
requirements | level, permission and/or class needed to attack with it, use it or cast its abilities. |
hand-style | TWO_HANDED: while you hold it, the off hand empties itself. |
color | Leather only: dye colour ('#A06540', '160,101,64' or RED). If the player dyes it, their colour is kept. In the editor, the Leather Colour button. |
custom-model-data | Model number from your resource pack (ItemsAdder, Oraxen, Nexo or your own pack). |
revision-id | Version number of the item. Raise it and the copies players already have update when they join. |
skill-modifiers | Bonus for skills of other plugins that hook in through the API (it does not affect ElementalArms abilities). |
gem-stats | Only on type: GEM items: the stats it gives to the item it is socketed into. |
smithing-upgrade | ID of the item it turns into at the smithing table with a netherite ingot. |
The types
| Type | Where it counts | Notes |
|---|---|---|
| SWORD · AXE · SPEAR · WAND | In the main hand | attack-speed is the final speed (1.6 = vanilla sword). |
| BOW · CROSSBOW | The arrow carries the bow's stats | Damage depends on how far you draw the bow. In melee they barely hurt. |
| SHIELD | In either hand | In the off hand it also adds its stats (defense, block…). |
| ARMOR | In its armor slot | The slot comes from the material (_HELMET, _CHESTPLATE, _LEGGINGS, _BOOTS). It adds nothing in the hand. |
| RING · AMULET · NECKLACE · TALISMAN | In its /ea inventory slot | 2 rings, 1 amulet, 1 necklace, 1 talisman. In the hand they give nothing. |
| ACCESSORY | In any accessory slot | The wildcard. |
| GEM | Inside another item | Uses gem-stats. |
| MISC | Nowhere | Materials, stones, scrolls and consumables. |
Translated names
The name and lore from the YAML can be overridden per language in lang/<language>.yml, in the items section. That way the same item is called Frost Blade in English and Hoja de Escarcha in Spanish without duplicating it:
items: # in lang/es.yml
FROST_BLADE:
name: '&bHoja de Escarcha'
lore:
- '&7Forjada en el invierno eterno.'Changing an item players already have
Every copy stores its stats inside. If you change the YAML, new copies get the new values, but old ones do not change by themselves. To update them, raise revision-id (for example from 1 to 2): when each player joins, their copies are rebuilt from the new YAML keeping their roll, upgrade, gems, durability and owner. In config.yml → item-revision.keep-data you decide whether enchantments, an anvil name and lore lines are kept too.
Included items
A fresh install ships 58 items ready to use or to copy as templates:
| Group | ID |
|---|---|
| Swords and axes | WOODEN_ · STONE_ · IRON_ · GOLDEN_ · DIAMOND_ · NETHERITE_ + SWORD / AXE |
| Armor | LEATHER_ · CHAINMAIL_ · IRON_ · GOLDEN_ · DIAMOND_ · NETHERITE_ + HELMET / CHESTPLATE / LEGGINGS / BOOTS |
| Ranged and shield | BOW · CROSSBOW · TRIDENT · SHIELD |
| Legendaries | EXCALIBUR · STORM_STAFF · VOID_CHESTPLATE |
| Upgrading | UPGRADE_STONE · REFORGE_STONE · IDENTIFY_SCROLL |
| Gems | FIRE_GEM · VITALITY_GEM · GUARD_GEM · PRECISION_GEM |
| Consumables | HEALTH_POTION · FURY_ELIXIR · METEOR_SCROLL · ESCAPE_SCROLL |
| Accessories | RING_OF_POWER · RING_OF_VITALITY · SHADOW_AMULET · DRAGON_TALISMAN |
Tiers and rolls
The tier is the quality of a copy: it gives it a colour, a name and, above all, how good its numbers turn out.
The tiers it ships with
| Tier | Weight | Roll | Glows on the ground |
|---|---|---|---|
| COMMON | 50 | ×0.95 – ×1.05 | No |
| UNCOMMON | 25 | ×0.95 – ×1.10 | Green |
| RARE | 14 | ×0.95 – ×1.15 | Blue |
| EPIC | 7 | ×1.00 – ×1.25 | Purple |
| LEGENDARY | 3 | ×1.05 – ×1.40 | Gold |
| MYTHIC | 1 | ×1.15 – ×1.60 | Pink |
How a roll works
When a copy is generated, every stat is multiplied by a random number between its tier's min and max. Each stat rolls separately: a sword can come out with high damage and low crit. The result is rounded to two decimals and stored in the item forever.
| Rolls | Does not roll |
|---|---|
The plugin's own stats (crit, dodge, lifesteal…) and damage, armor, armor-toughness, max-health, max-absorption. | Attack and movement speed, size, gravity, reach and the other movement attributes; elemental damage and gem stats. |
Fixed, random or from a list
# always RARE
tier: RARE
# any of them, by weight: COMMON shows up 50 times more than MYTHIC
tier: RANDOM
# only among these three, also by weight
tier-pool: [RARE, EPIC, LEGENDARY]When it rolls
- With
/ea give, when crafting a replaced vanilla recipe, at a station, in a drop fromdrops.ymlor MythicMobs. - When using a reforge stone: it re-rolls the stats within the same tier (the tier does not change).
- At the smithing table (diamond → netherite) the roll comes from the original copy, so removing and re-adding the ingot does not give a new one.
tier: RANDOM comes out without a tier. To test rolls, use /ea give.Creating or editing a tier
ANCIENT: # the tier ID
weight: 2 # relative chance in RANDOM
display-name: 'Ancient'
color: '&3' # colour of the name and the glow
glow: true # false, a colour (AQUA) or a code (&b)
stat-roll:
min: 1.10
max: 1.50Save items/configurations/tiers.yml and use /ea reload. The tier name can also be translated in lang/<language>.yml → tier.
The 89 stats
Everything an item can give a player, with what it really does and its cap. You write them on the item under stats:.
How to write them
stats:
damage: 8 # plain number
crit-chance: 25 # percentage: 25 = 25%
max-health: 3 # hearts: 3 = 6 health points
movement-speed: 0.01 # vanilla attribute: added to its base (0.1)- Percentages: chance, bonus and resistance stats are written as whole numbers.
25is 25%, not 2500%. - Negatives: allowed.
movement-speed: -0.02on heavy armor makes you slower. - Caps: the plugin clamps the stats that would break the game (dodge at 80%, resistances at 90%…). You can go over on the item, but the effect stops there.
Where they count
Every stat is added up from everything the player has equipped. Having the same thing twice counts twice.
| Place | What counts |
|---|---|
| Main hand | Weapons, shields, tools and consumables. Not armor, accessories or gems: holding a ring gives nothing. |
| Worn armor | The 4 pieces. |
| Off hand | Only a SHIELD type item. |
| Accessories | The 5 slots of /ea inventory. |
| Sets | The set bonuses for the pieces you wear. |
| Gems | Inside the item they are socketed into: they count wherever that item counts. |
/ea stats.Two kinds of stats
With an upgrade (+N) or the tier roll, every plugin stat grows; among attributes only damage, armor, armor-toughness, max-health and max-absorption grow.
⚔️ Offense (21)
| Stat | What it does | Cap |
|---|---|---|
damageAttack Damage | Hit damage. On a weapon it is its base damage; on armor, accessories or sets it is added to all your hits. | vanilla |
attack-speedAttack Speed | On a weapon it is the final speed, as vanilla shows it (1.6 = sword). On other gear it is added. | vanilla |
crit-chanceCrit Chance | Chance to crit on hits with ElementalArms weapons (melee and arrows). | 100 % |
crit-damageCrit Damage | Extra damage on a crit: 50 = ×1.5. Without this stat a crit does not hit harder (you only see the gold number). | — |
armor-penetrationArmor Penetration | You ignore that % of the defense of the player you hit. | 100 % |
executeExecute | +% damage to targets on low health (30% or less by default, stats.execute-threshold). | — |
lifestealLifesteal | Heals you for that % of the final damage of your melee hits. Not with abilities (that is spell-vamp). | — |
attack-knockbackAttack Knockback | How far your hits push. | vanilla |
sweeping-damageSweeping Damage | Sword sweep damage (0–1 of the hit damage). | vanilla |
accuracyAccuracy | Takes points off the dodge-chance of the player you attack. The antidote to dodge. | — |
backstabBackstab | +% when hitting the target from behind. | — |
first-strikeFirst Strike | +% on your first hit on a target (it counts again after 30 s without hitting it). | — |
combo-damageCombo Damage | +% for each hit in a row. The combo is lost after 4 s without hitting. | 10 hits |
double-strikeDouble Strike | Chance to hit twice in melee; the second hit deals half. | 100 % |
damage-vs-playersDamage vs Players | +% against players (PvP). | — |
damage-vs-mobsDamage vs Mobs | +% against mobs (PvE). | — |
damage-vs-undeadDamage vs Undead | +% against zombies, skeletons, phantoms, the wither… | — |
ranged-damageRanged Damage | +% with projectiles. | — |
melee-damageMelee Damage | +% in melee. | — |
berserkBerserk | +% that grows with your missing health: at half health it gives half; at full health, nothing. | — |
elemental-powerElemental Power | +% to all the elemental damage you deal. | — |
🛡️ Defense (20)
| Stat | What it does | Cap |
|---|---|---|
max-healthBonus Health | Extra hearts (1 = 2 health points). | vanilla |
defenseDefense | Takes that much damage off every hit or projectile you receive, before armor. It does not protect from falls, fire or the void. | — |
armorArmor | Armor points. | vanilla |
armor-toughnessArmor Toughness | Armor holds up better against big hits. | vanilla |
knockback-resistanceKnockback Resistance | You get pushed less (1 = not at all). | vanilla |
max-absorptionAbsorption Shield | Maximum absorption you can have, in health points. | vanilla |
explosion-resistanceExplosion Resistance | Explosions push you less. | vanilla |
burning-timeBurning Time | Multiplies how long you burn (below 1, shorter). | vanilla |
dodge-chanceDodge Chance | Chance to dodge a whole hit or projectile. The attacker's accuracy lowers it. | 80 % |
thornsThorns | Returns that % of the damage taken to whoever hits you in melee. | — |
crit-resistanceCrit Resistance | Cuts that % of the extra damage of crits against you. | 100 % |
block-chanceBlock Chance | With your shield raised, chance to block the whole hit. | 80 % |
counter-damageCounter Damage | When you block, returns that % of the blocked hit. | — |
damage-capDamage Cap | The most damage a single hit from any source can deal to you. | — |
ranged-resistanceRanged Resistance | −% projectile damage. 100 = immune. | 100 % |
melee-resistanceMelee Resistance | −% melee damage. 100 = immune. | 100 % |
magic-resistanceMagic Resistance | −% damage from ElementalArms abilities. | 80 % |
tenacityTenacity | Negative effects (poison, slowness, blindness, wither…) last less on you. Infinite ones do not. | 80 % |
second-windSecond Wind | Chance to survive a lethal hit with 1 health and 2 s of invulnerability. Once every 120 s. | 100 % |
health-regenHealth Regen | Health points recovered every second (1 = half a heart). | — |
second-wind cooldown is changed by adding second-wind-cooldown-seconds: 120 inside stats: in config.yml.🔥 Elemental resistances (12)
One per element: resist-fire, resist-water, resist-earth, resist-wind, resist-light, resist-dark, resist-poison, resist-holy, resist-lightning, resist-ice, resist-nature and resist-arcane. Each one removes that % of the damage of that element dealt to you, capped at 90%. In the editor they have their own menu (Elemental Resistances).
✨ Abilities and mana (10)
| Stat | What it does | Cap |
|---|---|---|
ability-damageAbility Damage | +% to the damage of your native abilities. | — |
ability-crit-chanceAbility Crit Chance | Chance for an ability to crit: it uses your crit-damage, or +50% if you have none. | 100 % |
ability-rangeAbility Range | +% to how far click abilities can aim. | — |
aoe-radiusAoE Radius | +% to the radius of all your area abilities. | 24 blocks |
cooldown-reductionCooldown Reduction | −% waiting time between abilities. | 80 % |
spell-vampSpell Vamp | Heals you for that % of your ability damage. The mage's lifesteal. | — |
max-manaMax Mana | Your own mana pool. Without max-mana you have no mana and abilities with a cost are free. | — |
mana-regenMana Regen | Mana recovered every second. | — |
mana-stealMana Steal | Mana recovered on every hit you land (not with abilities). | — |
mana-cost-reductionMana Cost Reduction | −% mana cost of abilities. | 90 % |
🧰 Utility (9)
| Stat | What it does | Cap |
|---|---|---|
xp-boostXP Boost | +% to the experience you pick up. | — |
loot-luckLoot Luck | Multiplies the chance of drops.yml drops: 5% with 50 luck becomes 7.5%. | — |
keep-item-chanceKeep Item Chance | When you die, each item stack has that chance not to drop; it is given back when you respawn. | 100 % |
hunger-savingHunger Saving | Chance not to lose hunger. | 90 % |
durability-savingDurability Saving | Chance not to spend vanilla durability (not the plugin's custom durability). | 90 % |
repair-rateRepair Rate | Repairs that many vanilla durability points every 5 s on your hand and armor. | — |
magnet-rangeMagnet Range | Dropped items within that distance fly to you. | 12 blocks |
smelt-touchSmelt Touch | Chance that what you mine drops smelted (iron, gold, copper, sand, stone, clay…). It respects Fortune and protected regions. | 100 % |
taming-luckTaming Luck | When you tame an animal, chance to get the item you used back. | 90 % |
🏃 Movement and exploration (17, vanilla)
All of them are Minecraft attributes: the number is added to the player's base. In brackets, the vanilla base so you know how much is a lot.
| Stat | What it does |
|---|---|
movement-speed | Walking speed (0.1: +0.01 = +10%). |
jump-strength | Jump height (0.42). |
safe-fall | Blocks you can fall without damage (3). |
fall-damage | Fall damage multiplier (1): negative means less. |
step-height | Height you step up without jumping (0.6). |
gravity | Gravity (0.08): negative makes you floatier. |
sneak-speed | Sneaking speed (0.3). |
movement-efficiency | Speed on soul sand, honey and the like (0). |
flying-speed | Flying attribute of flying mobs; it does not change a player's flight. |
scale | Body size (1). |
mining-speed | Mining efficiency with the right tool (0). |
block-break-speed | Block breaking speed (1). |
submerged-mining | Mining speed underwater (0.2). |
swim-speed | Movement in water (0). |
oxygen | Extra air underwater (0). |
entity-reach | Reach to hit entities (3). |
block-reach | Reach to place and break blocks (4.5). |
lang/<language>.yml → stat-name. How they all combine in a hit: Combat.How a hit is calculated
The exact order in which ElementalArms decides how much damage a hit deals. If a number does not add up, this is where to look.
Melee hit with an ElementalArms weapon
- Can they use it?If the player does not meet the requirements, the weapon is bound to another soul or its durability is 0 in
UNUSABLEmode, the hit is cancelled. - Base damageThe weapon's
damage(with its roll, upgrade and gems) + thedamagefrom the rest of your gear (armor, accessories, set). All of it is scaled by the attack charge: spam-clicking hits less, and vanilla's falling crit, Sharpness and Strength still count. - Crit
crit-chance(from all your gear) is rolled. If it hits, the physical part is multiplied by 1 +crit-damage/100. If the target is a player, theircrit-resistancecuts the extra. - ElementsEach element from the weapon and the rest of your gear is added separately: damage × target weakness × charge × (1 +
elemental-power) × (1 − the victim's resistance to that element). - MultipliersAll of the above is multiplied by 1 + the sum of: vs players/mobs, ranged/melee, undead, berserk, backstab, first strike and combo. Then
executemultiplies separately if the target is low on health. - Victim's defenseIf the victim is a player:
dodge-chance(minus youraccuracy) andblock-chancecan cancel the hit;ranged/melee-resistancereduce it;defense(minus yourarmor-penetration) subtracts. - MinecraftVanilla armor, toughness, Protection and the Resistance effect apply on top of that number, as always.
- Last safeguards
damage-caplimits the hit andsecond-windcan save from death. - After the hitLifesteal, thorns, mana steal, double strike,
ON_HIT/WHEN_DAMAGEDabilities and durability use.
An example with numbers
A sword with damage: 8, crit-chance: 25, crit-damage: 50 and fire: 5. The player wears a ring with damage-vs-mobs: 20. They hit a mob weak to fire (fire=1.5) at full charge:
| Step | No crit | With a crit |
|---|---|---|
| Physical | 8 | 8 × 1.5 = 12 |
| Fire | 5 × 1.5 = 7.5 | 5 × 1.5 = 7.5 |
| Sum | 15.5 | 19.5 |
| × 1.20 vs mobs | 18.6 | 23.4 |
Other kinds of damage
| Damage | What changes |
|---|---|
| Arrow from an ElementalArms bow | Uses the bow's stats as they were when it was shot (upgrade and gems included), scaled by how far you drew it. Counts as ranged. Hitting with the bow in hand deals 0.1. |
| Fist or vanilla weapon | Minecraft sets the damage. There is no ElementalArms crit, but gear elemental damage, multipliers, defense and lifesteal still apply. |
| Ability | Its damage × ability-damage, ability crit, magic-resistance and spell-vamp. From the multipliers it only uses the "against whom" ones (players, mobs, undead), berserk and execute. It does not trigger double strike, combo, lifesteal or mana steal. |
| Thorns, counter, double strike | They arrive already calculated: they are not multiplied again, they do not raise the combo or use durability, and they do not bounce again. |
| Fall, fire, lava, void, drowning | defense, dodge and block do not touch them. damage-cap and second-wind do. |
The floating numbers
- White: weapon damage. Gold with CRIT!: a crit.
- Element colour: elemental damage. ▲ the target is weak to it, ▼ it resists it.
- Blue with ✦: ability damage. You will also see Dodge!, Block!, x2 and Second Wind!.
Turn them off with damage-indicators.enabled: false. With show-all: false they only show on hits with ElementalArms weapons. The texts are in lang/<language>.yml → indicator.
Elemental damage
Twelve elements that are added to hits. Mobs can be weak or resistant to each one, and players protect themselves with resistances.
| Key | Name | Key | Name |
|---|---|---|---|
fire | ■ Fire | light | ■ Light |
water | ■ Water | dark | ■ Darkness |
earth | ■ Earth | poison | ■ Poison |
wind | ■ Wind | holy | ■ Holy |
lightning | ■ Lightning | nature | ■ Nature |
ice | ■ Ice | arcane | ■ Arcane |
1 · Giving an item elemental damage
FLAME_SWORD:
id: DIAMOND_SWORD
type: SWORD
stats:
damage: 7
elemental-damage:
fire: 5 # added to every hit
lightning: 2 # it can have severalIn game: /ea editor → the item → Elemental Damage → click the element and type the number (0 removes it). It grows with upgrades (+8% per level).
2 · Making a mob weak or resistant
Weaknesses are set on MythicMobs mobs with the elementalWeakness mechanic. One number per element decides what it is:
| Number | The mob takes | Mark |
|---|---|---|
| 2.0 | double of that element | ▲ weak |
| 1.5 | +50 % | ▲ weak |
| 1.0 | the normal amount | — |
| 0.5 | half | ▼ resists |
| 0 | nothing: immune | ▼ resists |
# plugins/MythicMobs/Mobs/IceGoblin.yml
IceGoblin:
Type: ZOMBIE
Display: '&bIce Goblin'
Health: 40
Skills:
- elementalWeakness{fire=1.75;ice=0.25} @self ~onSpawn # the @self ~onSpawn is required!elemental-damage, the weakness does nothing. With the sword above: 7 physical + 5 × 1.75 fire = 15.75.The mechanic also answers to setWeakness and eaWeakness. The ▲ / ▼ marks show in the mob's health bar if health-bars.show-elements is on. Vanilla mobs have no weaknesses.
3 · Protecting players
Players do not use the mechanic: they use the resist-<element> stats on their gear (capped at 90%). And elemental-power raises all the elemental damage they deal.
stats:
resist-fire: 25 # takes 25% less fire
elemental-power: 20 # +20% to all their elemental damageAdding or renaming elements
Elements live in items/configurations/elements.yml (key: name with colour). If you add one (blood: '&4■ Blood'), it works in the editor, the MythicMobs mechanic and the health bar. Its player resistance would be resist-blood; add it to stats.yml too so it shows in the editor. The name per language is translated in lang/<language>.yml → elements.
Abilities
Effects an item casts by itself: on click, on hit, when damaged or on kill. There are 20 native ones, and you can use any MythicMobs skill.
Step by step: your first ability
- Open the item
/ea editor→ category → the item → Item Abilities button (the fire charge). - Add itAdd Ability (the star) and pick one from the list. It is added with example values and its settings open.
- Choose when it firesThe Triggered by lever cycles: right-click → left-click → on hit → when damaged → on kill.
- Tune the numbersClick each setting (cooldown, chance, mana, damage…) and type the value in chat.
removeputs it back to default. - SaveGo back to the editor and click Save Changes. If you do not save, it is lost on restart.
In the file
abilities:
- ability: fireball
trigger: RIGHT_CLICK # when
cooldown: 5 # seconds to wait (0 by default)
chance: 100 # chance in % (100 by default)
mana: 10 # mana cost (0 = free)
damage: 8 # the ability's own settings
speed: 1.5
- ability: lifesteal
trigger: ON_HIT
chance: 30
percent: 25The 5 triggers
| Trigger | When | Which items fire it | Target |
|---|---|---|---|
RIGHT_CLICK | Right-click in the air or on a block | The one in the main hand | What you aim at |
LEFT_CLICK | Left-click in the air or on a block | The one in the main hand | What you aim at |
ON_HIT | When you hit or land a projectile | Main hand + accessories | The one you hit |
WHEN_DAMAGED | When you take a hit or projectile | Main hand + armor + accessories | The attacker (you, if it was a projectile) |
ON_KILL | When you kill something | Main hand + accessories | Where it died |
How clicks aim: the entity in your crosshair; if there is none, the block you look at; if you look at the air, the end of the ray. The reach is the largest range of the item's click abilities (30 by default) × ability-range.
The 20 native abilities
In brackets, the value used if you do not set it. radius: with a focused target only that target is affected; aiming at the air or a block, everything alive within that radius is affected.
| ID | What it does | Settings |
|---|---|---|
fireball | Launches a fireball where you look. It damages what it hits, or within a radius if it hits a block. | damage (6) · speed (1) · max-range (0 = sin límite) · radius (2) · yield (0) · incendiary (0) |
heal | Heals you instantly. | amount (4) |
lifesteal | Heals you for a % of the damage of the hit that fired it. Use it with ON_HIT. | percent (25) |
explosion | Explosion at the aimed point. | power (2) · break-blocks (0) |
lightning | Lightning where you aim; it damages the target or everything around. | damage (5) · radius (2.5) |
aoe_damage | Area damage around the target or the aimed point. | damage (5) · radius (4) |
poison | Poisons. | duration (5) · level (1) · radius (2) |
wither | Wither effect. | duration (5) · level (1) · radius (2) |
blind | Blinds. | duration (4) · level (1) · radius (2) |
freeze | Slowness (freezes). | duration (4) · level (2) · radius (2) |
ignite | Sets on fire. | duration (4) · radius (2) |
shield | Gives you absorption. | duration (10) · level (2) |
speed | Gives you speed. | duration (10) · level (1) |
strength | Gives you strength. | duration (10) · level (1) |
regeneration | Gives you regeneration. | duration (8) · level (1) |
resistance | Gives you damage resistance. | duration (8) · level (1) |
knockback | Knocks the target far away. | power (1.5) · height (0.4) · radius (2) |
pull | Pulls the target towards you. | power (1) · radius (2) |
leap | Launches you forward. | power (1.2) · height (0.5) |
teleport | Teleports you to the last free spot in the direction you look (never inside a wall). | range (10) |
duration is in seconds and level 1 = level I. aoe-radius makes the radius bigger (24-block cap) and ability-damage the damage. When you add one from the editor, example values are written (trigger RIGHT_CLICK, cooldown 5…) that you can change.MythicMobs skills
abilities:
- ability: mythic:IceNova # the name of your skill
trigger: RIGHT_CLICK
cooldown: 12
mana: 30It is cast from the player, with the target if there is one. Trigger, cooldown, chance and mana work the same; damage settings go inside the MythicMobs skill. Without MythicMobs installed, the console warns and nothing happens.
Cooldowns, mana and consumables
- Cooldown: every ability on every item has its own. On clicks, the action bar says how long is left.
cooldown-reductionshortens it (80% cap). - Mana: with MMOCore, its mana is spent. Without MMOCore, ElementalArms' own mana: the maximum comes from your gear's
max-manaand refills withmana-regen. A player withoutmax-manacasts for free. - If it fails: if the ability does not actually cast (for example a teleport with no free spot), it spends no mana and starts no cooldown.
- Consumables: with
consumable: true, the item uses up one unit each time it casts a right-click ability (potions, scrolls). - Vanilla use: if an item casts an ability on right-click, its normal use is cancelled (a pearl is not thrown, a potion is not drunk). Change it in
abilities.cancel-vanilla-use. - Requirements: if the player does not meet the item's requirements, it is bound to someone else or unidentified, nothing fires with any trigger.
/ea debug and click: chat tells you what happens (on cooldown, chance failed, no mana, requirements…).Improving items
Four ways to improve an item you already have, all with the same gesture: pick up the stone with the mouse and click on the item in your inventory.
⬆️ Upgrade (+N)
- Each level adds 8% of the base stats (not compounding): +10 = +80%. Plugin stats, elemental damage and
damage,armor,armor-toughness,max-health,max-absorptiongrow. Gems do not. - The maximum is
upgrade.max-level(10) or the item'smax-upgrade. The level shows in the name: Excalibur (+3). upgrade.success-chance(100 by default) lets it fail: on failure the stone is used up and the level does not rise (it never drops).- It works on everything except materials (
MISC) and gems.
♻️ Reforge
Rolls every stat again with the range of its tier (the tier does not change). It can come out better… or worse. It only works on items with a tier. With reforge.keep-upgrade-level: true it keeps the +N.
◆ Gems and sockets
- Give the item sockets
max-sockets: 2in its file (or Gem Sockets in the editor). They show in the lore as empty ◇. - Create the gemAn item with
type: GEMand its stats ingem-stats. - Socket itPick up the gem and click on the item. It fills one socket and its stats are added for good.
FROST_GEM:
id: PRISMARINE_CRYSTALS
display-name: '&b◆ Frost Gem'
type: GEM # required
gem-stats:
resist-ice: 10
crit-chance: 3📜 Unidentified items
A drop with unidentified: true (in drops.yml) drops hidden: named ✦ Unidentified item, only its quality shows and it gives no stats, does not hit with them and casts no abilities. Click a scroll on it to reveal it, keeping the roll it already had.
Which item is which
All four are normal ElementalArms items (in items/misc/stones.yml and gems.yml). You can change how they look or use others: the ID that is consumed is set in config.yml (upgrade.stone-item, reforge.stone-item, identify.scroll-item). Any type: GEM item is a gem.
Durability, binding and requirements
The rules you can put on an item so it is not for anyone and does not last forever.
🔧 Custom durability
durability: 800 # uses before breaking- It spends 1 point per melee hit with the item in hand. Abilities and bounces do not spend it.
- The item becomes unbreakable in vanilla terms and the lore shows Durability: 640/800. Below 15% (
custom-durability.warn-below-percent) it warns. - At 0, depending on
custom-durability.on-zero:BREAKbreaks and disappears;UNUSABLEstays but cannot hit, shoot or cast abilities.
durability-saving and repair-rate act on vanilla durability, not on this one.🔒 Soulbound
soulbound: true- It binds to the first player who picks it up (
soulbound.bind-mode: PICKUP) or uses it (USE). The lore says 🔒 Bound to Steve. - Nobody else can pick it up, hit with it, wear it or cast its abilities (
prevent-use-by-others), and its owner cannot drop it (prevent-drop). - If the owner dies it drops like any item, but only they can pick it up again.
📋 Requirements
requirements:
level: 20 # experience level (or MMOCore level)
permission: 'rank.knight' # a permission
class: Warrior # MMOCore classIf they are not met, the player cannot attack with the item, use it or cast its abilities, and gets a warning. The lore lists them under Requirements:.
| Requirement | Where it comes from |
|---|---|
level | MMOCore level if installed; otherwise vanilla experience level. requirements.level-source: NONE turns it off. |
permission | Your permissions plugin (LuckPerms…). |
class | MMOCore (or another plugin hooked through the API). With none, it does not block. |
soulbound or only give it to that rank.✋ Two-handed
hand-style: TWO_HANDED: while you hold it, whatever is in your off hand goes back to your inventory (or the ground if it does not fit), and /ea inventory locks the off hand and the shield.
Equipment, accessories and sets
/ea inventory puts everything you wear in one menu and adds 5 accessory slots. /ea stats adds it all up and tells you where each point comes from.
The equipment menu
- Drag your gear into its slot: each slot only accepts its own kind and tells you why if something does not fit.
- Minecraft limits: the elytra and the chestplate use the same real slot, as do the shield and the off hand. Only one of each pair can be filled; the other shows as locked with the reason.
- With a two-handed weapon, the off hand and the shield are locked.
- Accessories are saved with the player: they stay equipped after leaving and joining. Their stats and abilities (
ON_HIT,WHEN_DAMAGED,ON_KILL) work while they are in their slot.
| Slot | Accepts |
|---|---|
| Ring 1 and 2 | RING · ACCESSORY |
| Amulet | AMULET · ACCESSORY |
| Necklace | NECKLACE · ACCESSORY |
| Talisman | TALISMAN · ACCESSORY |
texture-pack.enabled: true and the menu is drawn with a leather-and-gold RPG frame. Without the pack it works the same on the normal grey background. Turn it all off with accessories.enabled: false.The character sheet
/ea stats (or the button in the equipment menu) shows your health, damage and protection at the top, and below that offense, defense and mobility with the gear / accessories / set breakdown of each stat. On the side, an icon with your total elemental damage, another with the rest of your plugin stats and another with the active set bonuses.
Armor sets
A set gives extra stats depending on how many of its pieces you wear. Bonuses stack: with 4 pieces you get the 2-piece and the 4-piece bonus.
- Define the setIn
items/configurations/sets.yml, with its piece thresholds. - Mark the piecesPut
set: FROSTon each armor piece (or Armor Set in the editor). - Reload
/ea reload. When the pieces are put on, chat says ✦ Set active: Frost Guard (2).
FROST:
display-name: '&bFrost Guard'
bonuses:
2: # with 2 pieces
stats:
defense: 4
resist-ice: 20
4: # with 4 (added to the 2-piece one)
stats:
max-health: 5
movement-speed: 0.01
elemental-power: 15sets.notify: false. The plugin ships DRAGON (the diamond armor) and GUARDIAN as examples.How items are obtained
Three ways to make them: stations with their own recipes, the usual crafting table recipes and the smithing table.
🔨 Crafting stations
A station is a recipe menu placed on one exact block in the world, with a hologram and particles. Three come included: FORGE, ALTAR (arcane altar) and JEWELER.
- Place the blockAny block works (a smithing table looks good for the forge).
- Turn it into a stationLook at it (6 blocks or less) and type
/ea station place FORGE. - Use itRight-click opens the recipes. While sneaking, the block works as normal. Each recipe shows the ingredients you have (green) and those missing (red).
- Remove itLook at it and
/ea station remove. They are saved instations-placed.yml.
Creating a station
# stations.yml
RUNE_TABLE:
display-name: '&dRune Table'
block: LODESTONE # only for block-mode: ANY
permission: 'server.runes' # empty = everyone
hologram:
enabled: true
lines:
- '&d✦ {name}'
- '&7Right-click to open'
particles:
enabled: true
type: ENCHANT # see the list in stations.yml
recipes:
- result: FROST_BLADE # ElementalArms ID
amount: 1
ingredients:
- item: DIAMOND_SWORD # an ElementalArms item
amount: 1
- material: BLUE_ICE # a vanilla material
amount: 16- The result comes with its tier roll: every craft is different.
- Ingredients are taken from the backpack and hotbar, never from worn armor or the off hand. A vanilla
materialdoes not accept an ElementalArms item of the same material. - Up to 45 recipes per station. A recipe with an item that does not exist is skipped and the console warns.
| stations.block-mode | Where right-click opens it |
|---|---|
PLACED | Only on blocks placed with /ea station place (recommended). |
ANY | On any block of its block type (every smithing table in the world). |
NONE | Never: only with /ea station <id>. |
/ea station <id> opens a station without walking to its block, so it needs the elementalarms.station.command permission (op only by default). Give it to whoever should open stations from anywhere.🧱 Replaced vanilla recipes
With vanilla-crafting.replace-recipes: true, crafting a normal sword, axe, bow, shield or armor piece at the crafting table gives the ElementalArms version, with its roll. Netherite recipes are removed: netherite is obtained at the smithing table. Everything is decided in items/configurations/vanilla-recipes.yml:
recipes:
iron_sword: # Minecraft recipe name
item: IRON_SWORD # your item
shape: ["P", "P", "S"]
ingredients: { P: IRON_INGOT, S: STICK } # or a group: wood, stone
remove: # recipes that are only removed
- netherite_sword/ea reload; a recipe you took out of remove only comes back after a restart.⚒️ Smithing table
Netherite upgrade template + an ElementalArms diamond item + netherite ingot = its netherite version. It keeps the upgrade (+N), gems, owner, enchantments and an anvil name. The new roll is fixed for that item: removing and re-adding the ingot does not give another one.
MY_DIAMOND_BLADE:
id: DIAMOND_SWORD
smithing-upgrade: MY_NETHERITE_BLADE # what it turns intoThe included diamond swords, axes and armor already know what to become. An ElementalArms item with no netherite version cannot be upgraded (so you do not lose the ingot on something that would stay diamond).
Mob and block drops
Make vanilla mobs and blocks drop ElementalArms items, with their roll, in items/configurations/drops.yml.
mobs:
ZOMBIE: # Minecraft entity type
- item: IRON_SWORD
chance: 3 # % (0-100)
WITHER_SKELETON:
- item: DIAMOND_SWORD
chance: 4
unidentified: true # drops unidentified
worlds: [world_nether] # only in these worlds
blocks:
DIAMOND_ORE: # block material
- item: PRECISION_GEM
chance: 5
amount: 1 # amount (1 by default)| Field | What it does |
|---|---|
item | Item ID (/ea list). |
chance | Chance in %. The player's loot-luck multiplies it. |
amount | How many drop. |
unidentified | true = a scroll is needed to see and use its stats. |
worlds | List of worlds. Without it, all of them. |
player-only | true (default) = only if a player kills it. |
Anti-farming rules
- A block placed by a player drops nothing when broken (
drops.ignore-placed-blocks), so an ore mined with Silk Touch cannot be placed and broken forever. - If the block drops nothing with that tool (a diamond ore by hand), it does not drop the item either. Never in creative.
- Protected regions (WorldGuard and the like) are respected: if the break is cancelled, nothing drops.
MythicMobs drops
For MythicMobs mobs use their own drop table with the elementalarms drop (also eaItem or ea). It comes with tier and roll, just like from drops.yml:
Drops:
- elementalarms{item=EXCALIBUR} 1 0.05 # 5%
- elementalarms UPGRADE_STONE 2 0.25 # short form: 2 stones, 25%The in-game editor
/ea editor creates and changes items with menus, without opening a single file. Everything you do here ends up written in items/.
cancel leaves without changing anything.1 · Categories
Inside a category, items are sorted by tier (COMMON to MYTHIC) and by ID, 45 per page. The Create New Item star (bottom right) creates a new one in that category.
2 · Creating an item
- Type its IDNo spaces and not already taken (
FROST_BLADE). It is created right away as stone, tier COMMON, in its category's file (items/sword.yml,items/misc/accessories.yml…). - Change the materialClick id and type a Minecraft material (
DIAMOND_SWORD). - Fill in the restName, tier, stats, elements, abilities, lore… (see the menu below).
- SaveSave Changes. Until you save, changes only exist in memory.
3 · An item's menu
| What | How to change it |
|---|---|
| Properties | Always in the same order: id, display-name, type, tier, set, durability, max-sockets, max-upgrade, soulbound, consumable, custom-model-data, requirements and revision-id. soulbound and consumable toggle with one click; the rest are typed. |
| Stats | First the ones the item already has (green), then the rest (grey). Each one explains what it does. Type the number; 0 removes it. |
| Abilities | List: click to configure, right-click to remove. See Abilities. |
| Lore | Add Line and type the line (with & colours). Clicking a line deletes it. |
| Elements and resistances | A menu with the 12 elements: click and type the value. |
| Leather colour | Only on leather pieces: 16 dyes, a colour typed by hand (#A06540, 160,101,64), a random one or washing it off, with a preview. |
/ea give.4 · Configuring an ability
For each setting type a number, or remove so it uses its default. The list of settings of each ability is in Abilities.
Skill amplifiers
Skill Amplifiers has nothing to do with the item's abilities: it stores a bonus for skills of other plugins that read it through the API (ElementalArmsAPI.getSkillModifier). If no plugin uses it, it does nothing and the menu says so.
Health bars and visual effects
Everything you see without opening a menu: the bar above mobs, damage numbers, the glow of items on the ground and station holograms. None of it needs another plugin or is saved into your world.
💚 Health bar above mobs
▉▉▉▉▉▉▉▉▉▉ 28/40
■ Fire ▲x1.75 · ■ Ice ▼
It appears when you hit a mob and hides itself after 6 seconds. Below it shows the mob's elemental weaknesses (▲ and how much) and resistances (▼).
| Option (health-bars.) | What it does |
|---|---|
mode | on-hit when hit (recommended) or always always visible near players. |
hide-after-seconds | Seconds visible after the last hit (6). |
style | solid ▉▉▉ · hearts ❤❤❤ · framed [▮▮▯] · thin ━━━ · pips ■■□ · numbers ❤ 14/20 |
segments | Bar segments (3–20). |
show-name · show-numbers · show-elements | Name on top, 14/20 beside it, element line below. |
color-by-health | Green → yellow → red with health (false = always red). |
background · scale · height-offset | Dark panel behind, text size (0.2–3) and extra height. |
view-distance · max-bars | Distance it is seen from (32) and max bars at once (60), against lag. |
ignore-players · only-hostile · min-max-health · blacklist | Filters: no bar for players, hostile only, only mobs with at least this max health, and excluded types. |
avoid-duplicate-name | Hides the mob's own name tag while the bar is up (including the one you see when aiming at it). |
respect-mythicmobs-healthbar | If a MythicMobs mob draws its own bar, the ElementalArms one only shows name and elements. |
Options): Nameplate: Enabled: false. Or set show-name: false so MythicMobs draws the name.✨ Damage numbers
The numbers that pop up on hits. What each colour means: Combat.
🌟 Glow on the ground
An ElementalArms item lying on the ground glows with its tier's colour, so you can spot a legendary from afar. COMMON does not glow by default. Change it per tier with glow in tiers.yml (false, a colour like GOLD or a code '&6'; only the 16 Minecraft colours) and turn it all off with ground-glow.enabled: false.
🏷️ Station holograms
Every placed station has its floating text and particles, set in stations.yml (hologram and particles). See Crafting.
🖼️ Custom textures
custom-model-data: 1001 on an item uses model 1001 from your resource pack (ItemsAdder, Oraxen, Nexo or your own pack). Leather pieces are dyed with color. The ElementalArms resource pack (in your downloads panel) only adds the RPG frame of the equipment menu (texture-pack.enabled).
Commands and permissions
A single command, /ea (also /elementalarms and /earms). /ea help only shows what each player can use.
| Command | Permission | What it does |
|---|---|---|
/ea help | Everyone | The command list. |
/ea inventory | Everyone | Your equipment and accessories menu. Aliases: inv, equipo, accessories, acc. |
/ea stats | Everyone | Your character sheet. |
/ea station <id> | elementalarms.station.command | Opens a station without walking to its block (and respects the station's permission). |
/ea station place <id> | elementalarms.admin | Turns the block you look at into a station. |
/ea station remove | elementalarms.admin | Removes the station from the block you look at. |
/ea editor | elementalarms.admin | Opens the item editor. |
/ea give <jugador> <ítem> [cantidad] | elementalarms.admin | Gives an item with its roll. What does not fit drops on the ground. Works from the console. |
/ea list | elementalarms.admin | The IDs of every loaded item. |
/ea fix [jugador] [force] | elementalarms.admin | Cleans stuck attributes (health that does not go back to normal). force removes every health modifier and restores the base. |
/ea debug | elementalarms.admin | Shows in chat what happens with abilities on each click. |
/ea reload | elementalarms.admin | Reloads config, items, stations, languages, bars, holograms and recipes. |
Permissions
| Permission | Default | Grants |
|---|---|---|
elementalarms.admin | op | All admin commands. Includes elementalarms.station.command. |
elementalarms.station.command | op | Opening stations by command, without walking to the block. |
| Each station's own | — | The permission in stations.yml: who can use that station. |
| Each item's own | — | requirements.permission: who can use that item. |
/ea reload is not needed after saving in the editor. After editing by hand: yes. Three things only change with a restart: turning drops, stations or ground glow on or off, and bringing back a vanilla recipe you had removed.Placeholders
With PlaceholderAPI installed they register by themselves. Use them in scoreboards, TAB, holograms or menus.
| Placeholder | Returns |
|---|---|
%elementalarms_stat_<stat>% | The total of that stat across all gear, same as in combat. E.g. %elementalarms_stat_crit-chance% → 25. |
%elementalarms_set% | Name of the worn armor's set, or None. |
%elementalarms_tier% | Tier of the item in hand. |
%elementalarms_upgrade% | Upgrade level of the item in hand (0 if none). |
%elementalarms_durability% | Custom durability of the item in hand (empty if none). |
%elementalarms_item% | ID of the item in hand (empty if it is not an ElementalArms item). |
Integrations
ElementalArms works on its own. If you have any of these plugins, it detects them on startup and adds what they bring; there is nothing to turn on.
| Plugin | What it enables |
|---|---|
| MythicMobs | Elemental weaknesses and resistances on your mobs, ElementalArms item drops in their tables, mythic:Skill abilities on items and respect for their health bar. |
| MMOCore | MMOCore level and class for requirements, and its mana for ability costs. |
| PlaceholderAPI | The %elementalarms_…% placeholders. See Placeholders. |
| ItemsAdder · Oraxen · Nexo | Custom textures with custom-model-data. |
| WorldGuard (y similares) | Its regions are respected: auto-smelt and block drops give nothing if the break is cancelled, and teleport counts as an ender pearl. |
MythicMobs step by step
The file plugins/ElementalArms/MythicMobs-Example.yml has all of this commented. Summary:
# plugins/MythicMobs/Mobs/FireImp.yml
FireImp:
Type: BLAZE
Display: '&6Fire Imp'
Health: 60
Skills:
- elementalWeakness{water=2;ice=1.5;fire=0} @self ~onSpawn # weak to water, immune to fire
Drops:
- elementalarms{item=FIRE_GEM} 1 0.3 # 30% to drop the gem
Nameplate: # at the mob's ROOT, not in Options
Enabled: falseMore about weaknesses in Elements; about skills on items, in Abilities.
MMOCore
requirements.leveluses the MMOCore level instead of the experience level.requirements.classcompares with the MMOCore class (its ID or name).- Ability
manais taken from MMOCore mana; ElementalArms' own mana (max-mana) is no longer used. - MMOCore does not give abilities to items: native abilities or MythicMobs do that.
config.yml, option by option
Every option with its default value. New options in each version are added to your file by themselves without touching what you changed.
General
| Option | Default | What it does |
|---|---|---|
license | "" | Your licence from the panel. |
language | en | Language: the lang/<code>.yml file. |
damage-indicators.enabled | true | Floating damage numbers. |
damage-indicators.show-all | true | Also for fists, vanilla weapons, mobs, falls and abilities. false = ElementalArms weapons only. |
health-bars.* | … | Health bar above mobs (see Bars and effects). |
vanilla-crafting.replace-recipes | true | The recipes in vanilla-recipes.yml give ElementalArms items. |
ground-glow.enabled | true | Tier-coloured glow on the ground. |
texture-pack.enabled | false | RPG frame for the equipment menu (only if players have the pack). |
accessories.enabled | true | Equipment menu and accessory slots. |
Items
| Option | Default | What it does |
|---|---|---|
item-revision.keep-data.enchantments | true | When revision-id goes up, keep enchantments. |
item-revision.keep-data.display-name | true | …and a name the player set on an anvil. |
item-revision.keep-data.lore | false | …and added lore lines starting with kept-lore-prefix (&7). |
requirements.enabled | true | Use requirements. |
requirements.level-source | VANILLA | VANILLA (experience) or NONE. With MMOCore its level is used. |
soulbound.enabled | true | Soulbound items. |
soulbound.bind-mode | PICKUP | PICKUP on pickup or USE on use. |
soulbound.prevent-drop | true | The owner cannot drop it. |
soulbound.prevent-use-by-others | true | Nobody else can use, wear or pick it up. |
custom-durability.enabled | true | Custom durability (durability:). |
custom-durability.warn-below-percent | 15 | Low durability warning. |
custom-durability.on-zero | BREAK | BREAK breaks, UNUSABLE becomes useless. |
Systems
| Option | Default | What it does |
|---|---|---|
abilities.enabled | true | Item abilities. |
abilities.cancel-vanilla-use | true | A right-click ability cancels the item's normal use. |
sets.enabled | true | Armor sets. |
sets.notify | true | Chat notice when a set turns on or off. |
upgrade.enabled | true | Upgrade stones. |
upgrade.stat-increase-per-level | 0.08 | Increase per level (0.08 = +8% of the base). |
upgrade.max-level | 10 | Max level unless the item says otherwise. |
upgrade.stone-item | UPGRADE_STONE | ID of the item used as the stone. |
upgrade.success-chance | 100.0 | Success chance. |
reforge.enabled | true | Reforge stones. |
reforge.stone-item | REFORGE_STONE | Reforge stone ID. |
reforge.keep-upgrade-level | true | Keep the +N when reforging. |
identify.enabled | true | Unidentified items. |
identify.scroll-item | IDENTIFY_SCROLL | Scroll ID. |
gems.enabled | true | Gems and sockets. |
drops.enabled | true | drops.yml tables (restart). |
drops.ignore-placed-blocks | true | Blocks placed by players drop nothing. |
stats.execute-threshold | 30 | % health below which execute counts. |
stats.second-wind-cooldown-seconds | 120 | second-wind cooldown (not written by default; add it to change it). |
stations.enabled | true | Crafting stations (restart). |
stations.block-mode | PLACED | PLACED, ANY or NONE. |
The other files
| File | What for | Section |
|---|---|---|
items/*.yml | Your items | Items |
tiers.yml | Qualities and rolls | Tiers |
stats.yml | Which stats exist and their default name | Stats |
elements.yml | The elements | Elements |
sets.yml | Armor sets | Equipment |
drops.yml | Mob and block drops | Drops |
stations.yml · vanilla-recipes.yml | Stations and recipes | Crafting |
lore-formats.yml | Order and look of the lore | below |
lang/*.yml | Every text | below |
How the lore looks
In lore-formats.yml, the format list decides the order of the lore blocks: move the lines and the item is drawn in that order (a block you delete from the list is drawn at the end). entries decides how they look: titles, the format of each stat (stat_entry.crit-chance…), which stats show % (percent-stats) and the separator bar. Existing items are redrawn when their revision-id goes up.
#stats# · #elements# · #skill_modifiers# · #abilities# · #sockets# · #set# · #requirements# · #hand_style# · #durability# · #lore# · #soulbound# · #tier#Languages
Everything the player sees is in lang/en.yml and lang/es.yml: messages, menus, stat names, elements, tiers, abilities, and even each item's name and lore (items). Your changes are kept when updating and new keys are added by themselves. Another language? Copy en.yml as fr.yml, translate it and set language: fr; anything missing shows in English.
Updating from older versions
Replace the jar and restart. You do not need to delete anything or touch your files.
- BackupSave the
plugins/ElementalArmsfolder, just in case. - Replace the jarDelete the old jar from
plugins/, put the new one and restart (not/reload). - DoneNew options appear in
config.ymland in the language files. Players' items are rebuilt when they join if needed, keeping roll, upgrade, gems, durability, owner and enchantments.
1.2.0: IDs switch to English
Since 1.2.0 the items and stations that come with the plugin have English IDs. If you already had the plugin, it does not affect you: ElementalArms never overwrites your items/*.yml, stations.yml or drops.yml, so you keep the old IDs and everything works the same (the smithing table recognises both). Only a new install gets the new ones.
| Before | Since 1.2.0 |
|---|---|
ESPADAMADERA · ESPADAPIEDRA · ESPADAORO | WOODEN_SWORD · STONE_SWORD · GOLDEN_SWORD |
ESPADAHIERRO · ESPADADIAMANTE · ESPADANETHERITE | IRON_SWORD · DIAMOND_SWORD · NETHERITE_SWORD |
HACHA + MADERA/PIEDRA/ORO/HIERRO/DIAMANTE/NETHERITE | WOODEN_ / STONE_ / GOLDEN_ / IRON_ / DIAMOND_ / NETHERITE_AXE |
CASCO · PECHERA · PANTALON · BOTAS + CUERO/MALLA/HIERRO/ORO/DIAMANTE/NETHERITE | LEATHER_ / CHAINMAIL_ / IRON_ / GOLDEN_ / DIAMOND_ / NETHERITE_ + HELMET / CHESTPLATE / LEGGINGS / BOOTS |
ARCO · BALLESTA · TRIDENTE · ESCUDO | BOW · CROSSBOW · TRIDENT · SHIELD |
BASTONTORMENTA · ARMADURAVACIO | STORM_STAFF · VOID_CHESTPLATE |
PIEDRAMEJORA · PIEDRAREFORJA · PERGAMINOIDENT | UPGRADE_STONE · REFORGE_STONE · IDENTIFY_SCROLL |
GEMAFUEGO · GEMAVIDA · GEMAGUARDIA · GEMAPRECISION | FIRE_GEM · VITALITY_GEM · GUARD_GEM · PRECISION_GEM |
POCIONVIDA · POCIONFURIA · PERGAMINOFUEGO · PERGAMINOESCAPE | HEALTH_POTION · FURY_ELIXIR · METEOR_SCROLL · ESCAPE_SCROLL |
ANILLOPODER · ANILLOVIDA · AMULETOSOMBRA · TALISMANDRAGON | RING_OF_POWER · RING_OF_VITALITY · SHADOW_AMULET · DRAGON_TALISMAN |
FORJA · JOYERO | FORGE · JEWELER |
EXCALIBUR and ALTAR do not change. If you want the new items on an old server, the safe way is to create a clean test folder, copy the items you like from it and give them an ID you do not have yet.Developer API
To hook another plugin into ElementalArms. Add the jar as a compileOnly dependency and softdepend: [ElementalArms] in your plugin.yml. Everything is in com.infinity3113.elementalarms.api.ElementalArmsAPI.
| Method | What for |
|---|---|
isCustomItem(ItemStack) · getItemId(ItemStack) | Know whether an item is an ElementalArms item and its ID. |
setManaProvider(ManaProvider) | Let your RPG plugin charge (consume) and refund (refund) ability mana. |
setPlayerLevelProvider(…) · setPlayerClassProvider(…) | Provide the player's level and class for requirements. |
consumeMana · refundMana · resolvePlayerLevel · resolvePlayerClass | Use the same thing ElementalArms uses. |
getSkillModifiers(ItemStack) · getSkillModifier(ItemStack, skillId) | Read an item's Skill Amplifiers to apply them to your skills. |
setSkillNameProvider(SkillNameProvider) | Nice names and the skill list for the amplifiers editor. |
Example: mana from your plugin
ElementalArmsAPI.setManaProvider(new ElementalArmsAPI.ManaProvider() {
@Override public boolean consume(Player p, double amount) {
if (MyRpg.getMana(p) < amount) return false;
MyRpg.setMana(p, MyRpg.getMana(p) - amount);
return true;
}
@Override public void refund(Player p, double amount) {
MyRpg.setMana(p, MyRpg.getMana(p) + amount);
}
});Damage from your skills
If your plugin deals damage on behalf of a player holding an ElementalArms weapon, mark the player with the ea:skill_damage metadata while you apply the damage. That way ElementalArms does not recalculate it as a weapon hit and treats it as ability damage.
player.setMetadata("ea:skill_damage", new FixedMetadataValue(myPlugin, true));
try {
target.damage(12.0, player);
} finally {
player.removeMetadata("ea:skill_damage", myPlugin);
}Frequently asked questions
The most common questions, with a straight answer.
I changed an item and players still have the old one
Raise its revision-id (1 → 2). When players join, their copies are rebuilt keeping roll, upgrade and gems. Copies in chests update once the player carries them and joins again.
My MythicMobs mob's weakness does nothing
Two causes: the weapon has no elemental-damage (the weakness only multiplies elemental damage), or the mechanic is missing @self ~onSpawn.
An ability does not fire
Use /ea debug and try again: it tells you if it is on cooldown, the chance failed, mana is missing or the player does not meet the requirements. Remember that an unidentified item casts nothing and that ON_HIT comes from the weapon in hand or accessories, not armor.
CRIT! shows but the damage is the same
crit-damage is missing. crit-chance decides whether there is a crit; crit-damage decides how much harder it hits (50 = ×1.5).
A player has too many or too few hearts
/ea fix <player> clears set and accessory bonuses and applies them again. If it is still wrong, /ea fix <player> force removes every health modifier (including other plugins') and restores the base.
A mob's name shows twice
The normal name tag already hides itself. If it is a MythicMobs mob with its own Nameplate, turn it off at the mob's root (not inside Options), or set health-bars.show-name: false.
I do not want the crafting table to give ElementalArms items
vanilla-crafting.replace-recipes: false and restart. Or remove only the recipes you do not want from vanilla-recipes.yml.
Every smithing table opens the forge
You have stations.block-mode: ANY. With PLACED (the default) only blocks placed with /ea station place open it.
I hold a ring in my hand and it gives nothing
That is on purpose: accessories count in their /ea inventory slot, and armor when worn. In the hand they add nothing.
Get the item! gives me the item without a tier
That button gives the template, without a roll. An item with tier: RANDOM has no tier until it is generated: use /ea give.
The plugin disables itself
Check the console: empty or badly copied licence, licence used on two servers at once, or your host blocks the connection to infinity3113.mc-paradise.com for more than 48 hours.
My two-handed weapon removes my shield
That is what hand-style: TWO_HANDED does: it empties the off hand while you hold it. Change it to ONE_HANDED if you do not want that.
Version history
Every release and what changed in it.
- ✨No licence key needed any more: install the jar and it works. The licence terms stay the same: one purchase covers one server (or one network under the same owner).
- 🐛Armour pieces cancelled each other out: with a chestplate on, putting the helmet on left you with LESS armour, and taking any piece off could leave you at zero with the full set equipped.
- 🐛The same bug hit every vanilla attribute an item gives (armour toughness, max health, speed, knockback resistance...) and the shield in the off hand, which fought with the armour over the same value.
- ✨Repair kits for custom durability: 30%, 50% and 100%. Drag one onto the item, or use them in a forge. They are never wasted on an item that does not need them.
- ✨Repair Forge: a station with 'type: REPAIR' in stations.yml. Put the item in, the payment in, click. It only takes custom-durability items, and each forge sets what it accepts and how much it repairs.
- ✨Not every item has to accept the Upgrade Stone any more: 'Accepts Upgrade Stone' and 'Max Upgrade (+N)' are switches in /ea editor, per item. Max Upgrade 0 also blocks it.
- 🔧The Upgrade Stone is no longer consumed when the item cannot be upgraded: it tells you and stays in your hand.
- 🔧/ea inventory counts Protection the same way /ea stats does (defense + armour), so both menus no longer show different numbers, and armour from an RPG class now shows there too.
- 🔧Just replace the jar. Your items are rebuilt on their own the next time each player joins, and that is what fixes the armour on gear that already exists.
- ✨Every stat in the lore now has its own icon and colour, grouped by family (attack, crits, abilities, mana, health, defence, world). Plain characters: no resource pack needed.
- 🔧Stat values lost their padding zeros: 12 instead of 12.00, 1.6 instead of 1.60. Set bonuses too, where +0.02 speed used to read as +0.0.
- 🔧Lore sections got a proper header (STATS, ELEMENTAL, ABILITIES, SOCKETS, REQUIREMENTS) and a cleaner separator line.
- 🔧The look of a stat set in lore-formats.yml now wins over the language file, so all the looks live in one place. The NAMES are still translated per language.
- ✨Dye leather gear from the editor: 16 dyes, any colour (#hex or R,G,B) or a random one, with live preview. Saved as 'color:' in the item file; colours players dye themselves are kept.
- ✨config.yml: drops.ignore-placed-blocks and health-bars.respect-mythicmobs-healthbar (both on by default).
- 🔧English is now the main language: built-in item and station IDs (DIAMOND_SWORD, UPGRADE_STONE, FORGE...) and every console message. Existing servers keep their files and old IDs.
- 🔧Upgrades and tier rolls no longer scale attack speed, movement speed, size or gravity.
- 🔧/ea stats shows every set bonus. Equipment menu, character sheet and stations are fully translated.
- 🔧Brand-new step-by-step wiki in 4 languages.
- 🔧Updating: just replace the jar. New options are added by themselves and players' items are rebuilt keeping rolls, upgrades, gems and enchantments.
- 🐛Item duplication in /ea inventory (taking the weapon from your hand and closing the menu).
- 🐛/ea inventory deleted a chestplate placed while wearing an elytra (same with the shield and the off hand).
- 🐛Tenacity froze the whole server and made players immune to negative effects.
- 🐛Smelt Touch dropped ingots inside protected regions (WorldGuard...) without breaking the block.
- 🐛Block drops could be farmed forever by placing the block again (Silk Touch ores).
- 🐛Custom weapons ignored every damage multiplier: vs mobs/players, berserk, backstab, combo, first strike, execute, resistances, Sharpness and Strength.
- 🐛Spam-clicking dealt full damage: the attack cooldown now counts with custom weapons too.
- 🐛Weapon attack speed was added on top of the player's base (swords were at 5.6).
- 🐛Defense and Dodge also worked against void, fall, fire and drowning damage. Both now only apply to attacks and projectiles.
- 🐛Defense, crit and damage from sets, accessories and shields were never applied.
- 🐛22 attribute stats (jump strength, scale, reach, mining speed...) did nothing on weapons and armor.
- 🐛Double Strike showed "x2" but dealt no damage, and thorns/counter damage was recalculated as a full weapon hit.
- 🐛Damage Cap and Second Wind were checked before the damage was fully calculated.
- 🐛Unidentified items already used their stats, and shield stats only worked in the main hand.
- 🐛Rings, amulets and armor gave their stats just by holding them in your hand (and /ea stats counted them).
- 🐛Elemental damage on armor, shields and accessories did nothing (the Dragon Talisman's fire). It now adds to melee hits and ElementalArms bow shots.
- 🐛Abilities on accessories never triggered (the Shadow Amulet and the Dragon Talisman now work).
- 🐛Ability damage was treated as a melee hit: it triggered Double Strike, Combo, Lifesteal and mana steal on every mob it caught.
- 🐛The netherite smithing upgrade never worked on 1.20+. It now also keeps upgrades, gems and soulbound.
- 🐛on-zero: UNUSABLE items kept working at 0 durability.
- 🐛Crafting stations crafted the wrong recipe after an invalid one, and used worn armor as an ingredient.
- 🐛Upgrading or identifying a stack of items deleted all but one.
- 🐛MythicMobs drops came out without tier or stat roll, and changing an item's name in its YML never reached items already given.
- 🐛Keep Item Chance could lose items on disconnect, teleport could put you inside walls, and a 500/502 on the licence site disabled the plugin.
- 🐛Mob names were shown twice (above the health bar and below it), also on MythicMobs mobs and with their own HealthBar.
- 🐛ElementalArms 1.1.5 never got as far as starting up: it died during enable and the server disabled the whole plugin, so no command worked. It starts properly now.
- 🐛The cause was the order in which the internal stat data was prepared. Rewritten so that order can no longer break startup.
- 🔧New pre-release check: all 61 plugin classes are loaded the way the server would load them, so a startup failure cannot leave the workshop again.
- 🔧Straight update: nothing changes in the config or the items. Swap the .jar and you are done - your items, sets and abilities stay as they were.
- 🐛Gem sockets did nothing when you took the item out of the editor. "Get the item!" handed you a template that never read max-sockets, so you received an item with zero sockets and inserting a gem answe
- 🐛Items your players already own could never gain sockets or durability. Rebuilding an item preserves its data, so adding max-sockets to the YML and bumping revision-id changed nothing. They now adopt w
- 🐛The smithing table handed out a stripped item: upgrading to netherite produced no sockets, no durability and no tier roll.
- 🐛Bows fired with template stats. The arrow only carried the bow's ID, so damage was recalculated from scratch: a +10 bow full of gems hit for exactly the same as a fresh one.
- 🐛The format: block in lore-formats.yml was never read. The file documents it as the lore's running order, but the order was hard-coded, so reordering that list changed nothing in game. It works now, an
- 🐛The explosion ability had its two options backwards: the editor offered radius, which no code read, and hid break-blocks, which does work.
- 🐛Nine texts were hard-coded in Spanish on an English plugin. Four were seen by ordinary players: the durability line on every item, Dos Manos on two-handed weapons, the set-equipped message, and the la
- 🔧break-blocks is now offered in the ability editor, with its own icon and help. It defaults to 0, so an explosion does not wreck the terrain unless you say so.
- ✨21 more texts became translatable, including the combat indicators (✦ Block!, ✦ x2, ✦ Second Wind!, ✷ CRIT!). They worked before, but there was no way to translate them or recolour them.
- 🐛The editor did nothing when you typed a value in chat. The text arrived off the server thread, so the save was dropped without even an error in console.
- 🐛Logging out with an editor question still open left that question stored, and it was then applied to the first thing you typed on your next login.
- 🐛Abilities did not fire on hits from arrows, tridents or thrown potions: the plugin looked at the projectile instead of whoever threw it, so the hit did not count as yours.
- 🐛Items stuck to the cursor or appeared duplicated when upgrading gear. The client was out of sync with the server; the inventory is now refreshed after every change.
- 🐛Coloured names showed raw in the editor (&eLight Damage instead of Light Damage in yellow).
- 🐛Crit Resistance did nothing. It was in stats.yml, translated and with its own icon, but no code ever read it: you could put it on an item and it was decoration. It now cuts the extra damage from a cri
- 🐛Stats in the editor looked like the same option over and over. Only 57 of the 89 had an icon and the other 32 all fell back to the same blank paper. Several also clashed with a button's material (Defe
- 🐛The submenu buttons (abilities, lore, hand style, amplifiers, damage and resistances) were drawn on every page of the editor, so they looked like they repeated page after page. They are now only on th
- 🔧From the second page on, the six slots the buttons used go back to the list, so a page holds 36 stats instead of 30.
- 🔧Item properties come out in a fixed order, and stats that are already set come before the empty ones.
- ✨Every stat now carries a short description of what it does, with the plugin's real caps: dodge says "max 80%", ability area says "hard cap 24 blocks", passive repair says "every 5s". The 28 that are n
- ✨The 12 elemental resistances have their own submenu, the same way elemental damage already worked. They used to sit loose among the 89 stats, so every element appeared twice in the list and finding th
- 🐛Items could look stuck to the cursor, or vanish from a slot, in the equipment menu. The server had it right the whole time — what went wrong is that the menu cancels each click and moves the pieces it
- ✨✨ New — Dropped items now glow with the colour of their tier
- 🐛🐛 Fix — Elemental damage numbers always showed up white instead of their element's colour
- 🐛Elemental damage indicators always showed up white. The element colour was looked up after it had already been converted, so every element fell back to white - only Wind looked right, by coincidence.
- ✨Floating health bars above mobs, showing their elemental weakness at a glance.
- ✨32 new stats (89 in total): ability crit, magic resistance, spell vamp, area radius, reduced mana cost, accuracy, item magnet and more.
- ✨Search by ID in the item editor: type part of an ID and it looks through every category at once. Built for servers with hundreds of items.
- ✨/ea help with the full command list, showing each player only the commands they can actually use.
- 🔧Items in the editor are now sorted by tier and name. The order used to be random and changed on every server start.
- 🔧Tab completion for /ea only suggests the commands you have permission for.
- 🐛Any player could open stations with /ea station <id> from anywhere, skipping the block entirely. It now requires elementalarms.station.command (op by default).
- 🐛The item editor showed a raw "Abilities" field that did nothing.
- 🐛Removed the texts in the skill amplifier menu that mentioned a plugin that does not exist yet.
No notes for this version.
Discussion
Comment and share your experience on each plugin version.
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
No comments on this version yet — be the first!
Player reviews
What server owners think of this plugin.
Has pretty much all you need for your semi- or full rpg server.
buen plugin!