SkyMines | Placeable Private Mines | Create Custom Mines & Upgrades icon

SkyMines | Placeable Private Mines | Create Custom Mines & Upgrades -----

Place, Upgrade, & Manage Private Mines



SKY MINES
Fully customizable, personal skymines.

Very Outdated (for v1.1.0)


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...
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]
[​IMG]

IMPORTANT NOTE
  • Midnight v1.2.8 or later is required. It's my library! : )
  • Vault is required. Used for mine upgrades.
  • Requires Java 21.
  • It has only been tested on Spigot 1.21.
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.
  • Multiple storage options: PostgreSQL, MySQL, SQLite
PLAYER WORKFLOW
  • Players can receive SkyMine Tokens that hold the type and size of their mine.
  • Players can right-click a SkyMine Token over air to place it down.
  • Players can right-click the border of a SkyMine to open its Main Menu.
  • Players can then choose to Go Home, Reset Mine, Upgrade the Mine, or Pickup Mine.
  • Players can set the mine's home via the /sm sethome [id] command.
  • Players can set the mine's name via the /sm name [id] [name] command.
  • Players can list and teleport to their mines via the /sm list command.
  • Players can edit their mine preferences via the /sm settings command.
    • Notifications: Toggle cooldown and other mine notifications.
    • Automatic Reset: Toggle automatic resetting of mines (player must be online).
  • Players can shift-left-click the border of a SkyMine to instantly teleport to its home.
PLAYER COMMANDS (aliases: /skymines, /skymine, /sm)
[​IMG]

  • /skymines
    • View help information on skymine commands.
  • /sm list
    • Lists the IDs of your skymines, along with an easy way to teleport to them.
  • /sm name [id] [name] (skymines.name)
    • Attaches a name to the specified skymine.
  • /sm panel [id]
    • Opens up the main panel for the specified skymine.
  • /sm upgrades [id]
    • Opens up the upgrade menu of the specified skymine.
  • /sm home [id] (skymines.home)
    • Teleports to the specified skymine.
  • /sm sethome [id] (skymines.sethome)
    • Sets the home of the specified skymine.
  • /sm reset [id]
    • Resets the specified skymine.
  • /sm pickup [id]
    • Picks up the specified skymine.
  • /sm settings
    • Opens up the preferences menu.

ADMIN COMMANDS (aliases: /skyminesadmin, /skymineadmin, /sma)
[​IMG]

  • /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}"

SUPPORT / SUGGESTIONS

[​IMG]
Resource Information
Author:
----------
Total Downloads: 1,543
First Release: Apr 14, 2022
Last Update: Apr 24, 2025
Category: ---------------
All-Time Rating:
4 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings