Sueta

SkyMines | Placeable Private Mines | Create Custom Mines & U

2.1.0

Place, Upgrade, & Manage Private Mines

·Plugin

SKY MINES
Fully customizable, personal skymines.

Overview Video

Very Outdated (for v1.1.0)
YouTube

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...

Additional Images







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)

More Information
  • /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)

More Information
  • /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

List of 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

mines.yml
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ 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.   ┃
#└━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┘
upgrades.yml
#┌━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┐
#┃ 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
config.yml
# 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

Similar projects

Plugin →