Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/GPExpansion
GPExpansion

GPExpansion

The ultimate add-on for GriefPrevention 3D Subdivisions

158
4

GPExpansion v1.0.8

release4 мая 2026 г.

GPExpansion v1.0.8

Bug Fixes

Config Migration Fix

Fixed a critical bug in the player-commands section migration that could corrupt config.yml:

  • The ensurePlayerCommandPresent() method now properly inserts new entries immediately after the player-commands: header
  • Previously, the insertion logic could place entries at incorrect indentation levels, causing YAML parse errors
  • This fixes the InvalidConfigurationException: expected <block end>, but found '-' error during plugin startup

Technical Changes

  • VersionManager.java: Rewrote ensurePlayerCommandPresent() to:
    • Detect the player-commands: header with proper regex matching
    • Preserve existing indentation structure
    • Insert entries immediately after the header before existing list items
    • Add proper logging for insertion failures

Migration

If your config.yml was corrupted by v1.0.7's migration:

  1. Stop your server
  2. Delete or rename plugins/GPExpansion/config.yml
  3. Start the server - a fresh config will be generated
  4. Re-apply your custom settings from backup

Alternatively, manually fix the YAML structure ensuring player-commands entries are indented with 2 spaces:

player-commands:
  - claimfly.use
  - claims

Files Changed

  • src/main/java/codes/castled/gpexpansion/config/VersionManager.java

Notes

  • No new features in this release - strictly a bugfix for the config migration
  • All existing claim flight functionality remains unchanged
  • PlaceholderAPI placeholders, admin commands, and passive claim flight mode work as documented in v1.0.7

GPExpansion v1.0.7

release4 мая 2026 г.

GPExpansion v1.0.7

Highlights

  • Timed Claim Flight — Ported claim flight from the GriefPrevention3D-ClaimFly fork and expanded it into a time-bank based toggle feature.
  • Passive Claim Flight Option — Added a config toggle to allow claim flight without the time bank.
  • Claim Flight Admin Tools — Added /claimfly management commands for staff.
  • PlaceholderAPI Support — Added claim flight time/status placeholders.
  • Config Repair — Fixed malformed player-commands handling and added automatic claimfly.use insertion.

New Features

Timed Claim Flight

Claim flight now grants flight only when the player has all required conditions:

  • Permission: griefprevention.claimfly.use (default: true)
  • Available time: player must have claim flight time remaining
  • Toggle enabled: player must have claim flight enabled with /claimfly or /claim fly
  • Claim access: player must be inside a claim they have access/trust in
  • Gamemode: Survival or Adventure only

When active, remaining claim flight time is consumed while the player is receiving claim flight.

Passive Claim Flight Mode

Added:

passive-claim-flight: false

When set to true, players with griefprevention.claimfly.use can use claim flight in owned/trusted claims without needing claim flight time. This disables the time-bank requirement and prevents claim flight time from being consumed while passive mode is active.

Player Commands

  • /claimfly — Toggles personal claim flight on/off
  • /claim fly — Alias through the main /claim command

Players without remaining claim flight time cannot enable the toggle.

Admin Commands

Staff with gpx.admin can manage online players' claim flight time:

  • /claimfly add <player|all|*> <time>
  • /claimfly check <player|all|*>
  • /claimfly reset <player|all|*>
  • /claimfly take <player|all|*> <time>
  • /claimfly set <player|all|*> <time>

Supported time examples:

  • 30m
  • 1h
  • 1h20m12s
  • 1d

PlaceholderAPI

Added placeholders:

  • %claim_flight_time% — Remaining claim flight time, formatted like 1h 20m 12s or 0s
  • %claim_flight% — Returns yes if the player has claim flight time remaining, otherwise no

Claim Flight Safety

  • Automatically revokes claim flight when leaving a valid claim or running out of time
  • Applies slow falling for 5 seconds if the player was actively flying when flight is revoked
  • Periodic reconciler runs every 2 seconds to catch:
    • Gamemode changes
    • Permission revocation
    • Trust/access changes
    • Time expiration
  • Tracks only flight granted by claimfly so other plugin flight sources are not stripped

Fixes

  • Fixed PlayerJoinEvent NullPointerException caused by storing null claim values in a ConcurrentHashMap
  • Fixed player-commands parsing so hyphenated permission names like sign.create.self-mailbox are not split incorrectly
  • Disabled the config normalization routine that could corrupt YAML indentation for claim.toggleglobal.1
  • Added automatic ensure logic for claimfly.use in existing player-commands sections

Migration

The default config.yml now includes:

passive-claim-flight: false

