Sueta

AmplProtections

1.0.20

AmplProtections is an advanced Minecraft 1.21+ protection plugin that adds customizable land protection systems with blocks, flags, rentals, rollback, and economy integration.

·Plugin
  1. 1.0.20latestAmplProtections 1.0.20Aug 27, 2026
    ---

    [1.0.20] - 2026-08-27

    Added
    - Added a dedicated migration log at plugins/AmplProtections/logs/migration.log. - Added a configurable database migration progress menu for players. - Added developer-controlled configuration for migration menu slots, materials, titles, and lore. - Added protection inactivity tracking and automatic expiry cleanup.
    Fixed
    - Fixed SQLite to MySQL migration failing when SQLite stored created_at as epoch milliseconds. - Fixed migration retries removing related members, flags, and rentals through MySQL REPLACE INTO cascades. - Fixed migration support for numeric, textual, and boolean flag values. - Fixed environmental flags being loaded as permission flags instead of boolean flags after migration. - Preserved protection, member, flag, rental, rollback, merge, and preset relationships during database migration. ---
    16 downloads
  2. 1.0.19Changelog - AmplProtections 1.0.19Aug 14, 2026

    Changelog

    All notable changes to AmplProtections will be documented in this file. ---

    [1.0.19] - 2026-08-14

    Bug Fixes
    - Fixed menu button collisions: disabled buttons no longer intercept clicks when an enabled button uses the same slot. - Fixed menu item names and lore appearing italic by default. - Fixed concurrent flag writes that could overwrite or erase newer flag changes. - MySQL database writes are now processed in order to prevent races between full flag saves and individual flag updates.
    Maintenance
    - Replaced unused imports, fields, and methods reported by the Java analyzer. - Added explicit handling for Eclipse null-safety warnings in Bukkit callbacks. - Kept skull profile handling compatible with the Paper 1.21.1 API. - Updated the plugin and Maven project version to 1.0.19. ---
    11 downloads
  3. 1.0.18AmplProtections 1.0.18Aug 3, 2026
    ---

    [1.0.18] - 2026-08-03

    🔧 Database & Connection Pool
    - MySQL: Plugin now auto-creates the database if it doesn't exist (CREATE DATABASE IF NOT EXISTS). No need to manually create it anymore. - MySQL: Enabled TCP keepalive (120s) to prevent the connection pool from becoming unresponsive on unstable networks. - MySQL: Increased connectionTimeout from 5s to 15s to handle server load spikes. - SQLite: Reduced maximumPoolSize from 5 to 1 — SQLite is an embedded database and does not benefit from multiple connections, which could cause SQLITE_BUSY errors. - SQLite: Enabled TCP keepalive (120s) for the same reason as MySQL. - SQLite: Increased connectionTimeout from 5s to 10s. - Both: Added graceful shutdown for ExecutorService with awaitTermination(5s) to ensure pending database operations complete before the server shuts down.
    🛡️ Plugin Lifecycle
    - Wrapped onDisable() in a try-catch-finally block so that databaseConnection.disconnect() is always called, even if an error occurs during shutdown (e.g., saving regions).
    🐛 Bug Fixes
    - Fixed duplicate YAML key warnings: The ConfigUpdater was inserting keys that already existed in the user's config files, causing repeated duplicate keys found warnings from the YAML parser. Added a pre-insertion check to skip keys that already exist. - Fixed invalid YAML generation: List values containing special YAML characters (like |, :, {, etc.) are now properly quoted when inserted by the ConfigUpdater, preventing mapping values are not allowed here parse errors. - Silent corrupted file recovery: When a user's config/menu file is corrupted, the plugin now detects it silently (no errors in console), backs it up, and regenerates it automatically from the JAR. Previously this would flood the server console with YAML parse errors. - Synced version in plugin.yml with pom.xml (was out of sync).
    ✨ Improvements
    - Clickable update notification: The download link shown to admins on player join is now clickable (opens browser to Modrinth page). - Dynamic plugin name: The update notification now displays the project name fetched from the Modrinth API instead of a hardcoded string. ---
    16 downloads
  4. 1.0.17AmplProtections 1.0.17Aug 3, 2026

    Changelog

    [1.0.17] - 2026-08-02

    Performance
    - Spatial index for getRegionAt() and checkCollision() — O(1) amortized lookups instead of O(n) linear scan - Optimized loadAllRegionsSync() — 3 queries with batch loading instead of 2N+1 individual queries - Fixed race condition on idMap — changed from HashMap to ConcurrentHashMap - SQLite PRAGMA foreign_keys moved to HikariCP connectionInitSql — no longer executes on every getConnection()
    Architecture
    - Extracted SchemaManager class — eliminates ~200 lines of duplicated table creation logic between MySQL and SQLite - Consolidated sendAccessDenied / sendAccessDeniedCooldown into single method in ProtectionListener - Unified saveMemberSync / saveMemberAsync logic into shared executeSaveMember in ProtectionDao - Added Builder pattern to ProtectionRegion (existing constructors preserved for compatibility)
    Changed
    - ProtectionManager now uses MessageUtils.parse() singleton instead of inline MiniMessage.miniMessage().deserialize() - getAdjacentRegions() and mergeRegions() now use spatial index instead of scanning all world regions - Removed @Deprecated isAllowed() method from ProtectionRegion - Removed @SuppressWarnings("unused") from AdminProtectionCommand - Removed redundant null checks in ProtectionListener event handlers - Hardcoded Spanish fallback strings replaced with English in AdminProtectionCommand
    Fixed
    - Fixed SQLite syntax error with AUTOINCREMENT keyword order in SchemaManager
    7 downloads
  5. 1.0.16AmplProtections 1.0.16Jul 14, 2026

    Changelog

    [1.0.16] - 2026-07-14

    Fixed
    - Nexo API integration updated to match current Nexo 1.19+ method signatures - Replaced reflection-based NexoHook with direct API calls for better reliability - Fixed double drop when breaking Nexo-based protections (only plugin item drops now) - Fixed "no inventory space" check before breaking Nexo protections - Fixed async thread error during PSStones migration (blocks now placed on main thread) - Fixed PSStones migration not placing Nexo blocks or custom-model-data blocks - Fixed blocks.yml being overwritten on plugin updates (now only created on first install)
    Added
    - Nexo dependency in pom.xml (com.nexomc:nexo) as provided/optional - Maven repository for Nexo (https://repo.nexomc.com/releases) - no-inventory-space message in lang files (en/es) - Nexo block/furniture type detection before placement (isNexoFurniture/isNexoBlock)
    16 downloads
  6. 1.0.15AmplProtections 1.0.15Jun 17, 2026

    Protection System Update

    This update optimizes the regional access logic and fixes member permission issues.

    Changes

    Fixed Entry Flag Logic*: Updated canPlayerAct in ProtectionRegion.java to properly validate the EVERYONE flag before checking for member ranks[cite: 2]. Improved Permission Hierarchy*: Refactored canPerformAction in ProtectionRegion.java to use rank weights instead of manual boolean checks[cite: 2, 4]. * This ensures that members and higher-ranking players (Admins, Owners) are correctly granted access when the entry flag is set to MEMBERS[cite: 2, 4]. * This logic correctly respects the established rank hierarchy: OWNER > SECONDARY_OWNER > ADMIN > MEMBER[cite: 4]. Fixed Member Notification*: Corrected the message notification logic in ProtectionCommand.java to ensure players receive the correct feedback when they are added to a region[cite: 1].

    Improvements

    * The logic is now more scalable, allowing new ranks to be integrated easily by simply adjusting their weight in the PlayerRank enum[cite: 4]. * Fixed the restriction issue where members were previously denied access despite the entry flag being set to MEMBERS[cite: 2].
    15 downloads
  7. 1.0.14AmplProtections 1.0.14Jun 17, 2026

    Changelog

    [1.0.14] - 2026-06-17

    Added
    #### PSStones Migration System - New command /aprotmigrate psstones to migrate regions from ProtectionStones - Confirmation GUI menu before migration (fully editable via menus/migration-menu.yml) - Option to delete original PS regions after migration - Async migration to prevent server lag - Migrates owners, members, flags, and exact region bounds - Creates dynamic protection types for non-standard radii - Reads ps-home flag for correct block placement - Detailed logging of each migrated region #### Nexo Integration - New NexoHook class for Nexo API integration - Support for custom block models from Nexo furniture system - New nexo-id field in blocks.yml for Nexo items - Multiple API compatibility approaches for different Nexo versions #### Custom Model Data Support - Blocks can now be identified by material + custom model data - Compatible with Nexo, ItemsAdder, and Oraxen resource packs - New getProtectionTypeByMaterialAndModelData() method #### Configurable Limits - Custom ranks with custom limits (add as many as you want) - Per-world max protections (different limits per world) - New config structure:
      worlds:
        world-limits:
          world: 10
          world_nether: 3
      limits:
        ranks:
          default: 3
          vip: 5
          mvp: 10
          admin: 999
      
    #### Migration Messages - Added migration.* section to both en.yml and es.yml - All migration messages are now configurable and translatable
    Fixed
    #### Critical Fixes - Fixed duplicate commands section in language files that caused ~80 messages to be lost - Fixed CustomModelData IllegalStateException in Paper 1.21+ (now checks hasCustomModelData() first) - Fixed PSStones regions being migrated with wrong size (now uses exact WG region bounds) - Fixed protection block not being placed at correct location during migration #### Language System - LanguageManager now uses ConfigUpdater to add new keys to existing language files - Added missing messages: commands.list-no-protections, commands.preset-invalid-sub, buy-menu.* #### Database - Migration now uses UPSERT instead of INSERT to prevent duplicate key errors - Added proper transaction rollback on migration failure
    Changed
    #### Plugin Optimization - Reduced jar size from ~15MB to ~1.6MB - Added SQLite native library filters (only Windows x64 and Linux x64) - Enabled minimizeJar to remove unused classes #### Dependencies - Added WorldGuard as soft dependency - Added WorldEdit dependency - Added Nexo as soft dependency - Added EngineHub and sk89q repositories
    Technical
    #### New Files - src/main/java/com/amplan/amplprotections/database/PSStonesMigrationManager.java - src/main/java/com/amplan/amplprotections/hook/NexoHook.java - src/main/java/com/amplan/amplprotections/menu/MigrationConfirmMenu.java - src/main/resources/menus/migration-menu.yml #### Modified Files - src/main/java/com/amplan/amplprotections/AmplProtections.java - src/main/java/com/amplan/amplprotections/command/MigrateCommand.java - src/main/java/com/amplan/amplprotections/config/MenuConfigManager.java - src/main/java/com/amplan/amplprotections/language/LanguageManager.java - src/main/java/com/amplan/amplprotections/listener/BlockListener.java - src/main/java/com/amplan/amplprotections/manager/ProtectionManager.java - src/main/java/com/amplan/amplprotections/model/ProtectionType.java - src/main/resources/blocks.yml - src/main/resources/config.yml - src/main/resources/lang/en.yml - src/main/resources/lang/es.yml - src/main/resources/plugin.yml - pom.xml
    30 downloads
  8. 1.0.13AmplProtections 1.0.13Jun 9, 2026

    Changelog

    [1.0.13] - 2026-06-09

    Added
    - Modrinth version checker with automatic update notifications for admins.
    Fixed
    - Race condition where getRegionAt() could return null immediately after placing a protection. - Memory leak in lastAccessDenied maps (cleaned up on player quit). - Ownership transfer not updating in memory after async DB call. - Double save when editing protection lore via command. - NPE in onPlayerMove when event.getTo() returns null. - saveAllRegionsSync transaction rollback not handling errors properly. - getRadius() truncation on asymmetric regions.
    Removed
    - Unused variables cornerDust, glowDust, pulseGlow in ParticleUtils. - Unused plugin field in MenuManager. - Duplicate canMerge() method in ProtectionType. - Redundant String.valueOf() and Objects.requireNonNull() calls. - Standalone Logger in ConfigUpdater (now uses plugin logger). - Emoji in message prefix that caused rendering issues on some clients. - -Xlint:-deprecation compiler flag (deprecation warnings are now visible).
    14 downloads
  9. 1.0.12AmplProtections 1.0.12Jun 2, 2026

    Changelog

    [1.0.11] - 2026-06-02

    Fixed
    - Paper API dependency version (1.21.11-R0.1-SNAPSHOT) - ConfigUpdater duplicating content when updating menu configs - Automatic detection and regeneration of corrupt YAML config files
    Added
    - /protection bulk command to manage multiple protections at once - Bulk manage menu for adding members to selected protections
    15 downloads
  10. 1.0.5AmplProtections 1.0.5May 29, 2026
    AmplProtections is an advanced Minecraft (Paper 1.21+) protection plugin that adds customizable land protection systems with blocks, flags, rentals, rollback, and economy integration. It supports MySQL storage, configurable protection sizes and limits per rank, and a flexible flag system to control player actions inside protected areas. The plugin also includes features like holograms, particles, protection merging, rental systems, teleport cooldowns, and rollback tools for reverting block changes. Administrators can manage protections through dedicated commands, while players can create, modify, and manage their own protected regions using an in-game command system. It also integrates with Vault for economy support and PlaceholderAPI for external placeholders.
    11 downloads

Similar projects

Plugin →