Since then...
- Mines are now completely customizable with unique upgrades paths.
- All configurations have been redone, messages look a lot more polished.
- Multiple commands have been added.
- And so much more...
OVERVIEW SkyMines allows you to give players physical tokens that place private, upgradeable mines. Each token represents a specific mine type with customizable size, layout, and upgrades. Once placed, the mine is only accessible to the owner and can be upgraded through a built-in menu. Server admins can define unique mine types and upgrade paths, including block composition and reset cooldowns. All menus, messages, and behaviors are configurable through the YAML files listed below.
FEATURES
Mines are personal – only the owner of a mine can access and manage them.
Mines are placed using physical token items.
Mines are accessed via right-click on the wall or the /sm panel command.
Mines have holograms that can show its name, owner, and reset timer. Mines have homes that can be set (players must be close to the mine).
Define custom mine types in mines.yml:
Customize token appearance.
Set default size and border type.
Link to unique upgrade paths.
Define custom upgrade types in upgrades.yml:
Composition – define block distributions per level.
Reset Cooldown – reduce time between resets.
Additionally, you can set an upgrade's cost and optional upgrade permission.
Upgrade menus are dynamic—no manual updates needed when editing upgrades.
Mines can be customized with the various options available in the config.yml.
All messages and panel slots are configurable in the messages.yml and menus.yml files.
/sma give [player] {mine} {amount} (skymines.admin.give)
Gives the player mine tokens with the specified type, size, and amount.
Example: /skymines give Notch default 10x10x10 5
/sma lookup [player] (skymines.admin.lookup)
Lists the IDs of the player's skymines.
/sma pickup [player] [id] (skymines.admin.pickup)
Pick up the specified player's skymine.
/sma remove [player] [id] (skymines.admin.remove)
Remove the specified player's skymine.
/sma list (skymines.admin.list)
Lists all enabled/disabled mines.
/sma debug (skymines.admin.debug)
Displays information for the selected mine.
/sma reload (skymines.admin.reload)
Reloads all configuration files.
PERMISSIONS
Player:
skymines.name - Set your mine's name.
skymines.home - Teleport to your mine's home.
skymines.sethome - Set your mine's home.
skymines.settings - Opens the preferences menu.
skymines.settings.notify - Toggle the Notifications setting.
skymines.settings.autoreset - Toggle the Auto Reset setting.
Admin:
skymines.admin - Access to the /sma command.
skymines.admin.debug - Access to the /sma debug command.
skymines.admin.give - Access to the /sma give command.
skymines.admin.list - Access to the /sma list command.
skymines.admin.lookup - Access to the /sma lookup command.
skymines.admin.panel - All skymine panels are accessible via right-click on mine wall.
skymines.admin.pickup - Access to the /sma pickup command.
skymines.admin.remove - Access to the /sma remove command.
skymines.admin.reload - Access to the /sma reload command.
FILE SHOWCASE
Code (Text):
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ This file allows you to create unique mines that have its own token item, ┃
#┃ border type, and upgrade paths. You can even define the default mine size. ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
# Placeholder for the size of the mine.
size-placeholder: "&7[&a{length}&7x&a{height}&7x&a{width}&7]"
# The default token item to reference below.
# This is also used if there is no defined token item for a mine.
default-token:
type: TRIPWIRE_HOOK
name: "&e&lSkyMine Token {size}"
lore:
- "&7Right Click → &ePlaces Structure"
# Here, you can create custom mines with a unique identifier.
mines:
# The identifier of this mine to reference in the give command.
# Example: /sma give <player> default
default:
token: default
# The default size of the mine.
# If you want a different size for this mine, just do /sma give <player> default <LxHxW>
default-size: [10, 10, 10]
# The material that the mine border is made of.
border-type: BEDROCK
# Here, you can reference your upgrades from the upgrades.yml file.
upgrades:
composition: default
reset-cooldown: default
# This one would be /sma give <player> vip-mine.
vip-mine:
token:
type: OMINOUS_TRIAL_KEY
name: "&a&lV&b&lI&c&lP &e&lMine {size}"
lore:
- "&7Right Click → &ePlaces VIP Mine"
default-size: [20, 20, 20]
border-type: NETHERITE_BLOCK
upgrades:
composition: vip-composition
reset-cooldown: vip-reset
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ TECHNICAL NOTE: ┃
#┃ ┃
#┃ A "default" mine isn't strictly required. However, in the case that a player has either: ┃
#┃ 1. A token that has the "skymine" NBT tag without a "skymine-identifier" NBT tag. ┃
#┃ 2. An already placed down mine that has no data from the "identifier" DB column. ┃
#┃ Then, the default mine below will be used in its place. ┃
#┃ The above cases should only happen if you are migrating from SkyMines v1. ┃
#┃ ┃
#┃ This means that the default mine will NOT be used if an invalid identifier is attached ┃
#┃ to a token or saved in the database. I make no assumptions that you actually wanted to ┃
#┃ delete an existing mine path or that a non-existing identifier was somehow saved to the ┃
#┃ database. In any of these cases, it doesn't make sense to permanently convert a player's ┃
#┃ mine to the default path. Instead, a warning message will be sent to the player telling ┃
#┃ them that the mine identifier does not exist (the message will contain the identifier). ┃
#┃ In addition, the mine will be disabled and can only be picked up. ┃
#┃ ┃
#┃ Once you add back in a valid mine above with the same identifier from the warning ┃
#┃ message, the token/mine will start working again. This technically means it's possible ┃
#┃ to disable entire mines by deleting its path, but this wasn't the intended behavior! :) ┃
#┃ ┃
#┃ Phew! Sorry for the wall of text. If you have any questions, please go to the Discord. ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
Code (Text):
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ This file allows you to create unique upgrade paths for each upgrade type. ┃
#┃ These can then be referenced in the mines.yml file. ┃
#┃━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┃
#┃ Upgrade types: composition, reset-cooldown ┃
#┃ By default, all upgrades are available to players. ┃
#┃ ┃
#┃ Want to require permission to upgrade a mine? Simply negative the permission. ┃
#┃ -> ex. the whole type: "-skymines.upgrades.composition" ┃
#┃ -> ex. a specific level: "-skymines.upgrades.composition.2" ┃
#┃ ┃
#┃ ^ After negating permission, the player can no longer upgrade the mine until ┃
#┃ you remove the negation or add the "skymines.upgrades.composition.2" permission. ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
# Upgrade the composition of a mine.
composition:
# The name of this upgrade to reference in the mines.yml file.
default:
# Level of the upgrade.
1:
# Format: {type} {percentage}
# No, it doesn't have to add up to 100%.
upgrade:
- STONE 90%
- IRON_ORE 10%
- GOLD_ORE 5%
2:
cost: 100000
upgrade:
- STONE 70%
- IRON_ORE 15%
- GOLD_ORE 10%
- REDSTONE_ORE 5%
- LAPIS_ORE 5%
3:
cost: 250000
upgrade:
- STONE 50%
- IRON_ORE 20%
- GOLD_ORE 15%
- REDSTONE_ORE 7.5%
- LAPIS_ORE 7.5%
- DIAMOND_ORE 2%
4:
cost: 750000
upgrade:
- STONE 30%
- IRON_ORE 25%
- GOLD_ORE 25%
- REDSTONE_ORE 10%
- LAPIS_ORE 10%
- DIAMOND_ORE 5%
- EMERALD_ORE 5%
vip-composition:
1:
upgrade:
- IRON_ORE 25%
- GOLD_ORE 25%
- DIAMOND_ORE 25%
- EMERALD_ORE 25%
2:
upgrade:
- GOLD_ORE 33%
- DIAMOND_ORE 33%
- EMERALD_ORE 33%
cost: 1000000
3:
upgrade:
- DIAMOND_BLOCK 33%
- EMERALD_BLOCK 33%
- ANCIENT_DEBRIS 33%
cost: 10000000
# Decrease the cooldown until a mine can be reset.
reset-cooldown:
default:
1:
# You can put [seconds/minutes/hours/etc] if you want.
upgrade: 5 minutes
2:
cost: 50000
upgrade: 2 minutes
3:
cost: 100000
upgrade: 1 minute
4:
cost: 150000
upgrade: 30 seconds
vip-reset:
1:
upgrade: 0 seconds
Code (Text):
# Storage options to save the skymines.
storage:
type: SQLite # Options: PostgreSQL, MySQL, SQLite
host: "localhost"
port: 3306
database: "minecraft"
username: "root"
password: ""
# Various options to change the different behaviors of the plugin.
option:
skymine:
# Maximum amount of skymines per player.
max-per-player: 10
# If true, skymines can be placed over transparent blocks (grass, flowers, etc.)
# This does not include chests.
override-transparent-blocks: true
# If true, players can shift-left-click their mine border to instantly teleport to its home.
fast-home: true
# Maximum amount of blocks a player can be from the skymine to set its home.
sethome-distance: 5
# If true, skymine creation ignores physics, allowing them to be created much faster.
# If you are having any problems with physics/lighting due to skymines, feel free to disable this.
ignore-physics: true
token:
# If true, players can no longer drop their skymine token.
prevent-drop: true
reset:
# Should a mine reset replace blocks (inside the mine)? If false, only replaces AIR.
replace-blocks: false
# Should all players inside the mine be teleported to the mine's home on reset?
teleport-home: true
# Should the mine be reset when you upgrade it?
on-upgrade: true
cooldown:
# Cooldown (in seconds) players have to wait if they picked up a skymine.
# Additional option: 'dynamic' - the cooldown to place it back down would be the current time left to reset the mine.
pickup-cooldown: dynamic
hologram:
# Enables holograms for every placed skymine.
toggle: true
# The hologram lines. Placeholders will auto-update if they change.
# Additional placeholder: {reset-cooldown}
lines:
- "&7[&e&lSkyMine&7] &8- &a{label}"
- "&9Owner: &e{player}"
- "&9Reset Timer: &c{time}"
misc:
# Allows us to collect anonymous data about the plugin.
enable-metrics: true
Code (Text):
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ This file contains nearly every message used in this plugin. ┃
#┃━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┃
#┃ Placeholders available for messages involving SkyMines: ┃
#┃ 1. {id} - Index of Mine ┃
#┃ 2. {index} - Index of Mine ┃
#┃ 3. {name} - Name of Mine (or "&8Unknown" if unavailable) ┃
#┃ 4. {label} - Name of Mine (or "#{id}" if unavailable) ┃
#┃ 5. {owner} - Owner's Name of Mine ┃
#┃ 6. {player} - Owner's Name of Mine ┃
#┃ 7. {enabled} - "&2Enabled" or "&cDisabled" ┃
#┃ 8. {identifier} - Identifier of Mine (color-coded) ┃
#┃ 9. {x} - X coordinate of Mine Home ┃
#┃ 10. {y} - Y coordinate of Mine Home ┃
#┃ 11. {z} - Z coordinate of Mine Home ┃
#┃ 12. {world} - World of Mine ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
# General messages:
general:
skymine-list:
top: "&7&l&m━━━━━━━━━━━━━━━━━━&7 &e&lSkyMine &aList &7&l&m━━━━━━━━━━━━━━━━━━"
repeating: "&7→ [#{id}] &eClick to teleport home. &7(&a{name}&7)"
repeating-hover: "&cClick to Teleport Home"
bottom: "&7&l&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
cooldown:
reset-automatic: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ahas been automatically reset."
reset-automatic-multiple: "&2&l✓ &aMultiple &eSkyMines &ahave been automatically reset."
reset-finish: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ais ready to be reset."
pickup-finish: "&2&l✓ &aYou are free to place &eSkyMines &aagain."
# Success messages:
success:
receive: "&2&l✓ &aYou have received &e{amount}x {token}&a."
name: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ahas been renamed &e{name}&a."
upgrade: "&2&l✓ &aYou have upgraded &e{upgrade} &ato level &e{level}&a."
home: "&2&l✓ &aYou have teleported to the &eSkyMine &7(&e{label}&7)."
sethome: "&2&l✓ &aThe new home has been set for &eSkyMine &7(&e{label}&7)&a."
reset: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ahas been reset."
pickup: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ahas been picked up."
place: "&2&l✓ &aThe &eSkyMine &7(&e{label}&7) &ahas been placed."
# Failure messages:
failure:
skymine:
not-loaded: "&4&l❌ &cPlease wait to until all &eSkyMines &chave finished loading."
invalid-name: "&4&l❌ &cThere is no &eSkyMine &cwith the name &e{name}&c."
invalid-index: "&4&l❌ &cThere is no &eSkyMine &cwith the ID &e{id}&c."
invalid-identifier: "&4&l❌ &cThere is no &eSkyMine &cidentifier called &e{id}&c."
none-owned: "&4&l❌ &cYou currently do not own any mines."
max-owned: "&4&l❌ &cMaximum amount of mines reached."
no-space: "&4&l❌ &cThere is no space here to place a &eSkyMine&c."
upgrade-funds: "&4&l❌ &cYou do not have enough money to purchase this upgrade."
upgrade-maxed: "&4&l❌ &cThis &eSkyMine's &cupgrade is already maxed out."
sethome-distance: "&4&l❌ &cYou are too far away from the &eSkyMine &7(&e{label}&7)&c."
token:
no-inventory-space: "&4&l❌ &cYou do not have enough inventory space."
no-drop: "&4&l❌ &cYou are not allowed to drop your &eSkyMine Token&c."
no-place: "&4&l❌ &cYou are forbidden from placing down your &eSkyMine Token&c."
cooldown:
reset: "&4&l❌ &cThe cooldown on the &eSkyMine &7(&e{label}&7) &cis &e{time}&c."
pickup: "&4&l❌ &cDue to picking up a &eSkyMine&c, you must wait another &e{time}&c."
misc:
no-permission: "&4&l❌ &cYou lack the required permission for this action."
# Usage messages (for commands):
usage:
skymine:
- "&7&l&m━━━━━━━━━━━━━━━━&7 &e&lSkyMine &aCommands &7&l&m━━━━━━━━━━━━━━━━"
- "&7- &a/sm list &e: &7Lists all mines."
- "&7- &a/sm name <id> <name> &e: &7Names the mine."
- "&7- &a/sm panel <id> &e: &7Opens the mine's main panel."
- "&7- &a/sm upgrades <id> &e: &7Opens the mine's upgrade panel."
- "&7- &a/sm home <id> &e: &7Teleports to the mine's home."
- "&7- &a/sm sethome <id> &e: &7Sets the mine's home."
- "&7- &a/sm reset <id> &e: &7Resets the mine."
- "&7- &a/sm pickup <id> &e: &7Picks up the mine."
- "&7- &a/sm settings &e: &7Opens the preferences menu."
- "&7&l&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
skymine-name:
- "&eUsage: &a/sm name <id> <name>"
- "&a► &7Attaches a name to the specified mine."
skymine-panel:
- "&eUsage: &a/sm panel <id>"
- "&a► &7Opens up the specified mine's main panel."
skymine-upgrades:
- "&eUsage: &a/sm upgrades <id>"
- "&a► &7Opens up the specified mine's upgrade panel."
skymine-home:
- "&eUsage: &a/sm home <id>"
- "&a► &7Teleports to the specified mine's home."
skymine-sethome:
- "&eUsage: &a/sm sethome <id>"
- "&a► &7Sets the specified mine's home."
skymine-reset:
- "&eUsage: &a/sm reset <id>"
- "&a► &7Resets the specified mine."
skymine-pickup:
- "&eUsage: &a/sm pickup <id>"
- "&a► &7Picks up the specified mine."
# Admin messages:
admin:
general:
skymine-list: "&6Loaded SkyMines &7(&f{amount}&7): {skymines}"
skymine-lookup:
top: "&8&l&m━━━━━━━━━━━━━━━━━━&7 &e&lSkyMine &cList &8&l&m━━━━━━━━━━━━━━━━━━"
repeating: "&7→ [#{id}] &eLocated in '&a{world}&e' &eworld. &7(&a{x}x&7, &a{y}y&7, &a{z}z&7)"
bottom: "&8&l&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
skymine-debug:
- "&8&l&m━━━━━━━━━━━━━━━&7 &e&lSkyMine &cDebug &8&l&m━━━━━━━━━━━━━━━"
- "&7Owner: &a{owner}"
- "&7Index: &a{index}"
- "&7Mine: {identifier} &7({enabled}&7)"
- "&7Border: &a{type}"
- "&7Size: &a{size}"
- "&7Upgrades: &a{upgrades}"
- "&7UUID: &a{uuid}"
- "&8&l&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
success:
give: "&2&l✓ &aYou have given &e{amount}x {token} &ato &e{player}&a."
panel: "&2&l✓ &aYou have accessed &e{player}&a's &eSkyMine &7(&e{label}&7)&a."
home: "&2&l✓ &aYou have teleported to &e{player}&a's &eSkyMine &7(&e{label}&7)&a."
reset: "&2&l✓ &aYou have reset &e{player}&a's &eSkyMine &7(&e{label}&7)&a."
pickup: "&2&l✓ &aYou have picked up &e{player}&a's &eSkyMine &7(&e{label}&7)&a."
remove: "&2&l✓ &aYou have removed &e{player}&a's &eSkyMine &7(&e{label}&7)&a."
reloaded: "&2&l✓ &eSkyMines &ahas been reloaded."
failure:
skymine:
invalid-name: "&4&l❌ &e{player} &cdoes not have a &eSkyMine &cwith the name &e{name}&c."
invalid-index: "&4&l❌ &e{player} &cdoes not have a &eSkyMine &cwith the ID &e{id}&c."
none-owned: "&4&l❌ &e{player} &cdoes not have any &eSkyMines&c."
debug: "&4&l❌ &cYou are not looking at a valid &eSkyMine&c."
give:
too-small: "&4&l❌ &cThe &eSkyMine &cyou are trying to create is too small."
too-big: "&4&l❌ &cSides are not permitted to exceed 100 blocks."
invalid-amount: "&4&l❌ &cThe amount '&e{amount}&c' is an invalid amount."
misc:
no-player-found: "&4&l❌ &cThe player &e{player} &cdoes not exist."
usage:
skymine:
- "&8&l&m━━━━━━━━━━━━━&7 &e&lSkyMine &cAdmin Commands &8&l&m━━━━━━━━━━━━━"
- "&7- &c/sma give <player> <mine> <LxHxW> <amount>"
- "&7- &c/sma lookup <player> &e: &7Lookup a player's mines."
- "&7- &c/sma pickup <player> <id> &e: &7Pickup a player's mines."
- "&7- &c/sma remove <player> <id> &e: &7Remove a player's mines."
- "&7- &c/sma list &e: &7Lists all enabled/disabled mines."
- "&7- &c/sma debug &e: &7Displays information for the selected mine."
- "&7- &c/sma reload &e: &7Reloads config files."
- "&8&l&m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
skymine-give:
- "&eUsage: &c/sma give <player> <mine> <LxHxW> <amount>"
- "&c► &7Gives the player mine tokens with the size and border."
skymine-lookup:
- "&eUsage: &c/sma lookup <player>"
- "&c► &7Lookup the specified player's list of mines."
skymine-pickup:
- "&eUsage: &c/sma pickup <player> <id>"
- "&c► &7Pickup the specified player's mine."
skymine-remove:
- "&eUsage: &c/sma remove <player> <id>"
- "&c► &7Remove the specified player's mine."
Code (Text):
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ This file contains most of the data used to create the various menus. ┃
#┃━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┃
#┃ The upgrade menu is a bit complicated because it has to support ┃
#┃ every combination of upgrade data you give it in the upgrades.yml file. ┃
#┃ ┃
#┃ As a result, I have slightly limited the amount of data that can be customized. ┃
#┃ If you have any questions, please go to the Discord. ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
# Main Menu for the mines.
main-menu:
name: "&8Main Menu"
rows: 3
# Optional material to fill the GUI after all other items are placed.
fill: GRAY_STAINED_GLASS_PANE
slots:
11:
type: BLUE_BED
name: "&aSkyMine Home"
lore:
- "&7On Click → &eTeleport to Mine"
- ""
- "&7Tip: Use &f/sm sethome <id> &7to set a home."
# Command to run. There are 4 special commands: HOME, RESET, UPGRADES, PICKUP
command: HOME
13:
type: NETHERITE_PICKAXE
name: "&aSkyMine Reset &7({time} left)"
lore:
- "&7On Click → &eReset the Mine"
command: RESET
hide: true
15:
type: ANVIL
name: "&aSkyMine Upgrades"
lore:
- "&7On Click → &eOpen the Mine's Upgrades"
command: UPGRADES
17:
type: BARRIER
name: "&cSkyMine Pickup"
lore:
- "&7On Click → &ePickup the Mine"
command: PICKUP
# Settings Menu for player settings.
settings-menu:
name: "&8Settings Menu"
rows: 3
fill: GRAY_STAINED_GLASS_PANE
slots:
13:
type: BOOK
name: "&aNotifications &7({enabled}&7)"
lore:
- "&7Toggles mine notifications."
# Command to run. There are 2 special commands: NOTIFY, AUTO_RESET
command: NOTIFY
15:
type: NETHERITE_PICKAXE
name: "&aAutomatic Mine Reset &7({enabled}&7)"
lore:
- "&7Toggles automatic mine resetting."
command: AUTO_RESET
hide: true
# Upgrade Menu for the mines.
upgrade-menu:
name: "&8Upgrade Menu"
rows: 3
fill: GRAY_STAINED_GLASS_PANE
slots:
13:
# Instead of type/name/lore, you can refer to an entire upgrade below.
upgrade: composition
15:
upgrade: reset-cooldown
# Use this for the upgrade slots:
upgrades:
composition:
type: AMETHYST_CLUSTER
name:
# The default name of the upgrade.
default: "&bComposition &7(&e{level} &7→ &e{next-level}&7)"
# The name used when the upgrade is maxed out.
max: "&bComposition &7(&eMAXED&7)"
lore:
# The next level introduces a new material.
add: "&7(&a+&7) &a{type} &7→ &e{percentage}%"
# The next level removes a previously existing material.
remove: "&7(&c-&7) &c{type}"
# The material percentage is different when going to the next level.
change: "&7(&dx&7) &d{type}&7: &e{percentage}% &7→ &e{next-percentage}%"
# The material percentage is the same in both levels.
same: "&7(&b=&7) &b{type} &7→ &e{percentage}%"
# The material is already maxed out. There is no next level.
max: "&7(&c✯&7) &c{type} &7→ &e{percentage}%"
reset-cooldown:
type: CLOCK
name:
# The default name of the upgrade.
default: "&cReset Cooldown &7(&e{level} &7→ &e{next-level}&7)"
# The name used when the upgrade is maxed out.
max: "&cReset Cooldown &7(&eMAXED&7)"
lore:
# The default lore of the upgrade.
default: "&7({level}) {time}"
# The lore used for the next (and maxed) cooldown available.
next: "&d→ &7(&e{level}&7) &e{time}"