player-commands:
  - claimfly.use

Existing installs will automatically add passive-claim-flight: false if it is missing and append claimfly.use to player-commands if it is missing. This grants griefprevention.claimfly.use through the dynamic gpx.player permission path.

Claim flight balances and toggle states are stored in:

plugins/GPExpansion/claim-flight.yml

Technical Notes

  • Uses GPBridge for reflection-based GriefPrevention API access
  • Folia-compatible via SchedulerAdapter
  • Uses a persistent claim flight manager for player time balances and toggle states
  • Only applies to Survival and Adventure gamemodes
  • Creative and Spectator gamemodes manage their own flight and are ignored by claimfly

GPExpansion v1.0.6

release1 мая 2026 г.

GPExpansion v1.0.6

Highlights

  • Real VaultUnlocked v2 support: /buyclaimblocks and the rest of the economy flow now correctly use the modern UUID + BigDecimal API.
  • The /buyclaimblocks confirmation chest is now fully translatable via a new guis/buyclaimblocks-confirm.yml.
  • New layout for the confirmation menu: Cancel · Info · Confirm (red, gold ingot, green).
  • Clearer error message when an economy provider plugin is missing vs. when Vault itself is missing.
  • Stopped the duplicate-permission warnings on startup when running alongside GriefPrevention.
  • PermissionManager now tolerates malformed player-commands entries in config.yml.
  • Source repackaged from dev.towki.gpexpansion to codes.castled.gpexpansion.

Translatable Confirmation GUI

A new file is shipped to plugins/GPExpansion/guis/buyclaimblocks-confirm.yml on first run. It controls every visible string and item inside the confirmation chest:

title: "&6Buy {amount} blocks for {totalCost}"
filler:
  material: GRAY_STAINED_GLASS_PANE
slots:
  cancel: 0
  info: 2
  confirm: 4
items:
  info:
    material: GOLD_INGOT
    name: "&6&l{amount} Claim Blocks"
    lore:
      - ""
      - "&7Cost per block: &e{cost}"
      - "&7Total cost: &a{totalCost}"
  confirm:
    material: LIME_WOOL
    name: "&a&lCONFIRM"
    lore:
      - ""
      - "&7Click to purchase"
      - "&e{amount} &7claim blocks"
  cancel:
    material: RED_WOOL
    name: "&c&lCANCEL"
    lore:
      - ""
      - "&7Click to cancel"

Placeholders ({amount}, {cost}, {totalCost}) are pre-formatted by your active economy. The defaults match the previous English text, so existing servers see no visible change until they translate the file.

Chat-side messages (cost mismatch, purchase confirmation, etc.) continue to be sourced from GriefPrevention's messages.yml via the v1.0.5 bridge.

Repackage: codes.castled.gpexpansion

The Java sources moved from dev.towki.gpexpansion to codes.castled.gpexpansion. This is purely a namespace/branding change — there is no behavioral difference and no migration step is required.

Compatibility

  • Paper API 1.26.1 (Java 21).
  • Folia-supported.
  • GriefPrevention3D v17.3.10+ (uses the same Messages enum bridge introduced in v1.0.5).
  • Vault, VaultUnlocked v1, VaultUnlocked v2.x, or any provider that registers net.milkbowl.vault.economy.Economy or net.milkbowl.vault2.economy.Economy.

Files Added / Changed

  • Added src/main/resources/guis/buyclaimblocks-confirm.yml.
  • Refactored BuyClaimBlocksConfirmationGUI to render fully from the new YAML with English fallbacks.
  • Refactored GPExpansionPlugin economy methods (getBalance, hasMoney, withdrawMoney, depositMoney, formatMoney) for v2 BigDecimal/UUID + new interpretEconomyResponse helper + new isVaultPluginInstalled helper.
  • Refactored BuyClaimBlocksCommand to differentiate "no Vault" vs "no provider".
  • Refactored PermissionManager.updatePlayerCommandPermissions() for malformed-entry tolerance.
  • Cleaned paper-plugin.yml (removed duplicate griefprevention.claims / griefprevention.transferclaim declarations).
  • Renamed all source packages from dev.towki.gpexpansioncodes.castled.gpexpansion.

GPExpansion v1.0.5

release30 апреля 2026 г.

GPExpansion v1.0.5

Highlights

  • /buyclaimblocks chat output is now translatable through GriefPrevention's messages.yml.
  • Added a public GPBridge.getGPMessage(...) accessor so other GPExpansion features can reuse GP-side translations without duplicating strings.
  • Added GPExpansionPlugin.getBalance(OfflinePlayer) for richer "not enough money" error context.

