Configuration
ShadowCustomizer
Items, blocks, mobs, enchantments and recipes that Minecraft does not have.
Where the files are
plugins/ShadowCustomizer/ The plugin creates them on first start and updates them by itself on new versions, keeping your changes.
Applying changes
/scus reload Reloads the files without restarting the server.
No setting found
Try another word, or search every plugin.
Settings
The files that decide how the plugin behaves. Start here.
config.yml
General settings 33 settings
config.ymlplugins/ShadowCustomizer/config.yml This file explains the why of every option, not just the what
A wrong value never stops the plugin: it is replaced with the default and reported in console with the path and what was expected, so you fix one line instead of guessing.
Keep reading
UPDATES: when a new version changes this file, or one of the files it ships in lang/, menus/, items/, mobs/, enchants/, blocks/ or recipes/, it is moved to the new version for you. Everything you changed or added is carried over; the settings you never touched take the new defaults. Your previous file is kept in backup/<date>/, and if something could not be carried over (an option that no longer exists, a value of a different kind) you find it in PORTING-<version>.txt, with what to do.
EVERY KEY IN EVERY FILE IS ENGLISH. A configuration file is code: a key that can be written in two languages shows up in two forms in every guide, every copied example and every support question. What gets translated is what a PLAYER reads - messages, item names, lore - and that lives in lang/, where there are two languages on purpose.
Where the content lives:
items/*.yml the items mobs/*.yml the mobs and bosses enchants/*.yml the enchantments blocks/*.yml the blocks recipes/*.yml the recipes menus/*.yml the GUIs: rows, slots, materials and text lang/*.yml the messages
Put as many files as you like in those folders: they are picked up on their own, in name order, with nothing to register anywhere.
Two more show up after an update:
backup/<date>/ your files as they were before it PORTING-<version>.txt only if something needs your attention
You can delete both once you no longer need them.
config-version1The format number of this file. Do not touch it: an update always writes the one of the new version.
core
core1 keyserver-ip''The address this server is known by from the outside.
Only the licence needs it: a Premium key is tied to the addresses of the server that claimed it, and a server behind a proxy cannot see any of its own public addresses. If the licence says "wrong server" but the server is right, this is almost always what is missing.
Empty is perfectly fine for the vast majority of servers.
messages
messages2 keysdefault-localeen_USThe language to use when the player's own is not available.
The plugin ships with en_US and it_IT. Add a file to lang/ and it is picked up: this is the one place where a language other than English belongs, because these are the words your players read.
follow-client-localetrueWhether to follow the language each player's client is set to.
With true an Italian player and an English one each read their own without anybody having to do anything. With false everybody reads the default, which is what you want if you have rewritten the messages your own way and do not want half your players to miss them.
models - how an item tells the client which model to draw
models2 keysThe way Minecraft ties a model to an item HAS CHANGED, and it will change again. This section exists so that changing it does not mean rewriting your definitions.
bindingautoHow to bind models. One of:
Keep reading
auto decides on its own by looking at what each
definition declares, AND above all by looking at
whether anything on this server actually delivers
a resource pack - the models extension, or a
resource-pack set in server.properties.If nothing does, models are NOT bound and items look like the material they are made of. This is not laziness: an item that declares a model the client does not have does not look like its material, it looks like the PURPLE AND BLACK CUBE of a missing model. Better a diamond sword called Ruby Sword than a sword that looks like an error.
This is the right choice and the default.
item-model the item_model component only, that is the modern
mechanism: one model by name, no numbers and no
possible clash with other plugins. It is what the
3D models extension generates.custom-model-data the custom_model_data component in its string
form. For anyone who already has a pack built
that way and does not want to redo it.legacy-number the old numeric custom_model_data. It still works
and it is deprecated: it is here so a pack from
three years ago can keep working while you redo
it at your own pace.none no models at all. Items stay the material they
are made of, and everything else - attributes,
behaviours, enchantments - works identically.namespaceshadowThe namespace to put in front of a model written without one.
"model: ruby_sword" becomes "shadow:ruby_sword". Change it if your resource pack uses a different namespace: it has to match, otherwise the client cannot find the model and draws the purple and black cube.
What can carry a custom look, and how - the whole map
There is not one mechanism, there are four, and using the wrong one is why custom content so often looks right in one place and vanilla in another. Each line below says which key does it and where.
1. AN ITEM IN YOUR HAND OR IN THE INVENTORY
'model' on the item. Flat image or full 3D model, the same key either way. This is the one everybody knows.
2. A BLOCK IN THE WORLD
'model' on the block. Underneath it is a note block using one of its states, and the pack points that state at your model - which DOES NOT HAVE TO BE A CUBE. A chest, a lamp, a tombstone: that is all furniture is here, and blocks/furniture.yml ships two. The limit is the hitbox: it stays a full block, and a note block has no facing, so no free rotation.
3. ARMOUR ON YOUR BACK, AND AN ELYTRA IN FLIGHT
'equipment' on the item, NOT 'model'. Once armour is worn the game stops drawing the item model and lays texture layers over the body: 'humanoid' for the body, 'humanoid_leggings' for the legs, 'wings' for an elytra. This is the single most common mistake in custom sets - a model alone gives you a beautiful sword-and-shield look in the inventory and plain netherite on your back. The layers are declared in equipment.yml, models extension.
4. A HEAD - a player's, or a mob's
'model', and nothing else. The head slot is the one place the game draws the ITEM'S model instead of a layer. It is how hats work, and it is how the bosses in mobs/mobs.yml get a face of their own without a separate model plugin: they wear an item.
A MOB'S BODY is none of these. Reshaping the mob itself needs a model plugin (ModelEngine and the like), which this plugin does not talk to and does not pretend to: what it gives you is equipment slots, which is enough for a boss that reads as a boss.
ALL FOUR NEED SOMEBODY TO DELIVER THE PACK. With 'binding: auto' and nothing delivering one, neither 'model' nor 'equipment' is applied, and everything falls back to plain materials - on purpose. Half- applied is worse than not applied: it is how you get purple cubes and invisible armour.
AND IT IS ASKED PER MODEL, not once for the whole server. A pack can be served and still not contain a particular model - the models extension without its key generates the flat textures and not the 3D ones. Those items are left unbound and look like their material. So an item never points at a model the pack does not have, which is the only way the purple cube can appear.
items
items1 keyhold-period-ticks10How many ticks between runs of the "hold" behaviour.
Ten is half a second. Raising it saves work, lowering it makes a continuous effect more precise. This task does not start at all if no definition has a "hold" behaviour, so if you do not use that feature this number has no effect on anything.
mobs
mobs2 keysability-period-ticks10How many ticks between sweeps of the boss service over live mobs.
It is the loop that updates health bars, switches phases and fires timed abilities. Ten ticks - half a second - is a good compromise: abilities stay accurate to the half second and the cost does not show.
This one also does not start if no mob has abilities, phases or a boss bar.
max-live500How many custom mobs may be alive at once across the whole server.
Keep reading
It is a safety net against a mistake you can write in three lines: a boss with an ability that spawns two helpers every twenty seconds, and the helpers being the same definition as the boss. The growth is exponential and you find out from your TPS.
No server has five hundred custom mobs alive at once by choice. If the cap is reached you will find it in /scus diag: it almost always means there is a spawning ability missing a limit.
abilities - the limits on area actions
abilities1 keymax-radius32.0The maximum radius of an area action (pull, push, damage-nearby).
A large radius asks the server to examine hundreds of entities on every use, and on Folia it almost certainly reaches outside the region owned by the thread - which means it does not work at all. Better a ceiling written here than a feature that sometimes works.
blocks
blocks1 keytrack-placedtrueWhether to keep a record of where the custom blocks are placed.
Keep reading
LEAVE IT ON. It is not an extra feature: it is how this plugin tells one of its own blocks from a player's note block, and it is the reason the thing that happens elsewhere does not happen here.
The problem, briefly. A custom block is a note block tuned to a certain instrument and note combination. But a player's note block can have that same combination: they place one, tune it with right clicks, and sooner or later land exactly on one of ours. A plugin that recognises its own blocks by the note alone mistakes it for its own from that moment on, and starts "defending" it: it cancels the physics update, which is also how a note block receives a redstone signal. From then on that block no longer plays when you power it, no longer tunes, and breaking it drops an item the player never crafted. It is why on many servers with custom blocks the musical circuits stop working and nobody understands why.
With this record on, the question is not "does it have the right note?" but "did we place it?", and for a player's note block the answer is always no: its redstone works, it tunes, and it breaks into a note block.
Turn it off and the plugin no longer knows which blocks are its own, so it TURNS THE DEFENCES OFF rather than guessing: custom blocks are still visible, but they behave like note blocks - they change note on a right click and drop a note block. It is the trade-off chosen on purpose, because between "one of our blocks loses its defences" and "a player's circuit stops working", the second hits someone who asked for none of this.
It also tells you WHERE the blocks of a definition you just deleted are, and makes a migration possible the day Minecraft changes the available combinations.
Every write to the database is asynchronous: a player placing a hundred blocks in a minute never waits for it. The question "is it ours?" is answered in memory instead, eight bytes per placed block.
recipes
recipes1 keyprotect-from-vanillatrueWhether to stop a custom item from being used in a vanilla recipe.
Keep reading
Leaving it on is almost always right, and it is the hole that custom item plugins have historically left open: a "Dragon Sword" built on a DIAMOND_SWORD is, as far as a crafting table is concerned, a diamond and a stick. It can be smelted into an ingot. It can be used as an ingredient in place of an ordinary item. Whoever spent a month earning it can destroy it with a shift click.
Turn it off only if you genuinely need your items to go into the game's own recipes, and knowing what that means.
ui
ui1 keyconfirm-timeout30sHow long a confirmation button is good for before it expires.
In this plugin - as across the whole suite - nobody is ever asked to retype a command to confirm: you click [ CONFIRM ] or [ CANCEL ]. The token behind the button is single use and tied to whoever was asked, so a button left in the chat history cannot start anything again.
storage
storage5 keysYour definitions are NOT in here. Items, mobs, enchantments, blocks and recipes are YAML files and stay YAML files: you read them, copy them from one server to another, put them in a repository, open them in a text editor.
The database holds only three things the game produces while it runs: where the placed blocks are, which definitions no longer exist but are still in circulation, and a few counters.
table-prefix'sc_'The table prefix. Change it only if you share a database with something else: two servers on the same database with the same prefix write into the same rows.
storage.mysql7 keysenabledfalsefalse uses an H2 file inside the plugin folder: nothing to install, no user, no password. It is what makes the plugin work the moment it is copied into plugins/.
MySQL is only for people with more than one server that need to see the same data. It is a Premium feature: on the free version this line is ignored and the local file is used, said in console.
host127.0.0.1port3306databaseshadowcustomizerusernamerootpassword''parameters'useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&characterEncoding=utf8'storagefallback-to-localtrueIf MySQL does not answer, fall back to the local file instead of refusing to start.
true is almost always right: a server that will not start is far worse than a server that starts writing somewhere else. Set false only if the data MUST be on the shared MySQL and you would rather find out immediately.
storage.h21 keyauto-serverfalseLets more than one process open the same H2 file. Only needed if you want to look at the database while the server runs; it costs a little.
storage.pool5 keysmaximum-pool-size10minimum-idle2connection-timeout-ms10000idle-timeout-ms600000max-lifetime-ms1800000license
license3 keysTHE KEY LIVES IN license.yml (same folder as this file), or in the central plugins/ShadowControl/licenses.yml for the whole suite. The 'key' below is only a fallback for deploy systems that generate config.yml: leave it empty.
The key does NOT live here: it lives in license.yml, in this folder, written at first start (or in plugins/ShadowControl/licenses.yml for the whole suite). The key. Better NOT to put it here.
The command /scus license activate <key> writes it into license.yml, which is a separate file on purpose: a support request that says "send me your config" should not arrive with your licence inside it.
This line exists for anyone distributing configurations from a template who would rather keep everything in one file.
grace-days7How many days of grace before falling back to free.
Two situations do not switch anything off immediately: a subscription that just expired (the renewal has almost always already gone through) and an address that does not match (far more often a NAT or a proxy than a thief).
activation-url'https://shadow-licences.riccardobotins.workers.dev'The address of the activation service.
It is what /scus license claim <code> uses, that is, what turns the code you got when you bought into a signed licence tied to YOUR server, without anybody having to email IP addresses around.
Empty disables claim and the periodic recheck: a key you already hold keeps working, even with no network.
resolve-public-iptrueAsk the licence service above how this server looks from outside (activation-url + /ip: it answers with the address it sees, and nothing about the server is sent).
It is the only reliable way to know your own public address from behind a NAT, and it is what makes a licence sold for "play.example.com" work on a machine whose addresses are all 10.x. A failure is silent and changes nothing. Only when a licence is installed: a server without a key asks nobody. false = never ask.
debug
debug1 keylog-sqlfalseWrites every SQL statement to the console. Useful to whoever is chasing a fault and to nobody else: on a live server it floods the log.
bStats (anonymous usage statistics, https://bStats.org)
What is sent, every 30 minutes: a random server id (serverUuid, not derived from anything), the plugin version, the Minecraft/Paper and Java versions, the operating system and core count, the online mode, how many players are online (a number only) and the licence tier (free/premium/creator). NO player data: no names, no UUIDs, no addresses. Nothing is sent while the plugin waits for a licence.
Keep reading
false switches off this plugin only. enabled: false in plugins/bStats/config.yml switches off every bStats plugin on the server at once.
metrics1 keyenabledtrue enchants/enchants.yml
Custom enchantments 152 settings
enchants/enchants.ymlplugins/ShadowCustomizer/enchants/enchants.yml File notes
These are REAL enchantments: they go into the server's enchantment registry, the same one Sharpness lives in. The anvil combines them, the table offers them, books hold them, /enchant knows them.
THE PRICE: the registry is written once, at start-up. Adding or changing one of these needs a RESTART. /scus reload does everything else - items, mobs, blocks, recipes - and says so when an enchantment is waiting.
NAMES AND DESCRIPTIONS. The ones below have no 'name:' and no 'description:': they come from lang/<language>.yml, section 'enchantments', so each player reads them in their own language in the windows and in chat. The name written on the item is the one of the server's default language (messages.default-locale in config.yml), because the registry holds only one. Write 'name:' or 'description:' here and yours wins, for everybody. Your own enchantments need a name: here, or in the lang files.
WHAT IT GOES ON. 'supported-items' is the truth: the windows, the books and /scus enchant info show it in words ("Swords, Spears, Axes"), worked out from what the server registered.
In the free version the first three are registered and their weight is forced down to the minimum: they exist and work exactly the same, they are just as rare as an enchantment can be.
LEVELS. Every number in an effect may depend on the level of the book: "0.5*<level>", "2+<level>", "60*<level>". Potion durations and amplifiers scale the same way ("SPEED 60 <level>"). A trigger can also say how OFTEN it fires, and on WHICH BLOCKS, in its long form:
break-block:
chance: '0.1*<level>' # 0..1, may grow with the level; left out = always
blocks: [ '#minecraft:logs' ] # tags or blocks; left out = every block
actions:
- 'xp: 1*<level>'"max-level" is the ceiling: 1 for a Mending-like enchantment that has nothing to scale, 3 to 5 for the rest. Two equal books combine on the anvil into the next level, and the GUI (/scus enchant list) hands out a book at any level up to the ceiling.
ACTIONS ADDED FOR ENCHANTMENTS (the others are the item behaviours'):
smelt: break-block only: the block's drops come
out smelted, with the furnace experience.
Fortune is already in the drops.
multiply-drops: 2 break-block only: the drops times 2.
Never with Silk Touch, never on a block
that drops itself. ALWAYS give it a
'blocks:' filter (ores): on any block it
is a duplication machine.
pull: 0.4 on=target pulls the target towards you
push: 0.6 on=target pushes the target away from you
damage: 4 on=target below=0.34 only if the target has 34% health or less
damage-nearby: 2 radius=3 skip-target=true not the target again
potion: GLOWING 60 1 radius=8 on whoever is around, not on youUPDATES: when a new version changes this file, it is moved to the new version at start-up, before the enchantments are registered. Everything you changed or added (a weight, an effect, an enchantment of your own) is carried over; what you never touched takes the new version's fixes. Your previous file is kept in backup/<date>/, and if something could not be carried over you find it in PORTING-<version>.txt, with what to do.
config-version3Swords
Rubavita / Life Steal - every hit gives you some life back
bloodthirst10 keysmax-level5weight4anvil-cost4minimum-cost'10 11'maximum-cost'60 11'supported-items["#minecraft:swords"]primary-items["#minecraft:swords"]slot[mainhand]exclusive-with["minecraft:fire_aspect"]bloodthirst.effects1 keyhit-entity["heal: 0.5*<level>", "particle: DAMAGE_INDICATOR 6 0.3"]+1
Health points, not hearts: 0.5 is a quarter of a heart per level, a heart and a quarter at the fifth.
Colpo di grazia / Finishing Blow - finishes off whoever is almost down
execution8 keysmax-level3weight2anvil-cost6minimum-cost'20 14'maximum-cost'70 14'supported-items["#minecraft:swords"]slot[mainhand]execution.effects1 keyhit-entity["damage: 2*<level> on=target below=0.34", "sound: entity.player.attack_crit 1 0.7"]+1
below=0.34: only when the target is down to a third of its health. Without it this was just Sharpness under another name.
Fulmine / Lightning Strike - a lightning bolt now and then
chain_lightning8 keysmax-level3weight2anvil-cost6minimum-cost'22 15'maximum-cost'75 15'supported-items["#minecraft:enchantable/sharp_weapon"]Swords, spears and axes: the game's own tag for them. The hand-written list this replaces had forgotten the copper sword and axe and every spear.
slot[mainhand]chain_lightning.effects1 keychain_lightning.effects.hit-entity2 keyschance'0.15*<level>'"Now and then": the chance grows with the level, 15% at the first and 45% at the third. Without "chance" an effect fires on every hit.
actions["lightning:", "damage: 1.5*<level> on=target"]The lightning is an effect only: it deals no damage of its own. The damage is decided by the line below. Adding it twice is the mistake that turns an enchantment from spectacular into unbearable.
config-version:
wildfire, tempest, undertow, swiftstep, midas_touch, soulreaperAxes
Colpo ampio / Cleave - also hits whoever stands around
cleave9 keysmax-level4weight3anvil-cost5minimum-cost'15 13'maximum-cost'65 13'supported-items["#minecraft:axes"]primary-items["#minecraft:axes"]slot[mainhand]cleave.effects1 keyhit-entity["damage-nearby: 1.5*<level> radius=3 skip-target=true", "sound: entity.player.attack_sweep 1 0.8"]+1
skip-target: the one you hit already took the blow.
lumberjack8 keysEsperienza del boscaiolo / Lumberjack's Experience - every log is worth some experience
max-level3weight5anvil-cost3minimum-cost'8 9'maximum-cost'58 9'supported-items["#minecraft:axes"]slot[mainhand]lumberjack.effects1 keylumberjack.effects.break-block2 keysblocks["#minecraft:logs"]Logs only. On every block, placing and breaking the same dirt block was an experience farm.
actions["xp: 1*<level>"]Pickaxes
Minerale doppio / Double Ore - now and then an ore drops double
vein_miner9 keysmax-level3weight3anvil-cost4minimum-cost'15 10'maximum-cost'65 10'supported-items["#minecraft:pickaxes"]primary-items["#minecraft:pickaxes"]slot[mainhand]vein_miner.effects1 keyvein_miner.effects.break-block3 keyschance'0.1*<level>'10% per level. Ores only, like Fortune: on any block, a placed and broken diamond block would be a duplication.
blocks["#minecraft:coal_ores", "#minecraft:iron_ores", "#minecraft:copper_ores", "#minecraft:gold_ores", "#minecraft:redstone_ores", "#minecraft:lapis_ores", "#minecraft:diamond_ores", "#minecraft:emerald_ores", nether_quartz …+7
actions["multiply-drops: 2", "particle: HAPPY_VILLAGER 5 0.3"]+1
Visione notturna / Night Vision - you see in the dark while you hold it
prospector8 keysmax-level1weight2anvil-cost4minimum-cost'20 0'maximum-cost'60 0'supported-items["#minecraft:enchantable/mining"]slot[mainhand]prospector.effects1 keyhold["potion: NIGHT_VISION 300 1"]Every round of the global task, half a second. 300 ticks and not less: the game makes night vision FLICKER in its last 200 ticks, and with 100 the screen flickered the whole time.
Fusione automatica / Auto Smelt - what you dig comes out smelted
smelting_touch9 keysmax-level1weight2anvil-cost8minimum-cost'25 0'maximum-cost'75 0'supported-items["#minecraft:pickaxes"]slot[mainhand]exclusive-with["minecraft:silk_touch"]smelting_touch.effects1 keybreak-block["smelt:", "particle: FLAME 6 0.2", "sound: block.furnace.fire_crackle 0.6 1.4"]+1
'smelt:' is what does it: the drops (Fortune included) come out as the server's furnace recipes make them - raw iron into ingots, cobblestone into stone - plus the furnace's experience. Before this line the enchantment only made sparks.
Bows and crossbows
volley9 keysEsperienza del tiratore / Marksman's Experience - experience for every target hit
max-level3weight4anvil-cost4minimum-cost'12 11'maximum-cost'62 11'supported-items["#minecraft:enchantable/bow"]primary-items["#minecraft:enchantable/bow"]slot[mainhand]volley.effects1 keyhit-entity["xp: 2*<level>", "particle: CRIT 8 0.3"]Arpione / Harpoon - the arrow drags the target towards you
homing8 keysmax-level3weight2anvil-cost6minimum-cost'22 13'maximum-cost'72 13'supported-items["#minecraft:enchantable/bow"]slot[mainhand]homing.effects1 keyhit-entity["pull: 0.4*<level> on=target", "sound: entity.arrow.hit_player 1 1.6"]+1
on=target: the target, towards you. The old 'radius=6' form pulled what stood around the target towards the target - and the target itself, at distance zero, not at all.
Dardo esplosivo / Explosive Bolt - the bolt explodes
siege9 keysmax-level3weight2anvil-cost7minimum-cost'25 14'maximum-cost'75 14'supported-items["#minecraft:enchantable/crossbow"]primary-items["#minecraft:enchantable/crossbow"]slot[mainhand]siege.effects1 keyhit-entity["explode: 1*<level> blocks=false", "damage-nearby: 2*<level> radius=3"]+1
blocks=false: the explosion makes a show and damage, not holes in the world. It is the line that decides whether this enchantment can stay on on a server with builds.
Tridents
Shields
Repulsione / Repulsion - whoever hits you is pushed back
bulwark9 keysmax-level3weight3anvil-cost5minimum-cost'15 12'maximum-cost'65 12'supported-items[shield]There is no vanilla tag for shields - they only take Unbreaking and Mending - so the item is written by hand.
primary-items[shield]slot[mainhand, offhand]A shield lives in the off hand: both hands count.
bulwark.effects1 keytake-damage["push: 0.6*<level> on=target", "sound: item.shield.block 1 0.8"]+1
on=target: whoever hit you, away from you.
Armour
Spine d'ombra / Shadow Thorns - whoever hits you regrets it
shadow_thorns10 keysmax-level4weight3anvil-cost5minimum-cost'12 12'maximum-cost'62 12'supported-items["#minecraft:enchantable/armor"]primary-items["#minecraft:enchantable/armor"]slot[armor]exclusive-with["minecraft:thorns"]shadow_thorns.effects1 keytake-damage["damage: 1*<level> on=target", "particle: SOUL 12 0.4"]+1
Once per hit at the highest level you wear, not once per piece. Against an archer, the damage goes to the archer.
Secondo fiato / Second Wind - a bit of life when you get hit
second_wind8 keysmax-level3weight2anvil-cost6minimum-cost'20 13'maximum-cost'70 13'supported-items["#minecraft:enchantable/chest_armor"]slot[chest]second_wind.effects1 keysecond_wind.effects.take-damage2 keyschance'0.1*<level>'"Now and then", as the description says: 10% per level. On every hit it healed a little each time, which against small mobs is close to immortal.
actions["heal: 2*<level>", "particle: HEART 5 0.3"]Caduta lenta / Slow Falling - you fall slowly
featherfall8 keysmax-level2weight4anvil-cost3minimum-cost'10 10'maximum-cost'60 10'supported-items["#minecraft:enchantable/foot_armor"]slot[feet]featherfall.effects1 keyhold["potion: SLOW_FALLING 60*<level> 1"]While the boots are worn (not held). Lasts longer at every level after taking them off.
Anything that wears out
Rivelazione / Reveal - whoever is around you glows
beacon8 keysmax-level1weight2anvil-cost4minimum-cost'18 0'maximum-cost'68 0'supported-items["#minecraft:enchantable/equippable"]slot[any]beacon.effects1 keyhold["potion: GLOWING 60 1 radius=8"]radius=8: on whoever is around you. Without it the effect went on the wearer, the opposite of what the enchantment says.
Sazietà / Satiety - you do not get hungry
temper8 keysThe weight goes from 1 to 1024 and says how likely an enchantment is to come out compared to the others: vanilla values go from 1 (Luck of the Sea) to 10 (Protection). ONE is the minimum the game accepts - zero is not a valid value and makes the registration fail.
With one, this is the rarest of all: a reward enchantment, usually applied by hand with /scus enchant or with a book.
max-level1One level: the saturation effect fills the hunger bar at any strength, so levels two to five did nothing more.
weight1anvil-cost10minimum-cost'30 15'maximum-cost'80 15'supported-items["#minecraft:enchantable/durability"]slot[any]temper.effects1 keyhold["potion: SATURATION 40 1"] mobs/mobs.yml
Custom mobs 114 settings
mobs/mobs.ymlplugins/ShadowCustomizer/mobs/mobs.yml File notes
A custom mob is a vanilla mob dressed up: stats, equipment, name, behaviour and drops. You cannot add entity types to Minecraft from a plugin - nobody can - and you do not need to: a Pumpkin King with six hundred health, a carved head, three abilities and a bar is a boss, and nobody cares that underneath it is a wither skeleton.
WHAT MAKES THEM LOOK CUSTOM is what they wear. The head slot changes the silhouette, and the heads are items with a 3D model - see items/heads.yml. Without a resource pack the mobs still work, they just look like what they are made of.
BOSSES: the health bar, the phases and the timed abilities are Premium. On a free server a boss still spawns with its stats, its equipment and its drops.
Spawn one with: /scus mob spawn <id>
IN ITALIAN: the Italian version of this file is in esempi/it_IT/mobs/mobs.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1Ordinary mobs
Lost Miner - digs where it should not, and finds you
lost_miner9 keystypeZOMBIEname'<gray>Lost Miner'health40damage6armor6lost_miner.equipment3 keysheadIRON_HELMETchestIRON_CHESTPLATEhandIRON_PICKAXElost_minerdrops["antracite_raw 1 3 0.7", "arcadium_raw 1 1 0.10", "IRON_INGOT 1 2 0.4"]+2
Every line is: id, minimum, maximum, chance, then the details. The id can be one of our items or a vanilla material.
experience25lost_miner.on1 keydeath["particle: LARGE_SMOKE 12 0.4"]Ash Archer - does not burn at dawn, and moves fast
ash_archer8 keystypeSKELETONname'<dark_gray>Ash Archer'ash_archer.stats3 keyshealth30speed0.32follow-range40ash_archerburns-in-daylightfalseWithout this line the skeleton burns at dawn, and an event mob that incinerates itself is the mistake you discover the day after you put it in.
ash_archer.equipment2 keyshandBOWash_archer.equipment.head2 keysmaterialdarkflame_helmetdrop-chance0.05ash_archerpotions["SPEED 1"]drops["ARROW 4 12 1.0", "antracite_dust 1 2 0.5", "BONE 1 3 0.8"]+1
experience35Bosses
Pumpkin King - the boss with the 3D head
pumpkin_king14 keystypeWITHER_SKELETONname'<gold>Pumpkin King'name-visibletruebosstruepumpkin_king.stats7 keyshealth600damage14speed0.28armor14knockback-resistance0.8follow-range44scale1.5One is normal. One and a half is big and visible from afar.
pumpkin_kingburns-in-daylightfalsepersistenttrueA boss that is not persistent disappears when the last player moves a bit away, that is exactly when somebody runs off to heal. For bosses it is true by default, but it is written here so that it shows.
pumpkin_king.equipment3 keyspumpkin_king.equipment.head2 keysmaterialpumpkin_king_headdrop-chance0.20pumpkin_king.equipmentchestNETHERITE_CHESTPLATEpumpkin_king.equipment.hand2 keysmaterialdarkflame_axedrop-chance0.10pumpkin_king.boss-bar4 keystitle'<gold>Pumpkin King'colorYELLOWstyleNOTCHED_10range48pumpkin_king.on2 keysspawn["broadcast: <gray>The <gold>Pumpkin King <gray>has woken up.", "sound: entity.wither.spawn 1 0.6"]+1
death["broadcast: <gray>The <gold>Pumpkin King <gray>has fallen.", "sound: ui.toast.challenge_complete 1 1"]+1
pumpkin_king.abilities2 keysThe abilities of the opening phase.
pumpkin_king.abilities.fangs4 keysevery8schance0.7radius12actions["damage: 6 on=target", "particle: FLAME 25 0.5", "sound: entity.evoker.fangs_attack 1 0.8"]+2
pumpkin_king.abilities.call3 keysevery22sneeds-targetfalseactions["spawn: ash_archer 2", "sound: entity.wither.ambient 1 0.7"]+1
pumpkin_king.phases2 keysThe phases. The order you write them in does not matter: they are sorted by descending threshold. They are crossed once only and downwards - healing the boss does not bring it back.
Keep reading
Two placeholders on top of <player>, <target>, <x> <y> <z> and <world>:
<phase> in on-enter, the name of the phase just entered <ability> in the actions of an ability, its id (fangs, call...)
The Italian names <fase> and <abilita> work too. For example:
- 'broadcast: <gray>The <gold>Pumpkin King <gray>enters <red><phase><gray>.'
pumpkin_king.phases.burning5 keysbelow0.5name'Burning'bar-colorREDon-enter["broadcast: <gray>The <gold>Pumpkin King <red>catches fire<gray>.", "potion: SPEED 999999 2", "sound: entity.ender_dragon.growl 1 0.8"]+2
pumpkin_king.phases.burning.abilities2 keyspumpkin_king.phases.burning.abilities.fangs4 keysevery4schance1.0radius14actions["damage: 8 on=target", "fire: 80 on=target", "particle: FLAME 40 0.6"]+1
pumpkin_king.phases.burning.abilities.shockwave3 keysevery12sneeds-targetfalseactions["push: 1.4 radius=6", "damage-nearby: 5 radius=6", "explode: 2 blocks=false"]+2
pumpkin_king.phases.last_stand5 keysbelow0.2name'Last Flame'bar-colorWHITEon-enter["broadcast: <gray>The <gold>Pumpkin King <gray>has nothing left to lose.", "lightning:"]+1
pumpkin_king.phases.last_stand.abilities1 keypumpkin_king.phases.last_stand.abilities.volley3 keysevery3sradius16actions["damage: 7 on=target", "pull: 1.0 radius=10"]pumpkin_kingdrops["pumpkin_king_head 1 1 1.0 player-only=true", "darkflame_sword 1 1 0.35 player-only=true", "oricalco_rod 2 5 1.0", "NETHER_STAR 1 1 0.30 player-only=true"]+3
experience800Steel Warden - the slow boss that hits hard
steel_warden13 keystypeIRON_GOLEMname'<gray>Steel Warden'name-visibletruebosstruesteel_warden.model4 keysA real 3D body: an item model of ShadowCustomizerModels worn by a display that rides the (invisible) golem. Static, not animated. "scale" sizes the model, "y-offset" lifts it off the feet, "hide-base" hides the golem.
item'shadow:steel_warden_model'scale2.02.0 and not 1.3: the body is drawn at 0.65 of its size, because at full size it went past the 32-pixel box Minecraft accepts and the client rejected the whole model. 0.65 x 2.0 = 1.3, the size it had before.
y-offset0.5hide-basetruesteel_warden.stats7 keyshealth500damage18speed0.22armor18knockback-resistance1.0follow-range36scale1.3steel_wardenpersistenttruesteel_warden.boss-bar4 keystitle'<gray>Steel Warden'colorWHITEstyleNOTCHED_6range44steel_warden.on2 keysspawn["broadcast: <gray>The <white>Steel Warden <gray>has risen.", "sound: entity.iron_golem.repair 1 0.6"]+1
death["broadcast: <gray>The <white>Steel Warden <gray>has stopped.", "sound: block.anvil_land 1 0.6"]+1
steel_warden.abilities1 keysteel_warden.abilities.slam4 keysevery7schance0.8radius10actions["damage: 8 on=target", "push: 1.2 radius=4", "sound: entity.iron_golem.attack 1 0.7"]+1
steel_warden.phases1 keysteel_warden.phases.overheated5 keysbelow0.4name'Overheated'bar-colorREDon-enter["broadcast: <gray>The <white>Warden <red>overheats<gray>.", "potion: SPEED 999999 1"]+1
steel_warden.phases.overheated.abilities2 keyssteel_warden.phases.overheated.abilities.slam4 keysevery4schance1.0radius12actions["damage: 11 on=target", "push: 1.6 radius=5", "particle: ELECTRIC_SPARK 30 0.6"]+1
steel_warden.phases.overheated.abilities.magnet3 keysevery14sneeds-targetfalseactions["pull: 1.2 radius=10", "sound: block.beacon.activate 1 0.7"]+1
steel_wardendrops["shadowsteel_shield 1 1 0.40 player-only=true", "elektron_ingot 2 4 1.0", "arcadium_ingot 2 4 1.0", "IRON_BLOCK 2 5 1.0"]+3
experience700 recipes/recipes.yml
Recipes 63 settings
recipes/recipes.ymlplugins/ShadowCustomizer/recipes/recipes.yml File notes
Every ingredient and result can be one of our ids or a vanilla material. Ours are looked up first.
config.yml has recipes.protect-from-vanilla on by default: it stops a custom item from being used in one of the game's own recipes. It is the hole that custom item plugins have historically left open - a legendary sword built on a netherite sword is, to a crafting table, a netherite ingot and a stick.
config-version1The furnace: raw into refined
antracite_smelt6 keystypefurnaceinputantracite_rawresultantracite_dustamount1cook-time200In ticks. Two hundred is ten seconds, like a normal furnace.
experience0.7arcadium_smelt5 keystypefurnaceinputarcadium_rawresultarcadium_ingotcook-time220experience1.0elektron_smelt5 keystypefurnaceinputelektron_rawresultelektron_ingotcook-time220experience1.0oricalco_smelt5 keystypeblastinginputoricalco_rawresultoricalco_rodcook-time160experience1.5Shadowsteel - the crafting table
shadowsteel_sword_craft5 keystypeshapedshape[" A ", " A ", " O "]shadowsteel_sword_craft.ingredients2 keysAarcadium_ingotOoricalco_rodshadowsteel_sword_craftresultshadowsteel_swordgroup'shadowsteel'The group collects the variants together in the recipe book.
shadowsteel_axe_craft5 keystypeshapedshape["AA ", "AO ", " O "]shadowsteel_axe_craft.ingredients2 keysAarcadium_ingotOoricalco_rodshadowsteel_axe_craftresultshadowsteel_axegroup'shadowsteel'shadowsteel_pickaxe_craft5 keystypeshapedshape[AAA, " O ", " O "]shadowsteel_pickaxe_craft.ingredients2 keysAarcadium_ingotOoricalco_rodshadowsteel_pickaxe_craftresultshadowsteel_pickaxegroup'shadowsteel'shadowsteel_shield_craft5 keystypeshapedshape[AEA, AAA, " A "]shadowsteel_shield_craft.ingredients2 keysAarcadium_ingotEelektron_ingotshadowsteel_shield_craftresultshadowsteel_shieldgroup'shadowsteel'Darkflame - the smithing table
darkflame_sword_forge3 keysThe first ingredient is the base, the second the addition, the third (optional) the template. Without the third the netherite template applies.
typesmithinginputs[shadowsteel_sword, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_sworddarkflame_axe_forge3 keystypesmithinginputs[shadowsteel_axe, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_axedarkflame_pickaxe_forge3 keystypesmithinginputs[shadowsteel_pickaxe, oricalco_rod, NETHERITE_UPGRADE_SMITHING_TEMPLATE]+1
resultdarkflame_pickaxeThe anvil
elektron_crossbow_anvil4 keysThe anvil is not a Minecraft recipe: it knows how to combine, repair and rename, and that is all. An "anvil recipe" is therefore the plugin that looks at the two slots and decides what to put in the third. For you writing the file it is the same thing; for the server it is not, which is why it does not appear in the recipe book.
typeanvilinputs[CROSSBOW, elektron_ingot]resultshadowsteel_crossbowlevel-cost12oricalco_bow_anvil4 keystypeanvilinputs[BOW, oricalco_rod]resultdarkflame_bowlevel-cost14Languages
The texts the plugin shows to players, one file per language.
lang/
Texts and messages 2 files
lang/plugins/ShadowCustomizer/lang/ File notes
ShadowCustomizer - english
Every message the plugin shows to players, one file per language. The keys are not listed one by one: here are the files, how many texts they hold and the placeholders they use.
| File | Language | Texts |
|---|---|---|
lang/en_US.yml reference | English | 366 |
lang/it_IT.yml | Italiano | 366 |
Most used placeholders
The plugin replaces them with the right value: leave them written as they are.
<prefix><id><label><count><value><name><list><n><level><targets><max><state><mobs><amount>
Message groups
prefix1common6command6confirm6help11item34mob22enchant22block8recipe17diag7status8reload3license39prompt2menu100enchantments46enchant-target28
Other
Ready-made content, examples, imports: the files you copy and edit as a model.
blocks/
Custom blocks 2 files
blocks/plugins/ShadowCustomizer/blocks/ 2 files with the same structure. Below, 2 of them in full, one for each different shape; the others are listed by name.
furniture.ymlores.yml
Example blocks/furniture.yml
Furniture - decorative blocks with a shape of their own
File notes
These are the same machinery as the ores next door - a note block underneath, one state each - with one difference that changes what you can build: their model is a Blockbench file, not a cube.
SO A CUSTOM BLOCK IS NOT STUCK BEING A CUBE. A chest, a tombstone, a lamp, a chair: anything you can draw fits in a block model, and the pack draws it in the world exactly as drawn. That is what furniture is here, and it needs nothing beyond what is already in the box.
THE ONE HONEST LIMIT: the block you walk into is still a full note block. A tombstone half a block wide looks half a block wide and collides like a whole one, and it cannot be rotated by placing it from a different side - a note block has no facing. Furniture that needs a real hitbox or free rotation is a different mechanism (display entities), and this plugin does not do it today.
Set 'placeable: false' on an item and it can never be put down; these are the opposite - they exist to be placed.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/blocks/furniture.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1runic_chest9 keysname'<light_purple>Runic Chest'lore["<gray>Decorative. Nothing fits inside.", <dark_gray>Furniture]+1
item-materialCHESTThe material of the item in hand when there is no pack.
model'shadow:runic_chest'required-toolaxeA chest breaks with an axe, not with a pickaxe.
drops["runic_chest 1 1 1.0"]break-sound'block.wood.break'place-sound'block.wood.place'runic_chest.on1 keyinteract["sound: block.chest.locked 1 1.4", "particle: ENCHANT 8 0.4"]+1
crypt_tombstone9 keysname'<gray>Crypt Tombstone'lore["<gray>Someone wrote something on it, once.", <dark_gray>Furniture]+1
item-materialSTONE_BRICKSmodel'shadow:crypt_tombstone'required-toolpickaxedrops["crypt_tombstone 1 1 1.0"]break-sound'block.deepslate_bricks.break'place-sound'block.deepslate_bricks.place'crypt_tombstone.on1 keyinteract["sound: particle.soul_escape 0.7 0.6", "particle: SOUL 10 0.3"]+1
Example blocks/ores.yml
The four ore blocks
How this works, in short. a plugin cannot add blocks to Minecraft
What it can do - and what every plugin that has custom blocks does - is take a vanilla block with many visually identical states and use one of them per custom block. Here it is the note block: 27 instruments times 25 notes, of which 648 are handed out.
Keep reading
WHICH STATE BELONGS TO WHICH BLOCK is recorded in blocks-state.yml. Do not edit it and do not delete it: changing it silently turns the blocks already placed in your worlds into different blocks.
YOUR PLAYERS' OWN NOTE BLOCKS KEEP WORKING. A block is ours because we placed it, not because it has the right note - blocks.track-placed in config.yml. It is why redstone note blocks do not mysteriously stop playing on this server.
Every ore needs a pickaxe: the real block underneath is a note block, and a note block breaks with anything.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/blocks/ores.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1antracite_ore8 keysname'<gray>Anthracite Ore'lore["<gray>Black, and heavier than it looks."]item-materialCOAL_OREThe material of the item in hand. The block in the world is a note block anyway: this is only how the item looks when there is no resource pack.
model'shadow:antracite_ore'required-toolpickaxedrops["antracite_raw 1 3 1.0", "antracite_raw 1 1 0.15"]+1
break-sound'block.deepslate.break'place-sound'block.deepslate.place'config-version:
arcadium_ore, elektron_ore, oricalco_ore items/
Custom items 4 files
items/plugins/ShadowCustomizer/items/ 4 files with the same structure. Below, 4 of them in full, one for each different shape; the others are listed by name.
armor.ymlheads.ymlores.ymlweapons.yml
Example items/armor.yml
Shadowsteel - the armour set
Four pieces
Helmet and chestplate carry a 3D model; leggings and boots are flat images, because the set these came from has no model for those two.
Keep reading
WHAT YOU SEE AND WHAT YOU WEAR ARE TWO DIFFERENT THINGS, and both are covered here. 'model' is the item's model: what you see in the inventory and in your hand. 'equipment' is the worn look: the game stops drawing the model once the armour is ON and lays texture layers over the body instead, and that line says which ones. Take it out and the piece goes back to looking like netherite on your back.
The helmet is the exception: on the head slot the game draws the ITEM'S MODEL, so the 3D helmet is worn exactly as it looks in hand. It is how hats work in resource packs.
Every piece asks for a permission: they are meant as a reward, not as something anyone crafts. Take the line out and everybody can use them.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/items/armor.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1shadowsteel_helmet11 keysmaterialNETHERITE_HELMETname'<gray>Shadowsteel Helmet'lore["<dark_gray>Legendary armour", "<gray>Whoever hits you regrets it."]+1
model'shadow:shadowsteel_helmet'equipment'shadow:shadowsteel'The worn look. See equipment.yml in the models extension.
tags[armor, shadowsteel]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]permissionshadowcustomizer.kit.shadowsteelshadowsteel_helmet.attributes2 keysarmor4shadowsteel_helmet.attributes.armor_toughness2 keysvalue3slotheadshadowsteel_helmet.enchantments5 keysprotection6respiration4unbreaking5shadow_thorns3beacon1shadowsteel_chestplate12 keysmaterialNETHERITE_CHESTPLATEname'<gray>Shadowsteel Chestplate'lore["<dark_gray>Legendary armour", "<gray>It puts you back on your feet when you are hit."]+1
model'shadow:shadowsteel_chestplate'equipment'shadow:shadowsteel'The worn look. See equipment.yml in the models extension.
tags[armor, shadowsteel]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]permissionshadowcustomizer.kit.shadowsteelshadowsteel_chestplate.attributes2 keysarmor9shadowsteel_chestplate.attributes.armor_toughness2 keysvalue4slotchestshadowsteel_chestplate.enchantments4 keysprotection6unbreaking5shadow_thorns4second_wind2shadowsteel_chestplate.behaviours1 keyshadowsteel_chestplate.behaviours.take-damage4 keyschance0.2cooldown4scancelfalseactions["damage: 3 on=target", "particle: SOUL 16 0.4", "sound: particle.soul_escape 0.8 0.8"]+1
shadowsteel_leggings11 keysmaterialNETHERITE_LEGGINGSname'<gray>Shadowsteel Leggings'lore["<dark_gray>Legendary armour", "<gray>You always move a little faster."]+1
model'shadow:shadowsteel_leggings'equipment'shadow:shadowsteel'The worn look. See equipment.yml in the models extension.
tags[armor, shadowsteel]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]permissionshadowcustomizer.kit.shadowsteelshadowsteel_leggings.attributes2 keysarmor7shadowsteel_leggings.attributes.armor_toughness2 keysvalue3slotlegsshadowsteel_leggings.enchantments3 keysprotection6unbreaking5swiftstep2shadowsteel_boots11 keysmaterialNETHERITE_BOOTSname'<gray>Shadowsteel Boots'lore["<dark_gray>Legendary armour", "<gray>You fall slower than you should."]+1
model'shadow:shadowsteel_boots'equipment'shadow:shadowsteel'The worn look. See equipment.yml in the models extension.
tags[armor, shadowsteel]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]permissionshadowcustomizer.kit.shadowsteelshadowsteel_boots.attributes2 keysarmor4shadowsteel_boots.attributes.armor_toughness2 keysvalue3slotfeetshadowsteel_boots.enchantments5 keysprotection6feather_falling4depth_strider3unbreaking5featherfall2The elytra
shadowsteel_elytra10 keysAn elytra is worn on the chest like a chestplate, so it takes the same two lines - and they still mean two different things.
Keep reading
'model' is the item: what you see in your hand and in the inventory, a real 3D model here.
'equipment' is the wings on your back once it is on. They are their own layer - 'wings' - because the wing geometry is not the body's, and it is the reason an elytra with only a model looks custom in the inventory and vanilla in flight. See equipment.yml in the models extension.
materialELYTRAname'<light_purple>Shadowsteel Wings'lore["<dark_gray>Legendary armour", "<gray>The void under your feet stops being a problem."]+1
model'shadow:shadowsteel_elytra'equipment'shadow:shadowsteel_wings'The look in flight: the 'wings' layer, see equipment.yml.
tags[armor, shadowsteel]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]permissionshadowcustomizer.kit.shadowsteelshadowsteel_elytra.enchantments3 keysunbreaking5mending1featherfall3 Example items/weapons.yml
Two weapon sets, ready to use
File notes
SHADOWSTEEL is the balanced set: strong, sober, no tricks beyond a good number. DARKFLAME is the loud one: it burns, it explodes, and it costs durability every time it does.
Every piece here has a 3D model. Without the models extension - or on a server with no resource pack - they still work exactly the same and look like the material they are made of.
ONE THING WORTH READING, because it is the most common mistake with custom items: the moment an item declares one attribute, the material's own modifiers DISAPPEAR. A netherite sword that only says "+2 attack speed" deals one damage. keep-default-attributes: true - the default - puts the material's back before yours, which is what you want here.
Every key is English, and so are the names and the lore.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/items/weapons.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1Shadowsteel
shadowsteel_sword10 keysmaterialNETHERITE_SWORDname'<gray>Shadowsteel Sword'lore["<dark_gray>Legendary weapon", "", "<gray>Right click: <white>a leap forward"]+1
model'shadow:shadowsteel_sword'tags[weapon, shadowsteel]keep-default-attributestrueshadowsteel_sword.attributes2 keysattack_damage4shadowsteel_sword.attributes.attack_speed3 keysvalue-0.2operationadd_numberslotmainhandshadowsteel_sword.enchantments5 keysEnchantments past the vanilla maximum: Sharpness 10, where the game stops at 5. Just write them, and the anvil respects them.
sharpness10looting4unbreaking5bloodthirst3execution2shadowsteel_swordflags[ATTRIBUTES]shadowsteel_sword.behaviours1 keyshadowsteel_sword.behaviours.right-click3 keyscooldown6sdurability-cost2actions["velocity: 1.5 0.5", "sound: entity.ender_dragon.flap 0.7 1.4", "particle: CLOUD 24 0.4"]+2
config-version:
shadowsteel_axe, shadowsteel_pickaxe, shadowsteel_bow, shadowsteel_crossbow, shadowsteel_trident, shadowsteel_shield, darkflame_axe, darkflame_pickaxe, darkflame_bow, ranger_crossbow, darkflame_spearDarkflame
darkflame_sword9 keysmaterialNETHERITE_SWORDname'<dark_red>Darkflame Sword'lore["<dark_gray>Legendary weapon", "", "<gray>Every hit: <white>flames", "<gray>Right click: <white>a wave of fire"]+2
model'shadow:darkflame_sword'tags[weapon, darkflame]darkflame_sword.attributes1 keyattack_damage5darkflame_sword.enchantments5 keyssharpness10fire_aspect3unbreaking5wildfire3soulreaper2darkflame_swordflags[ATTRIBUTES]darkflame_sword.behaviours2 keysdarkflame_sword.behaviours.hit-entity2 keyschance0.4actions["fire: 80 on=target", "particle: FLAME 12 0.3"]darkflame_sword.behaviours.right-click3 keyscooldown12sdurability-cost15The wear is what keeps a strong ability fair: you can use it, but it costs. Without it, a free right click becomes the only thing anyone holding this weapon ever does.
actions["damage-nearby: 6 radius=5", "particle: FLAME 60 1.0", "sound: entity.blaze.shoot 1 0.7"]+2
darkflame_shield7 keysmaterialSHIELDname'<dark_red>Darkflame Shield'lore["<dark_gray>Legendary defence", "<gray>Whoever hits you gets burnt."]+1
model'shadow:darkflame_shield'tags[shield, darkflame]darkflame_shield.enchantments3 keysunbreaking6mending1bulwark2darkflame_shield.behaviours1 keydarkflame_shield.behaviours.take-damage4 keyschance0.3cooldown2scancelfalseOn this trigger there is nothing to cancel - the game decides the damage and we answer - and false is already the default.
actions["fire: 60 on=target", "particle: FLAME 14 0.4"] Example items/ores.yml
The four minerals - raw and refined
File notes
Four minerals, each with three forms: the ore block (in blocks/), the raw drop, and what comes out of the furnace. The recipes that turn one into the other are in recipes/.
Names and lore are written here and every player reads them as they are written. Every key on this page is English.
None of these can be placed: they are made of REDSTONE, QUARTZ and other placeable materials, and a right click on the ground would turn them into that material and take the item away. See 'placeable'.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/items/ores.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1config-version:
antracite_raw, antracite_dust, arcadium_raw, arcadium_ingot, elektron_raw, elektron_ingot, oricalco_raw, oricalco_rod Example items/heads.yml
The heads the bosses wear
File notes
A mob in this plugin is a vanilla mob dressed up: you cannot add entity types to Minecraft, and nobody can. What makes a boss look like a boss instead of a wither skeleton with more health is what it WEARS - and the head slot is the piece that changes the silhouette.
So these are items, with a 3D model, that mobs/mobs.yml puts on a mob's head. You can also hand one to a player: they are ordinary items and they work like any other.
Without a resource pack they look like the material they are made of, and the mob still behaves exactly the same.
IN ITALIAN: the Italian version of this file is in esempi/it_IT/items/heads.yml, in the plugin folder. It is not loaded: to use it, copy it over this file, or copy the entries you want.
config-version1pumpkin_king_head7 keysmaterialCARVED_PUMPKINname'<gold>Pumpkin King''s Head'lore[<dark_gray>Trophy, "<gray>It still watches, and it does not", "<gray>like what it sees."]+2
model'shadow:pumpkin_king_head'tags[head, trophy]placeablefalseA carved pumpkin can be placed, and placing it would make the item disappear with everything it is. See 'placeable' in ores.yml.
max-stack1darkflame_helmet9 keysmaterialNETHERITE_HELMETname'<dark_red>Darkflame Helmet'lore[<dark_gray>Trophy, "<gray>Still warm."]model'shadow:darkflame_helmet'tags[head, trophy, darkflame]unbreakabletrueflags[UNBREAKABLE, ATTRIBUTES]darkflame_helmet.attributes1 keyarmor3darkflame_helmet.enchantments3 keysprotection4fire_protection4unbreaking5