Skip to content

Changelog

Jan Kluka edited this page Jun 26, 2026 · 6 revisions

Changelog

All notable changes to X-PrivateMines are listed here, newest first.


[2026.2.3.0] — 2026-06-26

New Features

  • Full ItemsAdder support. ItemsAdder custom blocks can now be used everywhere vanilla blocks are used:

    • Mine tiers — add custom block ids to any tier in mine-tiers.yml (e.g. itemsadder:ruby_block: 20).
    • Block selection — list custom block ids under gui.blocks in config.yml so players can pick them from the Block Change GUI. Each is gated by xprivatemines.block.<namespace>.<id>.
    • GUI icons — use a custom item id in the material: field of any menu in guis.yml.
    • /pmine forcesetblock <player> <id> accepts ItemsAdder ids too.

    ItemsAdder is an optional (soft) dependency — nothing changes if it is not installed, and existing vanilla configs keep working unchanged. Supported type: ItemsAdder "real" blocks, which fill/reset at full speed and drop correctly when mined. Custom blocks resolve automatically once ItemsAdder finishes loading and are re-checked after /iareload.


[2026.2.2.4] — 2026-06-03

New Features

  • Custom mine names. Mine owners can give their mine a personal display name with /pmine setname <name>. The name appears in the public mines list and in the %xprivatemines_name% placeholder. Run /pmine setname clear to revert to the default ("OwnerName's Mine").

  • Mine MOTD. Owners can set a welcome message shown to every player who enters their mine with /pmine setmotd <message>. Run /pmine setmotd clear to remove it. Whether the owner themselves sees the MOTD is controlled by mine-motd.show-to-owner in config.yml.

  • Leaderboards. /pmine top [category] opens a paginated GUI ranking all mines. Four built-in categories: tier, size, tax, and fee. Players can click any entry to visit that mine (entry fee and ban rules still apply). Everything shown in the GUI — title, item name, and lore — is configurable per category in config.yml.

For Developers & Dashboard

  • PrivateMine interface now exposes getMineName(), setMineName(), getMineMotd(), setMineMotd(), and getDisplayName().
  • Dashboard mine endpoints now include mineName, displayName, and mineMotd fields.
  • New dashboard endpoints: PUT /api/mines/{uuid}/name, PUT /api/mines/{uuid}/motd.
  • Three new leaderboard endpoints: /api/leaderboards/largest-mines, /highest-fee, /highest-tax.

New PlaceholderAPI Placeholders

Placeholder Description
%xprivatemines_name% Mine display name (custom name if set, otherwise "OwnerName's Mine")
%xprivatemines_motd% Mine MOTD (empty string if not set)
%xprivatemines_top_<category>_<rank>_name% Display name of the mine at leaderboard rank N
%xprivatemines_top_<category>_<rank>_owner% Owner name of the mine at leaderboard rank N
%xprivatemines_top_<category>_<rank>_value% Sort-field value for the mine at rank N

Configuration Changes

  • config.yml — New mine-name section (max-length: 32).
  • config.yml — New mine-motd section (max-length: 128, show-to-owner: false).
  • config.yml — New leaderboard.categories section with four configurable categories (tier, size, tax, fee). Each category accepts enabled, display-name, gui-title, item-name, and item-lore.
  • messages.yml — Nine new keys: mine-name-set, mine-name-cleared, mine-name-too-long, your-mine-name, mine-motd-set, mine-motd-cleared, mine-motd-too-long, your-mine-motd, mine-motd-header, leaderboard-invalid-category.

[2026.2.2.3] — 2026-05-27

Performance

  • Servers with many mines start up noticeably faster. Mines are now loaded in parallel at startup instead of one by one, cutting load times significantly on large servers.
  • Removed a hidden per-mine block scan on startup. Previously, the plugin scanned every block inside each mine region when the server started — on large mines this could add seconds of startup time per mine. This scan has been replaced with a lightweight counter that stays accurate in real time.

Bug Fixes

  • Mines with a missing WorldGuard region no longer cause issues on startup. If a mine's region was manually deleted from WorldGuard, the plugin would silently fail to load that mine correctly. It now detects the missing region, skips the affected mine, and logs a clear warning instead.
  • Kicking a player from their mine now always works. If your server does not have a /spawn command, kicked players are now sent to the mine's reset location as a fallback rather than staying put.

For Addon Developers

  • Addons can now manage other addons via the API. XPrivateMinesAPI has four new methods for listing, enabling, disabling, and loading addons at runtime.
  • New MineBlockBreakEvent. Fired every time a player breaks a block inside a mine. Addons and other plugins can now listen to or cancel these events.
  • Economy operations are now accessible via the API through the MineEconomyProvider interface.
  • New API methods on PrivateMinesManager: look up mines by UUID or owner, list all schematics, reassign a mine to another player, and read pregen progress counters.
  • Addons can now safely use the API in their onEnable. The API is initialised before any addons are loaded, and addons are reloaded automatically when /pmine reload is run.

[2026.2.2.2] — 2026-05-26

Bug Fixes

  • Fixed server error when force-upgrading an offline player's mine. Running /pmine forceupgrade on a player who is not currently online no longer causes a console error.
  • Fixed /pmine claim depositing $0. Claiming tax earnings when nothing has been earned now shows a proper "no earnings" message instead of claiming $0.
  • Fixed /pmine open and /pmine close not checking current state. Both commands now inform the player if their mine is already in the requested state, instead of silently repeating the action.
  • Fixed back-navigation breaking after banning a player. After banning someone via the Manage Bans menu, closing the ban list now correctly returns to the Mine Settings GUI as expected.

New Features

  • Block change cooldown is now enforced. Players can only change their mine block once per day (default 86400 seconds, configurable via player-cooldowns.block-change in config.yml). The cant-change-block message in messages.yml was previously defined but never actually sent — it is now.
  • Back button in Block Selection GUI. A Barrier button at the bottom-right of the block picker now returns players to the main mine GUI without having to close the inventory.
  • Three new PlaceholderAPI placeholders:
    • %xprivatemines_entry_fee% — Entry fee (formatted by economy provider)
    • %xprivatemines_unclaimed_money% — Unclaimed tax earnings (formatted by economy provider)
    • %xprivatemines_reset_progress% — Current mine fill percentage (e.g. 75.00%)

Configuration

config.yml — new key under player-cooldowns:

player-cooldowns:
  mine-reset: 10
  block-change: 86400   # NEW — seconds between block changes (default: 1 day)

messages.yml — three new keys:

no-unclaimed-money: ...   # Shown when /pmine claim is run with no earnings
mine-already-open: ...    # Shown when /pmine open is run on an already-open mine
mine-already-closed: ...  # Shown when /pmine close is run on an already-closed mine

[2026.2.2.1-BETA]

New Features

  • Bedrock walls — Each schematic can now be configured to surround the mine with bedrock walls and floor on every reset. Enable per schematic in schematic-settings.yml with bedrock-walls: true.

Bug Fixes

  • Fixed orphaned bedrock blocks remaining after /pmine forceexpand shrinks a mine to a smaller size.

[2026.2.2.0-BETA]

  • Updated to support Minecraft 1.26.x.

[2026.2.1.0]

  • Improved mine loading efficiency by 10×.
  • All mine data is now stored in a single mines.yml file instead of individual files per mine.
  • One-time migration command: /pmine migrate confirm. See Setup for instructions.
  • Unclaimed (pre-generated) mines are now visible in /pmine adminlist.

[2026.2.0.8]

  • Fixed issues with /pmine list.
  • Min/max tax percentage limits now also enforced in GUI edits.

Clone this wiki locally