Unified Translations With GriefPrevention

Server admins reported that strings like "This command can only be used by players." and "Economy features are disabled on this server." could not be translated for the /buyclaimblocks flow because they were hard-coded in GPExpansion. This release routes the chat-side strings through GriefPrevention's existing messages.yml, so a single translation pass covers both plugins.

The following messages are now read from plugins/GriefPreventionData/messages.yml (with GP3D v17.3.10+, or any GP fork that exposes the Messages enum):

  • CommandRequiresPlayer — sent when the command is used from console.
  • EconomyDisabled — when the claim-blocks economy feature is disabled.
  • EconomyNoVault — when no Vault provider is hooked.
  • EconomyBuyBlocksUsage — when the amount argument is missing.
  • EconomyInvalidAmount — when the amount argument is not a positive integer.
  • EconomyNotEnoughMoney — supports {0} cost and {1} balance placeholders.
  • EconomyPurchaseCancelled — sent when the player clicks the GUI cancel button.
  • EconomyBuyBlocksConfirmation — supports {0} amount, {1} cost, {2} new total placeholders.

If GriefPrevention is missing or running an older fork that does not expose those keys, GPExpansion silently falls back to the same English text shipped in v1.0.4, so behavior is unchanged for that case.

GUI-only strings (button labels, item names, hopper title, lore) still live in plugins/GPExpansion/lang.yml and are unaffected by this change.

Technical Improvements

  • GPBridge.getGPMessage(String key, String... args) and getGPMessageOr(String key, String fallback, String... args) provide reflective access to GP's translated messages, with cached lookups for both the Messages enum class and the DataStore.getMessage method.
  • GPExpansionPlugin.getBalance(OfflinePlayer) exposes a unified balance read that supports both legacy Vault and Vault 2 providers.
  • BuyClaimBlocksCommand and BuyClaimBlocksConfirmationGUI were refactored to use the new bridge methods; English defaults remain inline as fallbacks.

GPExpansion v1.0.4

release21 апреля 2026 г.

GPExpansion v1.0.4

Highlights

  • Added a new /buyclaimblocks confirmation menu and full purchase flow driven from GPExpansion.
  • Significant /claimmap performance pass for large claims and long shaped edits.
  • Added in-canvas panning controls so the map editor can be navigated without touching the spyglass icon.

Buy Claim Blocks Confirmation Flow

  • Added a new hopper-style confirmation GUI for /buyclaimblocks <amount>.
    • Center slot shows the total cost and cost-per-block derived from GriefPrevention's economy config.
    • Dedicated Confirm (lime) and Cancel (red) buttons, with glass-pane fillers between them.
    • Closing the inventory without clicking Confirm cancels the purchase cleanly.
  • The command now routes entirely through GPExpansion when present:
    • validates GriefPrevention availability and claimBlocksEnabled,
    • requires a Vault or VaultUnlocked provider,
    • re-checks balance at the moment of confirm to avoid race conditions,
    • refunds automatically if the claim-block credit step fails.
  • Added tab-completion with common purchase sizes (10, 50, 100, 500, 1000).

Claim Map Editor Performance

  • Reduced per-click latency on /claimmap for large claims by:
    • reusing cached boundary state between consecutive shaped edits,
    • short-circuiting polygon rebuilds on no-op edits,
    • avoiding repeated reflective lookups into GriefPrevention internals on the hot path.
  • Improved frame-to-frame update cost when dragging or repeatedly clicking tiles, so long shaped paths can be drawn in a single session without hitches.
  • Cut down redundant visualization refreshes during multi-tile edits.

In-Canvas Panning Options

  • Added in-canvas panning so the map can be moved without touching the spyglass icon.
    • Dedicated pan controls shift the viewport while keeping selection and edit state.
    • Panning works in both Basic and Shaped edit modes.
    • Panning respects the current zoom level and snaps to the active tile grid so edits stay aligned after moves.
  • Selection and partial-tile overlays stay consistent across pans so in-progress shaped edits are not lost by navigating the canvas.

Technical Improvements

  • Added public helpers on the GP bridge for reading the claim-blocks economy config and crediting bonus claim blocks through the normal save path.
  • Reduced allocations in the map editor's tile refresh loop, especially for claims with many cells or long perimeters.

Recommended Pairing

  • Pair this release with GriefPrevention v17.3.5 for the shaped-claim performance work that enables large shaped path creation driven from the map editor.

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:GPL-3.0-only
Опубликован:4 месяца назад
Обновлён:1 неделю назад
Главная