- Versions
- 1.7
- 1.8
- 1.9
- 1.13
- 1.14
- 1.15
- 1.16
- 1.17
- 1.18
- 1.19
- 1.20
- 1.20.6
- 1.21
- 26.1
- 26.2
TEST SERVER
play.drawethree.dev
Packaging includes also sample default schematic already configured by default and ready to go!
YAML:
[/LEFT]
use-minimessage: true
# Enables using of minimessage in titles / texts / messages
enable-debug: false
# Enables extra debug logging (useful for developers)
enable-metrics: false
# Enables bStats plugin metrics (anonymous usage data)
private-mines-world: private_mines
# Name of the world where private mines are placed.
last-x: 0
last-z: 0
# Internal use only. Tracks placement coordinates for the next mine. Do not modify manually!
default-entry-fee: 500000.0
# Default entry fee players must pay to enter another player’s mine.
min-entry-fee: 0.0
max-entry-fee: 1000000.0
# Allowed range for entry fee values.
min-tax: 0.0
max-tax: 30.0
# Allowed tax percentage range players can set for their mines.
default-tax: 10
# Default tax rate applied to mine earnings.
space-between-mines: 250
# Distance in blocks between mines to avoid overlaps.
teleport-on-create: true
# Teleport a player to their mine the moment it is created. Set false to leave them where they are.
default-reset-percentage: 50
# Default percentage of blocks mined before auto-reset.
min-reset-percentage: 30
max-reset-percentage: 90
# Allowed range for configurable reset percentage.
reset-check-interval-seconds: 2
# How frequently (in seconds) to check for auto-reset conditions.
packet-mines: false
# Packet-based (virtual) mines: ore blocks inside the mining region exist only on players'
# clients and in an in-memory store - resets are instant with zero world lag, and remaining-block
# counts are exact. The schematic shell and bedrock walls stay real blocks.
# REQUIRES 'allow-flight=true' in server.properties (players stand on virtual blocks).
# Supported on Spigot or Paper 1.20+ (incl. 26.x); older versions auto-fall back to the classic
# real-block reset. X-Prison integration (autosell, enchants, bombs) requires X-Prison 2026.3.0.0+.
# Mined progress is memory-only: mines render fully filled again after a server restart.
packet-mines-settings:
break-effects: true
# Broadcast block-break particles + sound to other players viewing the mine.
vanilla-drops-to-inventory: true
# Only used when X-Prison is NOT installed: put the mined block into the digger's inventory.
instant-break: false
# true = every block breaks in a single click regardless of pickaxe tier or block hardness
# (the OP-prison feel); false = blocks obey the vanilla break speed (tool tier, Efficiency, Haste).
# Players still need permission to mine the mine. Only affects packet (virtual) mines.
dig-leniency: 0.85
# Fraction of the vanilla-computed break time accepted at dig completion (tolerates timing skew).
# Ignored when instant-break is true.
teleport-on-reset: false
# Packet resets are instant; enable to restore the legacy teleport-to-reset-location behavior.
clear-real-interior: true
# Packet mines render ore as a client-side overlay over server-side AIR and dig virtually. When a
# region changes (create/expand/upgrade) this wipes any REAL blocks left in the mining interior to
# air, so a custom schematic whose mining area contains real blocks (e.g. bedrock) doesn't show
# through mined-out positions and leave the mine unmineable. Runs at most once per region change,
# never per reset. Set false only if your packet schematics have a guaranteed-air mining area.
store-eviction-minutes: 0
# Free the in-memory block store of mines nobody is viewing every N minutes (0 = disabled).
# Note: evicting loses that mine's mined-out progress - it renders fully filled again.
max-digs-per-tick: 2000
# TPS safety net: how many queued block-breaks are processed per server tick (0 = unlimited).
# Sized far above any legitimate per-tick mining rate, so it only spreads a pathological burst
# (e.g. a modified client packet-flooding digs) across ticks instead of processing it all in one
# tick; any excess simply rolls to the next tick. Raise it for very large servers, or set 0 to
# disable. Not an anti-cheat - it never rejects or punishes a dig.
max-queued-digs: 20000
# Memory safety net: the most dig packets that may sit in the pending queue (0 = unbounded). Once
# exceeded (only reachable under a sustained packet flood) the oldest pending digs are dropped so
# memory stays bounded; a dropped dig is simply not applied and the client re-syncs on its next
# interaction. Legit load never approaches this.
auto-save-interval-seconds: 90
# How often (in seconds) plugin saves all mine data.
economy:
type: Vault # [Available: Vault, X-Prison, ExcellentEconomy, PlayerPoints]
currency: tokens # currency name, only used for X-Prison and ExcellentEconomy
player-cooldowns:
mine-reset: 10 # in seconds
block-change: 86400 # in seconds (1 day)
# Reset your mine by pressing the drop key (Q) while holding a pickaxe, without opening a menu.
# Only fires inside your own mine, so dropping a pickaxe anywhere else behaves normally.
# Requires the xprivatemines.command.reset permission and shares the player-cooldowns.mine-reset
# cooldown above with /pmine reset and the menu button (the triggers cannot be alternated to reset
# faster). With packet-mines disabled every reset is a FastAsyncWorldEdit paste, so keep a sensible
# cooldown if you enable this on a busy server.
mine-reset-hotkey:
enabled: false
# true = sneak + Q (recommended: avoids accidental resets and clashes with other plugins)
# false = plain Q
require-sneak: true
main-command:
- pmine
- mine
- privatemine
# Main command aliases
gui:
# Blocks selectable in the Block-Change GUI. Entries may be vanilla materials or custom-block
# ids from a supported provider (when that plugin is installed):
# ItemsAdder: itemsadder:ruby_block (real namespaced id)
# Nexo: nexo:ruby_ore (nexo: prefix + bare id)
# Oraxen: oraxen:ruby_ore (oraxen: prefix + bare id)
# Per-block permission: xprivatemines.block.<material_lowercase>, or for custom blocks
# xprivatemines.block.<provider>.<id> (e.g. xprivatemines.block.nexo.ruby_ore).
blocks:
- STONE
- COBBLESTONE
# Example custom blocks (require the respective plugin):
# - itemsadder:ruby_block
# - nexo:ruby_ore
# - oraxen:ruby_ore
- COAL_ORE
- IRON_ORE
- DEEPSLATE_IRON_ORE
- COPPER_ORE
- GOLD_ORE
- DEEPSLATE_GOLD_ORE
- REDSTONE_ORE
- DEEPSLATE_REDSTONE_ORE
- LAPIS_ORE
- DEEPSLATE_LAPIS_ORE
- EMERALD_ORE
- DEEPSLATE_EMERALD_ORE
- DIAMOND_ORE
- DEEPSLATE_DIAMOND_ORE
- NETHER_QUARTZ_ORE
- NETHER_GOLD_ORE
- IRON_BLOCK
- COPPER_BLOCK
- GOLD_BLOCK
- LAPIS_BLOCK
- REDSTONE_BLOCK
- EMERALD_BLOCK
- DIAMOND_BLOCK
- ANCIENT_DEBRIS
- NETHERITE_BLOCK
# List of blocks players can choose from in the GUI to set their mine content.
sounds:
click: UI_BUTTON_CLICK
success: ENTITY_PLAYER_LEVELUP
info: BLOCK_NOTE_BLOCK_PLING
error: BLOCK_NOTE_BLOCK_BASS
teleport: ENTITY_ENDERMAN_TELEPORT
open: BLOCK_WOODEN_DOOR_OPEN
close: BLOCK_WOODEN_DOOR_CLOSE
upgrade: UI_TOAST_CHALLENGE_COMPLETE
# Sound effects used by various plugin features for feedback.
placeholders:
xprivatemines_is_open:
true: "✔ Open"
false: "✖ Closed"
xprivatemines_has:
true: "true"
false: "false"
# PAPI translations for placeholders
mine-name:
max-length: 32
# Maximum character length of a custom mine name.
mine-motd:
max-length: 128
show-to-owner: false
# Maximum length of the mine MOTD. show-to-owner controls whether the owner also sees their own MOTD on entry.
leaderboard:
categories:
tier:
enabled: true
display-name: "Top Tiers"
gui-title: "<gradient:#FFD700:#FFA500><bold>Leaderboard</bold></gradient> <gray>- Top Tiers"
item-name: "<yellow><bold>#%rank%</bold> <white>%mine_name%"
item-lore:
- " "
- "<gray>Owner: <yellow>%owner%"
- "<gray>Tier: <green>%tier%"
- "<gray>Size: <aqua>%size%x%size%"
- " "
- "<yellow>➤ Click to visit"
size:
enabled: true
display-name: "Biggest Mines"
gui-title: "<gradient:#FFD700:#FFA500><bold>Leaderboard</bold></gradient> <gray>- Biggest Mines"
item-name: "<yellow><bold>#%rank%</bold> <white>%mine_name%"
item-lore:
- " "
- "<gray>Owner: <yellow>%owner%"
- "<gray>Size: <aqua>%size%x%size%"
- " "
- "<yellow>➤ Click to visit"
tax:
enabled: true
display-name: "Highest Tax"
gui-title: "<gradient:#FFD700:#FFA500><bold>Leaderboard</bold></gradient> <gray>- Highest Tax"
item-name: "<yellow><bold>#%rank%</bold> <white>%mine_name%"
item-lore:
- " "
- "<gray>Owner: <yellow>%owner%"
- "<gray>Tax: <red>%tax%%"
- " "
- "<yellow>➤ Click to visit"
fee:
enabled: true
display-name: "Highest Entry Fee"
gui-title: "<gradient:#FFD700:#FFA500><bold>Leaderboard</bold></gradient> <gray>- Highest Entry Fee"
item-name: "<yellow><bold>#%rank%</bold> <white>%mine_name%"
item-lore:
- " "
- "<gray>Owner: <yellow>%owner%"
- "<gray>Entry Fee: <gold>%fee%"
- " "
- "<yellow>➤ Click to visit"
# Leaderboard categories. Each category has an optional gui-title, item-name, and item-lore.
# Placeholders: %rank%, %mine_name%, %owner%, %tier%, %size%, %tax%, %fee%
[LEFT]
YAML:
[/LEFT]
# Each block key is a weight (relative chance) within the tier.
# Keys may be vanilla materials (e.g. STONE) or custom-block ids from a supported provider
# (when that plugin is installed):
# ItemsAdder: itemsadder:ruby_block (real namespaced id)
# Nexo: nexo:ruby_ore (nexo: prefix + bare id)
# Oraxen: oraxen:ruby_ore (oraxen: prefix + bare id)
tiers:
1:
name: Tier 1
upgrade-cost: 0
blocks:
STONE: 80
COBBLESTONE: 20
# Example custom blocks (require the respective plugin):
# itemsadder:ruby_block: 10
# nexo:ruby_ore: 10
# oraxen:ruby_ore: 10
[LEFT]
YAML:
[/LEFT]
private-mine-gui:
title: <dark_gray>» <gradient:#FFD700:#FFA500><bold>Your Private Mine</bold></gradient>
<dark_gray>«
rows: 3
items:
teleport:
enabled: true
slot: 10
material: ENDER_PEARL
name: <gradient:#00FF7F:#32CD32>✦ <bold>Teleport to Mine</bold></gradient>
lore:
- ''
- <gray>Instantly warp to your</gray>
- <gray>personal mining zone.</gray>
- ''
- <yellow><italic>Click to teleport.</italic></yellow>
change-block:
enabled: true
slot: 11
material: DIAMOND_ORE
name: <gradient:#00E5FF:#00BFFF>⛏ <bold>Change Mine Block</bold></gradient>
lore:
- ''
- <gray>Select what block</gray>
- <gray>your mine regenerates with.</gray>
- ''
- <yellow><italic>Click to change.</italic></yellow>
claim-tax:
enabled: true
slot: 12
material: GOLD_INGOT
name: <gradient:#FFD700:#FFA500> <bold>Claim Tax Rewards</bold></gradient>
lore:
- ''
- <gray>Collect earnings from</gray>
- <gray>others mining in your plot.</gray>
- ''
- <yellow><italic>Click to claim money.</italic></yellow>
settings:
enabled: true
slot: 13
material: COMPARATOR
name: <gradient:#1E90FF:#4169E1>⚙ <bold>Settings</bold></gradient>
lore:
- ''
- <gray>Adjust access, tax, and visibility</gray>
- <gray>for your private mine.</gray>
- ''
- <yellow><italic>Click to open settings.</italic></yellow>
upgrade:
enabled: true
slot: 14
material: NETHER_STAR
name: <gradient:#FF77FF:#DA70D6>⬛ <bold>Upgrade Mine</bold></gradient>
lore:
- ''
- <gray>Upgrade your mine to the next tier.</gray>
- ''
- <white>Current Tier:</white> <green>%upgrade_level%</green>
- <white>Next Tier Cost:</white> <gold>%upgrade_cost%</gold>
- ''
- <yellow><italic>Click to upgrade.</italic></yellow>
expand:
enabled: true
slot: 15
material: NETHER_STAR
name: <gradient:#FF77FF:#DA70D6>⬛ <bold>Expand Mine</bold></gradient>
lore:
- ''
- <gray>Increase the size of your mine</gray>
- <gray>for more mining space.</gray>
- ''
- <white>Current Level:</white> <green>%expand_level%</green>
- <white>Next Upgrade Cost:</white> <gold>%expand_cost%</gold>
- ''
- <yellow><italic>Click to expand.</italic></yellow>
reset:
enabled: true
slot: 16
material: BARRIER
name: <gradient:#FF5555:#FF0000>♻ <bold>Reset Mine</bold></gradient>
lore:
- ''
- <gray>Regenerate your mine</gray>
- <gray>with your current block settings.</gray>
- ''
- <yellow><italic>Click to reset.</italic></yellow>
private-mine-settings-gui:
title: <dark_gray>» <gradient:#FFD700:#FFA500><bold>Mine Settings</bold></gradient>
<dark_gray>«
rows: 3
items:
toggle-open:
enabled: true
slot: 10
material: IRON_DOOR
name: <gradient:#FFD700:#FFA500> <bold>Mine Status:</bold> <green>%status%</green></gradient>
lore:
- ''
- <gray>Toggle your mine between:</gray>
- <white>- <green>Open to Public</green></white>
- <white>- <red>Private</red></white>
- ''
- <yellow><italic>Click to toggle.</italic></yellow>
manage-bans:
enabled: true
slot: 11
material: PLAYER_HEAD
name: <gradient:#FF5555:#B22222> <bold>Manage Banned Players</bold></gradient>
lore:
- ''
- <gray>View or unban players</gray>
- <gray>from your private mine.</gray>
- ''
- <yellow><italic>Click to manage bans.</italic></yellow>
set-tax:
enabled: true
slot: 15
material: GOLD_INGOT
name: <gradient:#FFD700:#FFA500> <bold>Set Tax Rate</bold></gradient>
lore:
- ''
- <gray>Current Rate:</gray> <white>%tax%%</white>
- ''
- <gray>Control how much you earn</gray>
- <gray>from other players mining.</gray>
- ''
- <yellow><italic>Click to change.</italic></yellow>
set-entry-fee:
enabled: true
slot: 16
material: EMERALD
name: <gradient:#00FF7F:#32CD32> <bold>Set Entry Fee</bold></gradient>
lore:
- ''
- <gray>Current Fee:</gray> <white>%fee%</white>
- ''
- <gray>Charge visitors to access</gray>
- <gray>your mine.</gray>
- ''
- <yellow><italic>Click to set fee.</italic></yellow>
set-reset-percentage:
enabled: true
slot: 13
material: CLOCK
name: <gradient:#00E5FF:#00BFFF>♻ <bold>Set Reset Percentage</bold></gradient>
lore:
- ''
- <gray>Current Value:</gray> <white>%reset%%</white>
- ''
- <gray>Controls how much must be</gray>
- <gray>mined before auto-reset.</gray>
- ''
- <yellow><italic>Click to change.</italic></yellow>
block-change-gui:
title: <dark_gray>» <gradient:#FFD700:#FFA500><bold>Block Selection</bold></gradient>
<gray>|</gray> <white>Private Mine</white> <dark_gray>«
rows: 5
selected-lore:
- ''
- <gradient:#00FF7F:#32CD32>✅ <bold>CURRENTLY SELECTED</bold></gradient>
unlocked-lore:
- ''
- <gray>Set your mine block to:</gray>
- <white>%block%</white>
- ''
- <yellow><italic>Click to change.</italic></yellow>
locked-lore:
- ''
- <gradient:#FF5555:#B22222>⛔ Locked Block</gradient>
- <dark_gray>Requires permission:</dark_gray>
- <gray>xprivatemines.block.%perm%</gray>
private-mine-banned-players-gui:
title: <dark_gray>» <gradient:#FF5555:#B22222><bold>Banned Players</bold></gradient>
<dark_gray>«
rows: 5
ban-button:
enabled: true
material: ANVIL
name: <gradient:#FFD700:#FFA500>✋ <bold>Ban a Player</bold></gradient>
lore:
- ''
- <gray>Manually enter a player name</gray>
- <gray>to ban from your mine.</gray>
- ''
- <yellow><italic>Click to type a name.</italic></yellow>
slot: 44
banned-player:
name: <gradient:#FF5555:#B22222>%player%</gradient>
lore:
- <gray>Click to unban this player.</gray>
[LEFT]
YAML:
messages:
no-perm: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You don't have permission!
no-mine: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You are not a member of any private mine!
no-money: <red> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You do not have enough money!
mine-generation-started: <gold> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <gray>Generating Private Mine...
mine-created: <gold> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <green>Your private mine was created! Use <white>/pmine</white>
mine-exists: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You already have a private mine!
mine-expand-success: <green>✔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine has been successfully expanded!
mine-expand-failed-max-level: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine is already at the maximum expand!
mine-upgrade-success: <green>✅ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Successfully upgraded your mine to <yellow>%tier%</yellow>!
mine-upgrade-failed-max-tier: <red>❌ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine is already at the highest tier!
mine-full: <gold> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>That mine is currently full!
mine-close: <red> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have closed your private mine.
mine-open: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have opened your private mine.
remove-player: <green>❌ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Successfully removed <yellow>%player%</yellow> from your private mine.
teleport-admin: <aqua> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Teleporting you to <yellow>%player%</yellow>'s <aqua>private mine.
delete-admin: <red> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Deleted <yellow>%player%</yellow>'s private mine. Reset to default.
mine-block-changed: <green>♻ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have changed your mine blocks to <yellow>%block%</yellow>.
mine-refill: <green>♻ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine has been refilled.
player-already-banned: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>That player is already banned.
player-not-online: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>That player is not online.
player-not-banned: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>That player is not banned.
player-banned: <red> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have banned <yellow>%player%</yellow>.
player-unbanned: <green>✅ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have unbanned <yellow>%player%</yellow>.
cant-ban-yourself: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You can't ban yourself!
cant-unban-yourself: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You can't unban yourself!
cant-kick-yourself: <red>⛔ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You can't kick yourself!
player-not-in-mine: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>That player is not in your private mine.
player-kicked: <green>✅ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have kicked <yellow>%player%</yellow> from your mine.
cant-change-block: <yellow>⌛ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You can only change your mine's content once a day!
your-tax: '<aqua> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your tax is: <yellow>%tax%%</yellow>.'
tax-set: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Tax set to <yellow>%tax%%</yellow> successfully!
invalid-tax: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Please enter a tax between <yellow>0%</yellow> and <yellow>30%</yellow>.
your-entry-fee: '<aqua> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your entry fee is: <yellow>%fee%</yellow>.'
fee-set: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Entry fee set to <yellow>%fee%</yellow> successfully!
invalid-fee: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Fee must be more than <yellow>0</yellow> and ≤ <yellow>1,000,000</yellow>.
you-banned: <red> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You are banned from entering this mine.
mine-claimed: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have claimed <yellow>%money%</yellow>!
invalid-reset-percentage: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Please enter a percentage between <yellow>30</yellow> and <yellow>90</yellow>.
reset-percentage-set: <green>♻ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Reset percentage set to <yellow>%reset%</yellow>.
mine-invalid-schematic: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Invalid schematic name '<yellow>%name%</yellow>'.
mine-reset-cooldown: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <red>Please wait <white>%time%</white> seconds before resetting your mine.
no-unclaimed-money: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>You have no earnings to claim.
mine-already-open: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine is already open!
mine-already-closed: <yellow>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine is already closed!
mine-name-set: <green>✏ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Mine name set to <yellow>%name%</yellow>.
mine-name-cleared: <green>✏ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Mine name cleared.
mine-name-too-long: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Name must be <yellow>%max%</yellow> characters or fewer.
your-mine-name: '<aqua>✏ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine name is: <yellow>%name%</yellow>.'
mine-motd-set: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>MOTD set.
mine-motd-cleared: <green> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>MOTD cleared.
mine-motd-too-long: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>MOTD must be <yellow>%max%</yellow> characters or fewer.
your-mine-motd: '<aqua> <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Your mine MOTD is: <yellow>%motd%</yellow>.'
mine-motd-header: "<gray>[<yellow>MOTD<gray>] "
leaderboard-invalid-category: <red>⚠ <bold><gradient:#FFD700:#FFA500>PRIVATE MINES</gradient></bold>
» <white>Unknown category. Available categories<gray>:</gray> <yellow>%categories%</yellow>.
titles:
reset-percentage:
enabled: true
title: <gradient:#FFD700:#FFA500><bold>Reset Percentage</bold></gradient>
subtitle: <gray><italic>Type percentage (e.g. 50). Type 'cancel' to abort.</italic>
fade-in: 10
stay: 60
fade-out: 15
entry-fee:
enabled: true
title: <gradient:#00FFA3:#00BFFF><bold>Entry Fee</bold></gradient>
subtitle: <gray><italic>Type amount in chat. Type 'cancel' to abort.</italic>
fade-in: 10
stay: 60
fade-out: 15
tax-percentage:
enabled: true
title: <gradient:#FF7F50:#FFD700><bold>Tax Percentage</bold></gradient>
subtitle: <gray><italic>Type amount in chat. Type 'cancel' to abort.</italic>
fade-in: 10
stay: 60
fade-out: 15
ban-player:
enabled: true
title: <gradient:#FF0000:#8B0000><bold>Ban Player</bold></gradient>
subtitle: <gray><italic>Type player name in chat. Type 'cancel' to abort.</italic>
fade-in: 10
stay: 60
fade-out: 15
mine-created:
enabled: true
title: <gradient:#FFD700:#FFA500><bold>Mine Created</bold></gradient>
subtitle: <white>Please use /pmine</white>
fade-in: 10
stay: 60
fade-out: 15
mine-expanded:
enabled: true
title: <gradient:#32CD32:#008000><bold>Mine Expanded</bold></gradient>
subtitle: <white>You have expanded your mine to <yellow>%xprivatemines_size%</yellow>
fade-in: 10
stay: 60
fade-out: 15
mine-upgraded:
enabled: true
title: <gradient:#00BFFF:#1E90FF><bold>Mine Upgraded</bold></gradient>
subtitle: <yellow>%xprivatemines_tier%</yellow>
fade-in: 10
stay: 60
fade-out: 15
YAML:
schematic-settings:
pmine:
permission: xprivatemines.schematic.default
# Permission for players to create mine using this schematic
mine-size: 11
# Default size (length/width) of the mine area.
bedrock-walls: false
# Whether to place a 1-block-thick bedrock floor and side walls around the mine region on reset (no top cover).
max-expand: 10
# Maximum number of expansions allowed per mine.
expand-cost: 1000000.0
# Cost to expand the mine.
spawn: 0;100;0;0.0;0.0
# Spawn location inside the mine (x;y;z;yaw;pitch)
reset-teleport: -27;102;25;0.0;0.0
# Where players are teleported during a reset event.
mine:
pos1: -20;82;19
pos2: -30;101;29
priority: 2
wg-flags:
block-break: ALLOW
upc-enchants: ALLOW
# Coordinates and flags defining the mine's block region (WorldGuard or plugin-defined).
region:
pos1: 46;70;73
pos2: -75;144;-32
priority: 1
wg-flags:
build: DENY
block-break: DENY
# Full protected region around the mine (for entry protection, boundaries, etc.).
XPrivateMines — The Private Mine Plugin Built for Modern OP-Prison NetworksGive every player their own mine. Give your server the performance to run thousands of them.
The flagship feature. Set packet-mines: true and the ore inside every mining region stops existing on your server entirely — it's rendered straight to each player's client through packets, backed by a tiny in-memory store.
- Instant resets — an in-memory refill plus a packet resend. No FAWE job, no chunk writes, no TPS hit, even with hundreds of mines resetting simultaneously
- Zero block lag while mining — no physics, no lighting, no disk saves
- Exact block counts — reset thresholds and placeholders are precise, not estimated
- ~144 KB per mine (typical 60×40×60), materialized lazily — mines nobody is near cost almost nothing
- instant-break for one-click OP-prison mining, or vanilla break speed validated server-side so modified clients can't mine faster than they should
- Flood-protected — max-digs-per-tick and max-queued-digs keep tick time and memory bounded under packet spam, without ever rejecting a legitimate dig
- Safe to toggle — the classic FAWE reset stays the default; switching either direction self-heals on the next restart
Full X-Prison Integration
With X-Prison 2026.3.0.0+, virtual blocks behave exactly like real ones across your entire prison economy — autosell with visitor tax, pickaxe exp and block counters, every area enchant (Explosive, Layer, Nuke, Laser Beam), bombs, quests, lucky blocks and battle pass. Area enchants resolve a whole mine in a single bulk call instead of walking it block by block.
- Mine tiers — unlimited configurable tiers, each with its own weighted block composition and upgrade cost. Mines auto-reset into the new composition on upgrade
- Expansion — grow the mine area up to a per-schematic maximum, with per-level costs
- Entry fees & tax — charge visitors to enter, earn a cut of everything they mine, and claim it with /pmine claim. Server-enforced min/max ranges on both
- Leaderboards — /pmine top ranks mines by tier, size, tax or entry fee in a paginated GUI. Click any entry to visit. Fully configurable per category
- Identity — custom mine names and a MOTD shown to every visitor
- Access control — open/close to the public, plus per-mine ban and kick lists
All three supported side by side, everywhere vanilla blocks are accepted — tier compositions, the player-facing block picker, GUI icons and /pmine forcesetblock. Each provider is a soft dependency: uninstalled providers fall back to stone with a console warning and leave the rest of your config untouched. IDs resolve automatically once the provider loads and re-check on reload.
In-Game Schematic Creator
Build a new mine type without ever touching FAWE or a config file. /pmine schematic opens a guided setup board: a selection wand for build/mine/protection regions, a WorldGuard flag editor cycling ALLOW → DENY → NONE, spawn and reset points, then Create. The plugin saves the .schem, writes the complete schematic-settings.yml entry with the mine size worked out for you, and reloads it so players can use it immediately. Every step has a command equivalent.
️ Scalable Infrastructure
- Pre-generation — /pmine pregen [schematic] [amount] builds mines in bulk ahead of demand; unowned mines are recycled to new players instead of pasting fresh. Monitor with /pmine status, halt with /pmine pregenstop
- O(1) mine lookup — a chunk index resolves "which mine is this block in" instantly instead of scanning every mine, benefiting packet and classic modes alike
- Parallel startup loading and a single consolidated mines.yml — 10× faster loading than per-file storage
- Unlimited schematic types — permission-gated per type, so VIP and elite ranks get bigger mines
- Bedrock walls — optional auto-generated floor and side walls, rebuilt to match current size on every reset
Force-create, force-delete, force-upgrade, force-expand and force-set-block on any player's mine. Live GUI listings of all mines including unclaimed pre-generated ones. /pmine reload picks up config, schematic and cooldown changes without a restart. Runtime addon manager GUI.
Integrations & Flexibility
- Four economy providers — Vault, X-Prison tokens, ExcellentEconomy/CoinsEngine, PlayerPoints
- PlaceholderAPI — 20+ placeholders including leaderboard ranks, reset progress, unclaimed earnings and tier state
- WorldGuard — per-mine regions with configurable flags on both the mineable area and the protected outer zone
- MiniMessage everywhere — gradients and modern formatting in messages, titles and GUIs
- Addon API — a public developer API with events (MineBlockBreakEvent), economy access, mine lookup/reassignment and runtime addon management
Paper or Spigot 1.13+ (Paper recommended) · Java 17+ · Vault · FastAsyncWorldEdit · WorldGuard · helper
Optional: PlaceholderAPI, X-Prison, ItemsAdder, Nexo, Oraxen, Multiverse-Core
Give your players power, profit, and freedom. Download XPrivateMines today!
Detailed Features and other informations can be found here.
Official Plugin Compatibility: Spigot/Paper 1.13-26.X
Copyright © 2026 X Private Mines | www.drawethree.dev | Bc. Ján Kluka
Official Plugin Compatibility: Spigot/Paper 1.13-26.X
Copyright © 2026 X Private Mines | www.drawethree.dev | Bc. Ján Kluka