Custom Loot Table
Universal loot format. Used by EliteMobs in several different locations.
Please note that this is the latest format and the one that is recommended to use, but some alternative older formats exist.
Note: Legacy format support is still available using the colon-separated syntax: filename.yml:chance:permission. However, the modern format shown below is recommended for new configurations.
In that legacy syntax the chance is mandatory. Writing a bare filename.yml with nothing after it still drops the item at 100%, but it logs a Failed to parse entry ... due to invalid: chance warning on every startup, so prefer filename.yml:1.0 or the modern format.
Make sure to start your loot tables with uniqueLootList: before adding any settings otherwise the .yml config will error.
The four entry types are parsed everywhere, but they are not delivered everywhere. On Custom Boss loot (uniqueLootList) specifically:
| Entry type | putLootDirectlyIntoPlayerInventory: false (default) | putLootDirectlyIntoPlayerInventory: true |
|---|---|---|
Elite item (filename) | Drops | Drops |
Vanilla item (material / type) | Drops | Nothing happens |
Elite coins (currencyAmount) | Nothing happens | Nothing happens |
Command (command=) | Nothing happens | Nothing happens |
Boss loot goes through a boss-aware delivery path so the drop can be attributed to the elite that produced it, and only the elite item entry (plus the vanilla entry, when loot is dropped on the ground) implements it. Currency and command entries are silently skipped — no warning is printed.
Treasure chests, quest rewards and arena rewards use the plain delivery path and handle all four entry types normally. If you want a boss to hand out coins or run a command, use the boss's onDeathCommands instead.
Dropping elite items:
| Key | Details | Values | Default |
|---|---|---|---|
filename | Sets the file name of the Custom Item to use. | Filename | none |
Example
uniqueLootList:
- filename: magmaguys_toothpick.yml
This will make the mob drop 1 of MagmaGuy's Toothpick with a 100% drop chance.
General settings:
| Key | Details | Values | Default |
|---|---|---|---|
chance | Sets the chance of the loot dropping, where 1.0 is 100%. | Double | 1.0 |
amount | Sets the amount of this loot entry to drop. Ignored by currency entries — use currencyAmount for those. | Integer | 1 |
permission | Sets the permission node required for players to receive this loot. Supported by elite item, currency and command entries. Vanilla item entries never read it, in either format. | String | none |
Example
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
amount: 10
permission: elitemobs.loot.rare
This will make the mob drop 10 of MagmaGuy's Toothpick with a 50% drop chance, but only for players with the elitemobs.loot.rare permission.
Dropping elite coins:
| Key | Details | Values | Default |
|---|---|---|---|
currencyAmount | Sets the amount of coins that will be dropped. | Integer | none |
Note that the shared amount key does nothing for currency entries — the coin payout comes from currencyAmount alone. In the colon-separated string format only, an entry that ends up with a currencyAmount of 0 is rejected with a warning instead of being registered.
Example
uniqueLootList:
- currencyAmount: 344
chance: 0.5
This will make the mob drop 344 Elite Coins with a 50% drop chance.
Dropping vanilla items:
| Key | Details | Values | Default |
|---|---|---|---|
material | Sets the material of the item dropped. Accepts Minecraft material names (case-insensitive). You can also use type instead of material. | Material | none |
Example
uniqueLootList:
- material: APPLE
chance: 0.3
amount: 5
This will make the mob drop 5 Apples with a 30% drop chance.
Executing commands on loot drop:
You can execute console commands when loot drops. This is useful for integrating with other plugins or providing custom rewards. Command entries use the colon-separated string format only.
| Key | Details | Values | Default |
|---|---|---|---|
command | Sets the console command to execute. Use %player% as a placeholder for the player's name. | String | none |
The command itself must not contain a : or a second =, because the entry is split on both of those characters when it is parsed.
chance behaves for commandsCommand entries roll chance twice, and the second roll is inverted, so the command actually runs chance × (1 - chance) of the time:
chance=1.0(the default when you omit it) means the command never runs at all.chance=0.5gives the highest achievable rate, 25%.chance=0.9gives 9%.
Always set an explicit chance below 1.0 on command entries, and expect the real firing rate to be lower than the number you wrote.
Example
uniqueLootList:
- command=give %player% diamond 1:chance=0.5:amount=1:permission=elitemobs.loot.command
This will execute the command give <player> diamond 1 from the console when the mob is killed, roughly 25% of the time (see the warning above). The %player% placeholder will be replaced with the actual player's name. Only players with the elitemobs.loot.command permission will trigger this command.
Arena rewards:
When making arena loot tables, please make sure that you start your loot table with rawArenaReward: instead of uniqueLootList:.
| Key | Details | Values | Default |
|---|---|---|---|
wave | Sets the wave at which this loot entry will drop. Only for use in arenas. Supported in the map format for vanilla item entries, but only in the string format for elite item (filename) entries. | Integer | -1 |
itemLevel | Sets the level of the loot drop. Only for use in arenas, and only read for elite item (filename) entries. Only available in the string format, not the map format. | Integer | 1 |
- Only entries with a
waveof1or higher are ever registered as wave rewards. An arena reward entry with nowaveis parsed and accepted, but no wave will ever hand it out. itemLeveldefaults to1, not to the arena or player level. Ascalableelite item awarded by an arena without an explicititemLeveltherefore drops as a level 1 item.
Example
rawArenaReward:
- material: BREAD
wave: 1
amount: 10
chance: 0.5
- filename=magmaguys_toothpick.yml:wave=1:itemLevel=2
When the players beat the first wave then this will make the arena drop 10 Bread with a 50% drop chance and 1 MagmaGuy's Toothpick that is level 2 with a 100% drop chance.
Note that the elite item (filename) entry uses the string format here, because wave and itemLevel are only parsed for elite item entries in the string format. Vanilla item entries (like the material: BREAD one above) accept wave in the map format.
Instanced Dungeons:
| Key | Details | Values | Default |
|---|---|---|---|
difficultyID | Sets the instanced dungeon difficulty this loot will drop for. Only for use in instanced dungeons. | String | none |
difficultyID is only read for elite item (filename) entries written in the map format shown below. It is not parsed in the colon-separated string format, and it is not read for vanilla, currency or command entries.
It also only takes effect on Custom Boss loot. Treasure chest, quest and arena loot never evaluate it.
Inside an instanced dungeon the entry behaves as follows:
- Dungeon difficulty matches the
difficultyID: the item goes into the boss's shared group loot table rather than being handed straight to one player. The boss's eligible combat contributors can claim from it; players who are already locked out from that boss are removed before the vote. - Dungeon difficulty does not match: the entry is skipped.
- The player is not in an instanced dungeon at all: the
difficultyIDis ignored. The item uses party Need / Greed when at least two eligible party members are nearby, or follows the normal personal delivery path otherwise.
Example
uniqueLootList:
- filename: magmaguys_toothpick.yml
chance: 0.5
difficultyID: 1
This will make the mob drop 1 MagmaGuy's Toothpick with a 50% drop chance if the players defeated the boss on difficulty 1.