Sueta

BlockProt Reloaded

1.4.1-hotfix.2

An advanced Bukkit protection plugin for chests, furnaces, and more, built with a modern GUI and packed with powerful features and extended functionality.

·Plugin
  1. 1.4.1-hotfix.2latestBlockProt Reloaded 1.4.1-hotfix.23 weeks ago

    BlockProt Reloaded 1.4.1-hotfix.2 Release Notes

    Note: As a targeted maintenance release, this hotfix does not include a release notes banner.
    1.4.1-hotfix.2 fixes locked blocks losing their protection after a server restart. No configuration or data format changes.

    Fixed

    - Hoppers drained locked chests after a restart ([#22](https://github.com/VictorGugug/BlockProt-Reloaded/issues/… the list of protected blocks was rebuilt at startup from a background thread and only from the statistics file, so locks that were not found stayed unprotected until they were locked again. A hopper under a locked chest could then pull its items. Protection is now verified against the block itself whenever a location is not yet known. - Same cause, other protections: after a restart, locked blocks were also exposed to pistons, explosions, fire, redstone, and block breaking by other players. They all use the same check and are fixed together. - Double chests: the second half of a locked double chest was never registered as protected. It is now verified like any other block.

    Verification

    Before publication this build was tested in GitHub Actions ([run 37131912140](https://github.com/VictorGugug/BlockProt-Reloaded/actions… Every supported Minecraft version (1.21.7 - 26.3) booted on real Paper, Folia and Purpur servers wherever that software publishes a build (a declared version without a build of its own runs on its newest hotfix), and passed the plugin console diagnostics. On every version the test client supports, a two-player protection test also passed: the owner protects and opens a chest, and a second player can neither open nor break it.
    204 downloads
  2. 1.4.0-hotfixBlockProt Reloaded 1.4.0-hotfix3 weeks ago

    BlockProt Reloaded 1.4.0-hotfix Release Notes

    Note: As a targeted maintenance release, this hotfix does not include a release notes banner.
    1.4.0-hotfix fixes the staff tier permissions of 1.4.0 and brings the documentation in line with what the plugin does. Servers that keep admin_tiers.enabled: false, the default, see no change in who can do what.

    Fixed

    - Admin hub checks each button: with admin_tiers.enabled: true, any staff tier could open /bp admin and use every button in it, including the configuration editor, world protection deletion, reload, and staff role management. Each button of the hub now checks the tier of its action, in the chest menu, the Paper dialog, and the Bedrock form. - Lock menu on other players' blocks: with admin tiers enabled, the Paper dialog and the Bedrock form gave every staff tier owner-level control over other players' blocks, while the chest menu did not. All three now require Tier 2, and Tier 2 can unlock those blocks as documented. - Tier 1 works as documented: Tier 1 now opens /bp info, gets a read-only lock menu on other players' blocks with the block info and the audit log, and can teleport from admin block lists. - Startup warning: the warning shown on Spigot and CraftBukkit no longer says support ends in 1.3.6. They are not supported.

    Documentation

    - The [README](https://github.com/VictorGugug/BlockProt-Reloaded/blob/ma… the [admin guide](https://github.com/VictorGugug/BlockProt-Reloaded/blob/ma… the [player guide](https://github.com/VictorGugug/BlockProt-Reloaded/blob/ma… and the download page descriptions now describe commands, permissions, friend levels, staff tiers, and the optional MySQL index as the plugin implements them. - Timed access and the ImageFrame integration were listed as features but never existed. They are no longer mentioned.

    Testing

    - Minecraft 26.1 is now tested on its newest server build, 26.1.2. Earlier test runs skipped it because no server software publishes a build named 26.1.

    Verification

    Before publication this build was tested in GitHub Actions ([run 36803357003](https://github.com/VictorGugug/BlockProt-Reloaded/actions… Every supported Minecraft version (1.21.7 - 26.3) booted on real Paper, Folia and Purpur servers wherever that software publishes a build (a declared version without a build of its own runs on its newest hotfix), and passed the plugin console diagnostics. On every version the test client supports, a two-player protection test also passed: the owner protects and opens a chest, and a second player can neither open nor break it.
    30 downloads
  3. 1.4.0BlockProt Reloaded 1.4.03 weeks ago
    ![1.4.0](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    BlockProt Reloaded 1.4.0 Release Notes

    Welcome to BlockProt Reloaded 1.4.0. This release launches the two legacy editions, so servers on Minecraft 1.18.2 through 1.21.6 have a supported BlockProt again, and it makes every console line and debug report name the edition that is running.

    Highlights

    - Legacy Editions Launch: BlockProt Reloaded Legacy 1.4.0.1 covers Minecraft 1.20.5 to 1.21.6 on Java 21, and BlockProt Legacy 1.4.0.1 covers Minecraft 1.18.2 to 1.20.4 on Java 17. Both are published on Modrinth only: [BlockProt Reloaded Legacy](https://modrinth.com/plugin/blockprot-reloaded-legacy) and [BlockProt Legacy](https://modrinth.com/plugin/blockprot-legacy). The [version guide](../READ_MEs/VERSION_GUIDE.md) explains which one to download and how to move between them. - Tested On Real Servers: every supported Minecraft version of the legacy editions is booted on a real Paper server in GitHub Actions, with Folia and Purpur on every version that has a build. Each server passes the plugin console diagnostics and a two-player protection test: the owner protects and opens a chest, and a second player can neither open nor break it. A legacy edition is only published when that run passes. - Edition In The Console: the log prefix, the first start guide, /bp debug and the debug reports now show BlockProt Reloaded, BlockProt Reloaded Legacy or BlockProt Legacy instead of always saying BlockProt Reloaded. - Version Baseline Unchanged: BlockProt Reloaded keeps supporting Minecraft 1.21.7 through 26.3. Nothing changes for servers already on 1.3.9.

    Changelog

    Changed
    - The console prefix, the first start guide title, /bp debug and the debug report header use the name of the running edition.

    Status

    - BEDev: pre-release builds of 1.4.0 are published on GitHub for testing before the stable release. - Maintenance: the maintainer is taking a break to focus on other projects. Issues and pull requests are welcome for any change and are reviewed as time allows.

    Verification

    Before publication this build was tested in GitHub Actions ([run 36665040826](https://github.com/VictorGugug/BlockProt-Reloaded/actions… Every supported Minecraft version (1.21.7 - 26.3) booted on real Paper, Folia and Purpur servers wherever that software publishes a build, and passed the plugin console diagnostics. On every version the test client supports, a two-player protection test also passed: the owner protects and opens a chest, and a second player can neither open nor break it.
    12 downloads
  4. 1.3.9BlockProt Reloaded 1.3.93 weeks ago
    ![1.3.9](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    BlockProt Reloaded 1.3.9 Release Notes

    Welcome to BlockProt Reloaded 1.3.9. This release raises the minimum Minecraft version to 1.21.7, so native Paper dialogs are always available and are now built directly into the plugin, gives every paged chest menu the same button layout as the dialogs, and fixes statistics after ownership transfers.

    Highlights

    - Minecraft 1.21.7 Baseline: 1.3.9 supports Minecraft 1.21.7 through 26.3. Servers on 1.21.1 to 1.21.6 keep using BlockProt Reloaded 1.3.8, and servers on 1.20.5 to 1.21 keep using 1.3.7; starting 1.3.9 on an older version shows which release to use and disables the plugin. - Dialogs Built In: Paper dialogs are compiled directly into the plugin instead of being loaded through reflection from a separate build. - Consistent Chest Menus: every paged chest menu now uses the same bottom row as the dialogs: previous page, the menu's main action, and next page in the center, with Back in the corner. - Correct Statistics After Transfers: transferring a block now moves it from the old owner's statistics to the new owner's instead of counting it for both. - Editions: BlockProt now ships as three editions, each with its own Minecraft range. The plugin knows which edition it is and points servers on another Minecraft version to the right download. See the [version guide](../READ_MEs/VERSION_GUIDE.md).

    Changelog

    Changed
    - Raised the minimum supported Minecraft version to 1.21.7. - Compiled the Paper dialog bridge into the main plugin and removed its separate source set and reflection loading. - Moved Previous, Next, and the main action of every paged chest menu to slots 48, 50, and 49, with Back or Close in slot 53. List menus now show 45 entries per page. - Updated Caffeine to 3.3.0, Apache Commons Lang to 3.20.0, and the Floodgate API to 2.2.5. - Removed the typed inventory view fallback warning and the chest boat type fallback, which only applied to versions older than 1.21.7. - The plugin JAR name now comes from the jarBaseName build property instead of the git branch name, and the Hangar platform versions are read from the # Supported on line of gradle.properties. - Particle and enchantment constants that were renamed between Minecraft releases are resolved by name again, so the same code compiles against older Paper APIs. - The unsupported Minecraft message now names the edition to download, its Minecraft range, and the download and guide links.
    Fixed
    - Fixed transferred blocks staying in the previous owner's statistics and increasing the global protected block count on every transfer. - Fixed transfers leaving the previous owner recorded in the database block index. - Fixed the statistics list hiding the Previous button on its last page. - Fixed the entity information menu drawing friends over its navigation row when an entity had more than 36 friends. - Fixed clicks on empty bottom-row slots of list menus selecting an entry from the page. - Fixed update checks offering the release of another edition: each edition now only sees its own tagged releases.
    Added
    - Added a console diagnostics check that verifies statistics move correctly on ownership transfers. - Added the edition model: BlockProt Reloaded, BlockProt Reloaded Legacy and BlockProt Legacy, shown in /bp about, the boot banner and /bp debug. - Added the .edition marker in the plugin data folder. When the edition or the Minecraft version changes between starts, the plugin makes a backup named with both editions and logs it, and it warns when the change is a downgrade. - Added a console diagnostics check that verifies the edition and its marker.

    Editions

    BlockProt Reloaded covers Minecraft 1.21.7 and newer. BlockProt Reloaded Legacy (Minecraft 1.20.5 to 1.21.6) and BlockProt Legacy (Minecraft 1.18.2 to 1.20.4) are published separately and are announced with their first release. The [version guide](../READ_MEs/VERSION_GUIDE.md) explains which one to download and how to move between them.

    Status

    - BEDev: pre-release builds of 1.3.9 are published on GitHub for testing before the stable release.
    3 downloads
  5. 1.3.8BlockProt Reloaded 1.3.83 weeks ago
    ![1.3.8](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    BlockProt Reloaded 1.3.8 Release Notes

    Welcome to BlockProt Reloaded 1.3.8. This release raises the minimum Minecraft version to 1.21.1, opens a public developer API, moves the bundled translations to MiniMessage, and automates testing and upkeep so every future build is checked on real Paper and Folia servers.

    Highlights

    - Minecraft 1.21.1 Baseline: 1.3.8 supports Minecraft 1.21.1 through 26.3. Servers on Minecraft 1.20.5 to 1.21 keep using BlockProt Reloaded 1.3.7; starting 1.3.8 on those versions shows a clear message and disables the plugin instead of failing later. - Public Developer API: other plugins can check whether a block is protected, who owns it, who can access it, its friends, and entity protection, and can react to lock, unlock, and access events. The API is available through JitPack. - MiniMessage Translations: the English and Spanish translations now use MiniMessage formatting, including exact hex colors. Translation files with legacy & and § codes keep working. - Real Server Testing in CI: every change is now tested by starting real Paper and Folia servers with the plugin and running the full console diagnostics. - Weekly Maintenance Check: a weekly job detects new Paper, Folia, and Purpur versions, tests the plugin on them, audits dependencies, and keeps a single report issue up to date.

    Changelog

    Added
    - Added isProtected, getOwner, canAccess, getFriends, isPublic, isLockable, isEntityProtected, and getEntityOwner to BlockProtAPI. - Added JitPack publishing for blockprot-spigot and common, with a Developer API section in the README. - Added a console diagnostics check for the public API. - Added a startup guard that disables the plugin with a translated message on Minecraft versions older than 1.21.1. - Added a CI job that boots the newest supported Paper and Folia servers and fails on any diagnostics error. - Added a weekly maintenance workflow and Dependabot updates for GitHub Actions. - Added a daily platform check that confirms the latest stable release is live on GitHub, Modrinth, CurseForge, and Hangar, and publishes it wherever it is missing (CurseForge only after 72 hours, since new files wait for manual review). - Added a post-publication check that confirms every release is live on each platform.
    Changed
    - Merged the CI, publish, release, and maintenance workflows into a single blockprot.yml workflow with an operation selector. - Raised the minimum supported Minecraft version to 1.21.1 and api-version to 1.21. - Converted translations_en.yml and translations_es.yml to MiniMessage; hex colors now render exactly instead of being approximated. - Removed the 1.20.x particle and enchantment fallbacks and version checks. - Updated every GitHub Action used by the workflow to its current major version. - Documentation now lists Paper, Purpur, and Folia as the supported server software; standalone Spigot is no longer listed.
    Fixed
    - Fixed MiniMessage hex color tags not being recognized by the translation loader. - Fixed the debug report headers showing outdated screen counts. - Fixed the not-Paper startup warning still referring to the 1.3.6 end of Spigot support. - Fixed the Hangar publish step skipping its JDK and Gradle setup. - Fixed commit message validation failing on every pull request because of the merge commit GitHub creates for it.

    Status

    - Stable: 1.3.8 was first published as the pre-release build 1.3.8-BEDev.1 for testing, and is now released as a stable version.
    9 downloads
  6. 1.3.7BlockProt Reloaded 1.3.73 weeks ago
    ![1.3.7](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    BlockProt Reloaded 1.3.7 Release Notes

    Welcome to BlockProt Reloaded 1.3.7. This release adds Minecraft 26.3 support, makes the admin toolset usable from the server console, and completes the move of every scheduled task onto FoliaLib so Folia servers run the plugin without falling back to the Bukkit scheduler (ALSO DONE IN RECORD TIME!!: 1.3.7 took less time to build than any previous version of the plugin, and from 1.3.8 onward the plugin is expected to keep getting optimized while the time between releases keeps shrinking).

    Highlights

    - Minecraft 26.3 Support: The Poplar wood set (doors, trapdoors, fence gates, signs, hanging signs, shelf, and chest boat) and the new Straw bed are protected out of the box through the existing block families. Verified on Paper 26.3. - Console Administration: /bp debug, /bp protdel, and /bp unlock now work from the server console. Diagnostics run their block and entity checks at the world spawn when no player is online, so the full NBT and gameplay simulation suite no longer needs someone in-game. - Complete FoliaLib Scheduling: The remaining Bukkit scheduler calls were replaced with region-aware FoliaLib scheduling. Work that touches blocks now runs on the region that owns each block, and player-facing work runs on the player's own thread. - Unified World Protection Deletion: The chest GUI, the Paper dialog, and the console now share one deletion and undo engine that processes a world chunk by chunk on its owning region, spreads the work across ticks, and keeps an undo history per administrator.

    Changelog

    Added
    - Added Minecraft 26.3 to the supported version range, covering POPLAR_DOOR, POPLAR_TRAPDOOR, POPLAR_FENCE_GATE, POPLAR_SIGN, POPLAR_WALL_SIGN, POPLAR_HANGING_SIGN, POPLAR_WALL_HANGING_SIGN, POPLAR_SHELF, POPLAR_CHEST_BOAT, and STRAW_BED. - Added console execution for /bp debug (plain /bp debug now runs the suite), running NBT, entity, sub-handler, and player simulation checks at the main world spawn when no player is online. - Added /bp protdel <world> confirm and /bp protdel undo for console use. - Added console output for /bp unlock <player>, listing every block the player has locked. - Added translation keys for the new console messages and for previously hardcoded texts in English and Spanish.
    Changed
    - /bp info <player> now checks block ownership on each block's owning region before listing it, and reports when the player owns no blocks in both chat and dialog mode. - /bp transferall now transfers each block on its owning region and updates statistics once all transfers complete. - World protection deletion from the GUI, dialog, and console shares a single undo history; the GUI undo button restores the most recent deletion. - World protection deletion without the database index now scans loaded chunks using the configured block families instead of a fixed material list. - Player-only commands (/bp settings, /bp disablehints, /bp lockables, /bp stats) now reply with a clear message when run from the console instead of printing the command usage. - Updated the documented support range to Paper 1.20.5 through 26.3. - Entity protection settings (tamed animals and villagers) now open as a Paper dialog when use_dialogs is enabled, with the same toggles as the chest menu. - Reorganized dialog layouts: Block Settings shows the three protections on one row with Enable all and Disable all below, entity friend management uses the same Prev | Search | Next row as block friend management, and paged admin dialogs keep their navigation on its own row.
    Fixed
    - Fixed entity protection settings showing No damage and No leash as enabled after Disable all, and toggling an individual option on an unprotected entity having no effect. Unprotected entities now show every option off, and enabling any option turns protection on with the default damage and leash protection. - Fixed the block lock dialog offering Transfer on unprotected blocks, which have no owner to transfer from. - Fixed the lock menu closing on Minecraft 26.3 when sneak-right-clicking a container with an empty main hand and a non-block item (such as a shield) in the off-hand. Since 26.3 the same click also fires an off-hand interaction, which opened the container on top of the menu; that interaction is now denied for the block only, so raising a shield still works and off-hand block placement is unaffected. - Fixed revoked admin tiers returning to offline staff on their next join; admins.yml is now the only source used to resolve tiers and custom flags. - Fixed world protection deletion and its undo using the Bukkit scheduler, which fails on Folia. - Fixed the dialog-based world protection deletion querying the database on the main thread. - Fixed friend search history heads being written to the inventory from an asynchronous thread. - Fixed concurrent statistics updates from different Folia regions and the periodic save racing each other; all statistics access now shares one lock, and a failed save is retried on the next cycle. - Fixed the global protected block counter drifting down on Folia when stale entries were checked from a region that does not own the block. - Fixed the SemanticVersion diagnostic failing on BEDev and hotfix builds. - Fixed console diagnostics reporting every inventory and dialog as uncovered. - Fixed hardcoded English texts in /bp tiers <player>, the admin reload dialog, the custom flags menu, and the menu error message. - Fixed the shadow JAR build warning about duplicate kotlin_module metadata.
    Repository and Governance
    - The publish workflow has a version suffix selector: development builds are numbered automatically per release (BEDev.1, BEDev.2, ...), and choosing Stable clears versionSuffix in gradle.properties and commits it before tagging the release. The version input is now detected from gradle.properties when left blank. - The publish workflow detects development builds (BEDev, SNAPSHOT, exp) and publishes them to GitHub Releases only, as pre-releases, skipping Modrinth, CurseForge, and Hangar. - The publish workflow summary now includes a copy-ready Discord announcement (post title, tag, GitHub link, and platform links). - The publish workflow now detects existing CurseForge uploads through the public CFWidget API, preventing duplicate CurseForge files when a publication is re-run.

    Credits

    - Eduardo Sanches ([@edusanches](https://github.com/edusanches)): found and diagnosed the Minecraft 26.3 off-hand interaction bug that closed the lock menu, traced it to the duplicate off-hand PlayerInteractEvent, and proposed the fix in [Pull Request #9](https://github.com/VictorGugug/BlockProt-Reloaded/pull/9), together with the NBT-API 2.16.1 update required for 26.3.

    Status

    - Stable: 1.3.7 was first published as the pre-release builds 1.3.7-BEDev.1 and 1.3.7-BEDev.2 for testing, and is now released as a stable version with no further changes.
    5 downloads
  7. 1.3.6BlockProt Reloaded 1.3.64 weeks ago
    ![1.3.6](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    BlockProt Reloaded 1.3.6 Release Notes

    Welcome to BlockProt Reloaded 1.3.6. This release focuses on comprehensive performance optimizations, memory bounding, FoliaLib scheduler unification across all asynchronous tasks and GUI updates, dialog navigation grid stabilization, dead code cleanup, and expanded language support.

    Highlights

    - Multi-Tier Admin Hierarchy and Granular Permissions: Introduced a configurable 4-tier admin permission hierarchy (t1, t2, t3, owner) plus custom actions (admin_tiers.enabled), supporting standalone staff management via /bp tiers [setrole] <player> <role> and player NBT without LuckPerms, as well as in-game Owner execution of /bp recommended. - Comprehensive Player Simulation and Headless Server Diagnostics: Expanded /bp debug run with Domain 10 (Player Simulation & Gameplay Verification) testing 10 realistic in-game player scenarios (block lock lifecycle, stranger access denial, friend management, redstone toggles, family expressions, hazard protection, entity protection, GUI state theft prevention, permission evaluation, and player settings persistence) with zero persistent side effects. Added console headless execution (/bp debug run [player]), allowing server operators to run diagnostics without an active player and automatically targeting online players when available. - Player Persistent NBT Reorganization: Cleanly categorized player preferences, friend entries, search history, and admin data into nested PDC compounds (BukkitValues/blockprot/...), with automatic legacy flat tag migration and deletion for clean viewing in NBTExplorer. - Action Bar Notification Persistence and Raid Alert Debouncing: Refined TemporaryActionBar for sustained client alerts with configurable duration (action_bar.duration_seconds: 6). Optimized RaidDetectionListener with ProtectedBlockCache early exit and 5-second owner debouncing to prevent alert spam during raids. - Expanded Entity Protection: Added protectable_entities in blocks.yml, enabling protection for non-tameable entities with VILLAGER configured as the currently supported and compatible entity type. - Modernized GitHub Actions CI, Automated Governance, and Dependency Audit: Replaced legacy, unmaintained workflows with modern GitHub Actions pipelines. Continuous Integration now resolves and displays the current plugin version and declared Minecraft version support range, executes comprehensive Gradle builds and unit test suites on pushes to main and Pull Requests with automated test report archiving, and uploads compiled shadow JAR artifacts. Introduced a dynamic release cycle commit aggregator generating categorized changelogs from Git history and gradle.properties directly into Job Summaries and release bodies. Introduced a chained automated dependency and plugin integration version audit comparing 24 core libraries and integrations against upstream releases in a comparative status table. Consolidated repository diagnostics and project integrity validation (verify_project_integrity.py) into the primary CI pipeline, auditing YAML syntax, translation parity (904 keys across English and Spanish), license headers, and pure Java architectural boundaries. - Multi-Platform Distribution and Release Pre-Flight Inspection: Implemented automated distribution tooling (publish.yml) supporting Modrinth, CurseForge, and PaperMC Hangar via the official io.papermc.hangar-publish-plugin:0.1.4. Release and publication workflows feature a 3-mode execution selector (Preview, Publish, Cancel) providing complete pre-flight inspection of binary SHA-256 checksums, platform tokens, and release notes prior to upload. - Server Platform and Upstream Build Auditing: Centralized supported, legacy, and unsupported platform declarations in gradle.properties, with automated real-time build queries against PaperMC Fill v3 API, PurpurMC API v2, and Folia builds to track stable and experimental upstream versions. - JUnit 6 Test Platform Alignment and Automated Test Suite: Resolved transitive version incompatibilities between MockBukkit 4.110.0 and JUnit platform dependencies via org.junit:junit-bom:6.0.3, ensuring a fully green automated test suite. - Native Bedrock Forms Integration (Geyser and Floodgate): Added full native Bedrock Forms (Cumulus) GUI integration for Bedrock players connecting via Geyser and Floodgate. Bedrock players receive touch-optimized forms for menus, block locking, settings, friend management, and admin configuration, with seamless switching back to classic inventory GUIs via /bp settings. - Experimental Minecraft 1.20.5+ Compatibility: Lowered descriptor api-version to 1.20, allowing Minecraft 1.20.5 and 1.20.6 servers to load the plugin. While all core protection logic is theoretically compatible (~95-98%), this range is marked experimental; user feedback is appreciated to ensure full stability in subsequent releases. - Hot-Path Listener Optimizations: Redstone, piston movements, block breaks, block burns, and explosion listeners now perform instant early exits via ProtectedBlockCache, avoiding expensive NBT deserialization and state snapshots for unaffected blocks. - Folia and Paper Scheduler Unification: All background tasks, search routines, world expiry scanners, and async inventory skull loaders now run exclusively through FoliaLib with thread-safe entity region dispatching. - Bounded In-Memory Caching: Bounded Caffeine caches have replaced unbounded memory structures for player skin profile lookups and offline player candidate queries, preventing memory growth on long-running servers. - Expanded Bundled Languages: Added 5 new language translations (Romanian, Arabic, Ukrainian, Hebrew, and Swedish), bringing out-of-the-box support to 25 languages. - Standalone Spigot Deprecation: Formalized the deprecation of standalone un-forked Spigot in favor of Paper, Purpur, and Folia. - Repository Governance and Standardized Commit Convention: Added formal contribution guidelines (CONTRIBUTING.md), project scope definitions (SCOPE.md), and AI agent instructions (AGENTS.md), alongside a structured commit format (BPR:<branch>(<type>): <description>) to ensure consistent repository history and issue-first workflows.

    Changelog

    Added
    - Added configurable multi-tier administrative permissions (admin_tiers.enabled) with 4 distinct tiers (blockprot.user.admin.t1, blockprot.user.admin.t2, blockprot.user.admin.t3, blockprot.user.admin.owner) and blockprot.user.admin.custom. - Added standalone staff management via /bp tiers [setrole] <player> <role> and admins.yml, providing persistent role storage without requiring LuckPerms, decoupled from /bp admin. - Added in-game /bp recommended command execution for players holding the blockprot.user.admin.owner permission. - Added action_bar.duration_seconds configuration setting in config.yml (default 6 seconds). - Added protectable_entities configuration list in blocks.yml, with VILLAGER configured as the currently supported non-tameable entity type. - Added modern GitHub Actions Continuous Integration workflow (.github/workflows/ci.yml) executing full Gradle builds and automated test suites on pushes to main and Pull Requests. - Added automated plugin version and Minecraft support target resolution step in .github/workflows/ci.yml, displaying declared support (1.20.5 - 26.2) and Java toolchain baseline in logs and Job Summaries. - Added chained dependency-audit job in .github/workflows/ci.yml backed by .github/scripts/audit_dependencies.py, auditing 10 plugin integrations (Towny, PlaceholderAPI, WorldGuard, LandsAPI, ClaimChunk, Residence, GriefPrevention, Floodgate, Cumulus, ViaVersion), 10 core dependencies, and 4
    7 downloads
  8. 1.3.5BlockProt Reloaded 1.3.5Aug 28, 2026
    ![1.3.5](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    Summary

    This release completes the admin config editor story started in 1.3.4. The dialog-based editor already mirrored config.yml section by section; 1.3.5 adds the matching inventory-based editor for servers running use_dialogs: false, so the Config entry in the Admin Menu now opens a real editor on every server software instead of the "not available" message dialog-mode servers never saw. 1.3.5 also closes the last remaining gap between the dialog and inventory UIs: per-world lockables selection, previously an inventory-only feature, now has its dialog counterpart (/bp lockables > Configure per world), so the lockables system is fully reachable from both interfaces. On the dialog side, this release is mostly internal quality-of-life: AdminConfigDialog was split from one 826-line class into one class per category, the duplicated back-button switches in 16 dialog screens were replaced by a single unified helper, a per-player back stack makes BlockLock sub-screens return to the exact block lock screen they came from, and the category selector dialog gained a Reload button for parity with the inventory selector. The one remaining hardcoded English string in the reload flow (the failure message) was moved to a translation key. The six pastel dialog colors and the color-code stripping helper, duplicated verbatim in 18 dialog classes, were centralized into one shared BpDialogStyles class. The dialog and inventory editors are interchangeable: same categories, same settings, same order, same labels, same config keys, same values, same click behavior. Both write through the same save path (setAndSave, the same suppress-then-reload invariant a manual YAML edit follows), and both validate numeric input with the same in-chat error message.

    Inventory Config Editor

    /bp admin > Config now routes per player preference: - On a Paper 1.21.7+ server with use_dialogs: true, the inventory closes and the native dialog editor opens (unchanged behavior). - Everywhere else, the new AdminConfigInventory opens: a 54-slot inventory with the same 9 categories as the dialog, a Reload button, a Back button, and the same pastel color palette and stained-glass separators used across the config UIs.
    Category selector layout
    The selector is a 9x6 grid with one category button per row (slots 9-17), the Reload button at slot 22, and the Back button at slot 49. Each category button shows its translated name with a click-to-edit tooltip. | Slot | Category | Material | |---|---|---| | 9 | Language | Writable Book | | 10 | Worlds | Grass Block | | 11 | Players and friends | Player Head | | 12 | Blocks and locking behavior | Anvil | | 13 | Entity protection | Name Tag | | 14 | Expiry | Clock | | 15 | Raid detection | Crossbow | | 16 | Notifications | Bell | | 17 | Maintenance | Damaged Anvil | | 22 | Reload | Comparator |
    Settings per category
    Each category inventory lists every setting of its dialog counterpart, in the same order, with the same titles, descriptions, and config keys: - Language: replace_translations, fallback_string, plus two sub-screens, "Enable or Disable Languages" (per-language toggles with a global Enable All/Disable All button) and "Select Active Language" (display name, completion percentage, active marker, click to set active). - Worlds: per_worlds_config, excluded_worlds (comma-separated world list via chat input). - Players and friends: lock_on_place_by_default, public_is_friend_by_default, player_max_locked_block_count, lock_hint_cooldown_in_seconds, friend_search_similarity, disable_friend_functionality. - Blocks and locking behavior: modern_family_blocks (flips the blocks.yml storage format on toggle), redstone_disallowed_by_default, simplified_hopper_logic, protect_locked_blocks_from_explosions, block_protected_block_piston_movement, clear_protection_on_shulker_break, allow_break_protected_blocks, respect_spawn_protection, block_lock_effects, block_lock_sounds, use_menus (dialog-only, marked), use_dialogs (dialog-only, marked), timed_access_max_duration_days. - Entity protection: entity_protection.enabled, entity_protection.auto_protect_on_tame, villager_workstation_protection.enabled, villager_workstation_protection.radius, villager_workstation_protection.vertical_radius, entity_protection.villager_locate_seconds, entity_protection.menu_item (validated against real material names). - Expiry: world_expiry.enabled, world_expiry.check_interval_minutes. - Raid detection: raid_detection.enabled. - Notifications: notify_op_of_updates, owner_notifications.enabled. - Maintenance: auto_reload_configs, auto_reload_delay_seconds (clamped 0-5), inactivity_cleanup_days, enable_session_log, enable_backups.
    How editing works
    - Boolean settings are toggle items that apply immediately on click and re-render the screen; the current state is shown in the item name (the inventory equivalent of the dialog's on/off icon), and the item glows when active. - Value settings (numbers and text) open the chat input prompt (TextInput) when clicked, the inventory-mode equivalent of the dialog's native text field. The same parse validation runs as in the dialog editor: invalid numbers show the dialogs.admin_config.invalid_number message and the value is not saved; the villager menu item is checked against actual material names before saving. - Every change goes through DefaultConfig.setAndSave() or its dedicated setter, which saves to disk, suppresses file-watcher duplicate triggers, and schedules the programmatic reload after the configured auto_reload_delay_seconds. - All titles, lore lines, tooltips, hints, and status messages come from TranslationKey; the editor reuses the dialog editor's key set, so both UIs stay in sync from a single translation file. - All inventory category screens (AdminConfig*Inventory), UserMenuInventory, and AdminMenuInventory feature a unified, framed layout: dark gray stained-glass pane background borders, centered item slots across rows, and a standardized Back/Close button at slot 49 (bottom center).

    Per-World Lockables in the Dialog UI

    The last inventory-only lockables screen now has its dialog equivalent. From /bp lockables, a new "Configure per world" button (only shown while per_worlds_config: true, matching the legacy inventory behavior) opens: - `WorldLockableSelectionDialog`: lists every loaded world with its protection status (enabled/disabled), its protected-block count, and a hint when the world has its own config entry. Six worlds per page; clicking a world opens its detail screen. - `WorldLockableDetailDialog`: the per-world material list for that world, sorted by name, nine materials per page. Each row toggles that material inside the world's list in worlds.yml, exactly like the inventory detail screen: worlds without a list of their own start from the global lockable/entity settings, and the first toggle for that world writes a compact family expression (never a flat wall of material names). The toggle runs through the same suppress-then-reload path, logs to the activity log, and confirms in the action bar with the world name in the feedback. - Back navigation mirrors the inventory flow: detail goes back to the world selector, which goes back to the lockables dialog. A note on scope: the dialog detail screen is the same full replication of the lockables list that the inventory detail screen already was; it is not a shortcut that reuses the global lists in place of the per-world ones.

    Reload Button in the Dialog Category Selector

    The dialog category selector previously had no Reload button while its inventory counterpart did. The AdminConfigDialog categories screen now includes a Relo
    109 downloads
  9. 1.3.4-hotfixBlockProt Reloaded 1.3.4-hotfixAug 8, 2026
    ![1.3.4](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    Summary

    1.3.4-hotfix.1 is a hotfix on top of the 1.3.4 release. It fixes the critical startup crash on Spigot 26.2 (NoClassDefFoundError: net/kyori/adventure/text/Component) that prevented the plugin from enabling, the second wave of Paper-only runtime crashes that appeared once the plugin could enable, two NoSuchMethodError crashes when opening the block info panel and the sign prompt, menu buttons that printed usage: /bp <user/admin> instead of doing anything, and back buttons that closed the whole menu instead of returning to the previous window. The hotfix also improves friend search across blocks, pets, and dialogs, and removes the anvil GUI in favor of chat input everywhere.
    Note: This hotfix does not claim to make every feature work correctly on Spigot or any other non-Paper software. It fixes what was detected during a test run on the software this server environment targets (Paper), plus the Spigot failures that same test surfaced. That test was a one-time, spontaneous check; I normally only test on Paper, the main target. Spigot 26.2 was the only software that errored, and lower versions (26.2 down to 1.21.1) were not tested, so errors there are possible. I always recommend the latest, most up-to-date version. If you run into an error, please open a GitHub issue so I can resolve it.

    Spigot Startup Crash

    On Spigot 26.2 the plugin could not enable: it threw NoClassDefFoundError: net/kyori/adventure/text/Component with a ClassNotFoundException for the same class, because Spigot and vanilla CraftBukkit do not ship Kyori Adventure and do not expose Adventure-based sendMessage, sendActionBar, or ItemMeta#displayName methods. Fixed with a ComponentMessages runtime wrapper that checks via reflection whether the server exposes the Adventure methods. On Paper, Folia, and Purpur it calls the native APIs; on Spigot and CraftBukkit it serializes to legacy colour-coded strings and calls the plain-string equivalents. The build also shades the required Kyori Adventure transitive dependencies so those environments can resolve the classes at runtime.

    Runtime Crashes Found After the Startup Fix

    With the startup crash fixed, a second wave of Paper-only API calls crashed on Spigot as they were used. All of the following are now guarded with a Spigot-compatible fallback: - Block events (place, break, burn, redstone) broke because a Paper-only NamespacedKey accessor was unguarded. - Player join broke because a Paper-only profile-creation overload was unguarded. - Every inventory GUI broke because a Paper-only inventory-creation overload was unguarded. - Block locking, friend management, and renaming (chests, doors, beds, other tile-entity blocks) broke because Paper-only block-state accessors were unguarded. - Skull rendering in friends lists, block/entity info, and the audit log used a Paper-only profile type; these now use the standard Bukkit profile API. - Direct action-bar calls across dialogs, inventories, listeners, and commands crashed on Spigot; they now all go through ComponentMessages.

    Inventory Menus & Navigation

    - Menu buttons now run their actions. Buttons that previously executed /blockprot subcommands through performCommand (which prints usage: /bp <user/admin> and does nothing in menu mode) now execute their action directly: transfer (/bp transferall), About, Config, Auto Drop, and Debug. - Back buttons restore the exact window you came from. The menu system now keeps an origin stack instead of a single overwritten origin: every menu pushes its own origin before opening a child menu, and goBack pops it, so the admin menu -> lockables -> auto drop/worlds chain, the stats/info lists, settings -> friends, and the block lock submenus all walk back level by level.

    Update Notifications & Version Channels

    - Version ranking now distinguishes three tiers: experimental pre-releases (BEDev/snapshot), clean releases, and post-release corrections (hotfix/patch/fix). The old alpha/beta/rc/dev special-casing is gone. - Channel-aware update messages. Stable servers only see stable updates; hotfix messages name the release they fix; BEDev messages state that the build is experimental and not a stable version. - Boot banner announces which channel the server runs, and experimental builds create a safety backup on startup when backups are enabled.

    Server Software Detection

    - On startup the plugin detects the real server software and warns when it is not Paper or a Paper fork (Spigot, CraftBukkit, hybrids, unknown). The warning is non-fatal; the plugin still loads with its fallbacks. Pure CraftBukkit remains hard-blocked. - Support for Spigot and Bukkit is planned to end with 1.3.6, when a separate BlockProt Reloaded Legacy project begins.

    Friend Search, Chat Input and the Discord Case

    - Case-insensitive search. The fuzzy name comparison lowercases both strings, so a correctly-typed but differently-cased name is found. - Shared player pool (`PlayerLookup`). Merges every online player with the offline cache, so an online player is always found and a known offline player still is. All friend-add entry points (block search, pet/entity search, both dialog equivalents) and the transfer-target search use this same pool. - Pets/entities now get search results. They open the same search-results screen as block friends instead of silently auto-adding the best match, and search failures report a real error message instead of a misleading "player not found". - Chat input everywhere, no more anvil GUI. Every free-text prompt (friend search, transfer search, block/entity naming, admin config values, world-expiry duration) now uses chat input on Paper and Spigot alike. Block/entity renaming uses its own label (e.g. "Set block name") instead of the generic player-search wording, and the prompt no longer tells players to press Tab. - The Discord case. A case about friend search not finding anyone was reported via Discord; the issue was that user's other plugins, not this one. Improvements were applied anyway.

    Raid Detection Off by Default

    raid_detection.enabled now defaults to false, matching entity_protection.enabled. Both features remain fully working; administrators opt in explicitly in config.yml.

    Visible Download Link in Update Notifications

    The update notification shown to operators now also prints the download link as visible text in chat, not only as a clickable component: the message ends with a | Download: prefix and the release URL itself, underlined in white and still clickable (hover tooltip: "Click to visit the GitHub Releases page"). This guarantees the notification always satisfies the standing requirement: it states that a new version is available, names which version, and gives the download link, no matter where the player clicks.

    Boot Banner Update Status

    The startup checklist now ends with an Update Check line that shows the real check result instead of a separate console warning: green (● Up to date (1.3.4)) when the installed version is the latest release, red/coral (● New version available: 1.3.5) with the download URL indented below when a newer version exists, and gold when the installed version is ahead of the latest public release. The line waits up to 3 seconds for the asynchronous check and, if it is still in flight, falls back to a synchronous request (with its own timeouts) so a slow GitHub API still yields a real result; Not checked only appears when the API is genuinely unreachable. The in-game update dialog now shows the release URL as visible text next to the underlined version (Download: v1.3.5 | https://github.com/...), still clickable. All new strings are translatable (EN/ES).
    Hotfix-ahead update message
    - **Running a hotfix ahead of the la
    97 downloads
  10. 1.3.4BlockProt Reloaded 1.3.4Aug 3, 2026
    ![1.3.4](https://raw.githubusercontent.com/VictorGugug/BlockProt-R…

    Summary

    This release adds a Paper dialog-based menu system as an alternative to the legacy inventory GUIs. The recommended peak experience is use_menus: true combined with use_dialogs: true on Paper 1.21.7+: consolidated /bp user and /bp admin menus rendered as native Minecraft dialog windows, with an in-game AdminConfigDialog to edit config.yml without touching files. When use_dialogs: false (default), behavior is unchanged from previous versions: legacy inventories work on any server software. An in-game admin config editor (AdminConfigDialog) mirrors config.yml section by section, letting admins modify settings directly. The lockables menu was reworked with a sub-dialog for individual material toggling. A new language management system adds language enable/disable via lang/lang.yml, an in-game language selector cycling through the 15 registered languages with completion percentages, and automatic translation completion tracking. Config.yml had minor cleanup (removed a deprecated leftover config block, added the use_dialogs key), and the plugin log file now recovers automatically if it's deleted or truncated while the server is running.
    Note: The Residence/GriefPrevention/ClaimChunk integrations, the centralized integrations.yml, the Paper PlayerProfile skin-resolution migration, and the per-block protection expiry removal were not part of the 1.3.4 commit range: they were already present as of 1.3.3 and are documented in the 1.3.3 release notes. They have been removed from this document to avoid re-claiming pre-existing work as new.

    Community Feedback Fixes

    A tester gave feedback on the dialog system shortly after it landed. Three items came out of that: - `/bp user` now takes priority over `/bp admin` when /blockprot is run with no arguments, matching the convention used by other plugins. Admins still reach the admin menu explicitly via /bp admin. - The Statistics tab in `/bp user` is now Placements. It shows your locked block count against the server limit (Your Protected Blocks: 12/24, or just the count if the server has no limit set), lists your blocks grouped by material with world and coordinates, and dropped the global server-statistics toggle entirely, since that never belonged on a personal stats screen. Clicking a block opens it directly for editing instead of only offering a teleport. The admin-side Statistics screen (Admin Menu > Stats) is unchanged and still has both the player and global-server pages. - Admin config editor buttons now show a short, readable name instead of the raw config.yml key (for example lock_hint_cooldown_in_seconds now reads "Lock Hint Cooldown"). The longer description and the raw key are still shown in the tooltip for anyone who wants the technical detail. The sign-closing-instantly bug reported in the same feedback was already fixed earlier in this cycle by the native dialog text input described below.
    Follow-up bug found during that same testing pass
    - (bug) Opening any container could throw `RuntimeException: Given block X is not a lockable block/tile entity` and spam the console, most visible with per_worlds_config: true on a world whose per-world lists are still empty (the default right after /bp lockables auto-scans a new world). Several listeners (InventoryEventListener, BlockEventListener, PistonEventListener, RedstoneEventListener) checked whether a block was lockable using the config-wide check, which ignores per_worlds_config, while BlockNBTHandler always validates per-world. When the two disagreed, the handler threw. All of those checks now use the per-world-aware check so they agree with BlockNBTHandler. - The Placements block list showed a "click to teleport" hint even though clicking actually opened the block's edit dialog whenever the block was still lockable (teleport only happens as a fallback once a block drops out of the lockable list). The hint now matches whichever action a click will actually perform.
    Lockables toggle and auto-reload timing fixes
    - (bug) Disabling specific materials inside a mostly-active lockable category could silently re-enable them. BlockFamilyParser.toFamilyExpression() could write a malformed expression like [* CHEST COPPER_CHEST ...]: a global * (meaning "everything") followed by plain material names that do nothing to exclude anything from that *. The next time that expression was parsed, every material in the family came back active. Fixed so the compact writer never mixes a global * with bare inclusion names; it always falls back to the explicit exclusion form (*-TAG -missing...) in that case. - (bug) Auto-reload after a lockables change sometimes fired much later than `auto_reload_delay_seconds`, or an extra reload showed up out of nowhere. The file watcher ignored its own writes for a fixed 3-second window regardless of the configured delay. With a higher delay, several rapid toggles, or slow OS-level file-watch delivery, that window could expire before the write's own change event arrived, so the watcher mistook its own write for an external one and queued a second reload on top of the first. The self-write suppression window is now max(3s, auto_reload_delay_seconds + 2s) instead of a fixed 3s. - (bug) The hover tooltip on an individual material button in the lockables dialog read "Click to enable all." / "Click to disable all.", even though the button only toggled that one material. Individual material buttons now use new dialogs.click_enable_single / dialogs.click_disable_single translation keys ("Click to enable." / "Click to disable."); the existing dialogs.click_enable / dialogs.click_disable ("...all.") keys are unchanged and still used by the category-level and enable-all/disable-all buttons, where "all" is accurate. - The lockables category indicator (dialog) and the "select all" indicator (inventory) now share a third, orange state for a partially-active category, instead of only showing green/red (dialog) or green/red/gold (inventory). Gold was replaced by the same orange used in the dialog for consistency. Orange is now reserved for counts sitting near the midpoint (a 40-60% band, widened to 30-70% for categories of 5 or fewer materials); other partial states show the normal mint/green color instead of orange for every partial count. - `/bp recommended` is split into two independent console subcommands. /bp recommended blocks writes only blocks.yml (lockable lists, auto-drop), while /bp recommended config writes only config.yml (enables modern_family_blocks, use_menus, and use_dialogs, the recommended settings that are not on by default). /bp recommended all applies both halves in sequence. Each half applies only once: a recommended_blocks_applied flag is stored inside blocks.yml and a recommended_config_applied flag in config.yml; re-running an already-applied half is a no-op that logs recommended_already_applied instead of silently overwriting the file again (which previously discarded any manual edits made since). Passing force as the third argument (/bp recommended blocks force / /bp recommended config force / /bp recommended all force) bypasses the guard and re-applies that half. - Auto Drop to Inventory is now reachable from the Dialog UI, not just the legacy inventory. LockablesDialog gained an Auto Drop button leading to AutoDropDialog (per-family status list) and AutoDropFamilyDialog (per-material toggles within a family, 9 per page), mirroring AutoDropInventory/AutoDropFamilyInventory. Per-world lockables selection in the Dialog UI was intentionally left out of this pass (see docs/ZYZ/FOR_LATER.md, planned for 1.3.5) since it requires porting a full per-world config screen, not a simple list.

    Pape

    38 downloads
  11. 1.3.3BlockProt Reloaded 1.3.3Jul 9, 2026
    ![1.3.3](https://raw.githubusercontent.com/VictorGugug/BlockProt-R… This page lists what changed in each release, in the order it shipped. Each entry describes the final, working behavior - not the intermediate steps taken to get there.

    Coming next

    1.3.4 - dialog system research
    A community member proposed replacing the current inventory/anvil/chat interaction system with Minecraft's dialog system ([issue #1](https://github.com/VictorGugug/BlockProt-Reloaded/issues/… It would unify every current interaction method into one interface and could add a button to the pause menu. Adopting it means either dropping support for versions below 1.21.6, or maintaining both interaction systems side by side. Research is starting; nothing about this is final yet.
    1.3.5 - language overhaul
    Every bundled language file except English and Spanish is currently outdated to varying degrees, some carrying leftover content from features that no longer exist in this fork. 1.3.5 replaces every one of those files wholesale with the equivalent file from the upstream project, then reconciles it with the strings this fork adds on top (integrations, per-world config, and so on). Alongside that, a community translation system is planned: a dedicated languages section on the project's Discord (https://discord.gg/RRcjuMr9Jd), where contributors can submit translation updates and corrections for review instead of relying on a single pass to keep every language current.

    1.3.3 is finally out

    After a long development cycle, I'm officially releasing 1.3.3. This is the biggest update this fork has shipped: five new plugin integrations (WorldGuard, Lands, Towny, ClaimChunk, PlaceholderAPI), item frame and storage vehicle protection, villager workstation protection, raid detection, a rebuilt lockables GUI, and a long list of inherited and fork-specific bug fixes. Everything below this point describes what actually shipped.

    1.3.3

    Breaking changes (0.1% of servers affected)
    - All lockable lists are empty by default. On a fresh install, blocks.yml starts with [] for every list, including lockable_entities. The admin configures lockable blocks via /bp lockables in-game, by editing blocks.yml directly, or by running the /bp recommended console command to populate a sensible default set. Existing servers upgrading are unaffected: their blocks.yml is never overwritten. - Bidirectional blocks.yml startup conversion re-added with guard. The modern_family_blocks flag now auto-converts blocks.yml format on /bp reload (via convertBlocksFormatIfNeeded()), but only when the file format actually mismatches the flag. This conversion preserves all material selections, only the format changes. On the first reload after changing the flag, the file is converted; subsequent reloads are no-ops. Manual edits are preserved (materials are never dropped, only reformatted). The infinite-reload-loop bug is prevented by suppressNext() before every save. - Config file writes only when dirty. cleanLegacyConfigKeys() and mergeMissingConfigKeys() now only write to disk when a change was actually made. This stops the infinite auto-reload loop caused by the plugin overwriting its own config files. - File watcher console spam reduced. The watcher logs one short line to the console ("Configuration change detected; reloading...") and one line to the session log per change. Previously it logged two console lines. World scan messages only print when worlds are actually added or patched. - Startup banner with ASCII art. BlockProt prints an ASCII "BPR" logo on startup in a light coffee color. The plugin name, version line, and boot status lines that follow print uncolored. - `/bp recommended` console command. Generates a sensible default blocks.yml. Console-only. See "First-start console guide" below for how new admins are pointed to it. - Per-world lockable GUI. When per_worlds_config: true, the lockables GUI shows a MAP button (slot 48) that opens a world selection inventory. Each world shows its enabled/disabled status and protected block count. Click a world to configure its individual lockable lists. - Auto-disable modern_family_blocks. When all lockable lists become empty via GUI toggling, modern_family_blocks auto-sets to false in config.yml. - Translation keys added: worlds.status, worlds.protected_count, worlds.no_worlds, worlds.world_config_hint, worlds.per_world_config, worlds.worlds, worlds.configured.

    Additions

    Fixed menu layout for all block and entity types
    Auto-drop to inventory configuration GUI
    A new GUI to configure auto_drop_to_inventory.blocks is accessible from the /bp lockables inventory (DROPPER item at slot 46). The page shows each family (Tile Entities, Shulker Boxes, Blocks, Doors, Entities) with a representative icon and its active/inactive/partial status. - Right-click a family toggles all its members at once (enables or disables auto-drop for the entire family). - Left-click opens a paged sub-menu listing every material in that family. Each material can be toggled individually. - The back button returns to the lockables GUI. New methods in DefaultConfig: toggleAutoDropMaterial(), toggleAutoDropFamily(), representativeMaterialForFamily(). All toggles persist to blocks.yml on disk.
    Lockables GUI blocks no longer move on toggle
    The active-status sort was removed. Blocks stay in their family section sorted by name only. Toggling a block on or off no longer changes its position in the inventory.
    Fixed crash on non-item materials in auto-drop sub-menu
    Materials that cannot be held in an ItemStack (LAVA_CAULDRON, WATER_CAULDRON, POWDER_SNOW_CAULDRON, wall-mounted signs) are resolved to display equivalents before creating ItemStacks. The sub-menu no longer crashes when opening the Blocks family. The Block Lock menu previously placed its buttons using a counter that incremented for each button actually shown. When a button did not apply to the current block (for example, no Redstone button on a workstation), every button after it shifted one slot to the left. This meant the same menu looked different depending on which block type opened it, and the bottom-row buttons (Inspect, Audit Log, Paste, Copy, Info) ended up in inconsistent slots between block types. Every button now has one fixed slot, used by every block and entity type. A button that does not apply to the current type simply leaves its slot empty; the other buttons never move. Fixed slots, top row: | Slot | Item | Shown for | |---|---|---| | 0 | Block icon | Always | | 1 | Redstone | Storage and traversal blocks | | 2 | Player Head | Always, unless friend functionality is disabled | | 3 | Name Tag | Always | | 4 | Ender Pearl | Always | | 5 | Emerald | Workstation blocks only | Fixed slots, bottom row: | Slot | Item | Shown for | |---|---|---| | 9 | Spyglass | Storage blocks with an inventory, owner or admin | | 13 | Clock | Owner or admin, audit logger active | | 14 | Knowledge Book | Manager role, clipboard has data | | 15 | Paper | Manager role | | 16 | Compass | Manager role or admin | | 17 | Barrier | Always | The entity menu (fillForEntity) was fixed the same way: Name Tag stays at slot 0, Redstone and Ender Pearl only appear for storage vehicles (chest boats, storage/hopper minecarts) and always sit at slots 1 and 4, Player Head always sits at slot 2, Spyglass and Clock sit at 9 and 10 for storage vehicles, and Compass sits at 13.
    Entity protection rename
    The protection system covering tamed animals (wolves, cats, parrots, horses, llamas) was renamed end-to-end from "pet protection" to "entity protection" across class names, package names, config keys, NBT persistent-data keys, and method names. This is purely a naming and organization change; behavior is identical to the previous pet protect
    95 downloads
  12. 1.3.2BlockProt Reloaded 1.3.2Jun 4, 2026
    Added the option to remove ALL protections from a world individually
    122 downloads
  13. 1.3.1BlockProt Reloaded 1.3.1May 31, 2026
    Release from 1.3.0-SNAPSHOT-2 New: /bp unlock GUI The old coordinate-based /bp unlock [world] command has been replaced with a full paginated GUI. Running /bp unlock opens a six-row inventory listing every block currently protected by the target player, using the real block icon for each entry. Left-click any block to inspect its inventory contents in read-only mode — no items can be taken or placed. Right-click any block to remove its protection entirely; an action-bar message confirms the block name, the owner it was removed from, and the coordinates. Supports pagination and works for offline players. Requires blockprot.user.admin. New: Duration Parser Timed access and protection expiry now share a single DurationParser that accepts human-readable duration strings with combined units. Accepted suffixes: s (seconds), m (minutes), h (hours), d (days), mo / mon (months), y (years). Units can be freely combined: 1d12h30m, 2mo3d, 1y6mo. All max-per-unit limits are enforced and configurable. Previously the timed-access parser was a separate inline implementation with no support for combined units. Fix: Inventory title and item name color injection All GUI menu titles and item display names are now rendered as plain text, letting Minecraft apply its default white color. Previously LegacyComponentSerializer was used to set display names, which caused section-sign color codes embedded in translation strings or hardcoded prefixes to produce colored text — most visibly the §4Admin §f prefix on the /bp unlock inventory title shown in the screenshot below. Every inventory class has been updated: BlockProtInventory now strips §x and &x codes before passing any string to Component.text(). Lore lines and chat/action-bar messages are unaffected and still support legacy color codes from translation files. Fix: InventoryConstants.singleLine duplicate removed singleLine was a duplicate constant of lineLength (both equal to 9). All seven call sites across BlockInfoInventory, FriendDetailInventory, FriendManageInventory, and UserSettingsInventory have been migrated to lineLength and the duplicate constant removed. Fix: Unused PlayerTextures import removed from BlockProtInventory Fix: Dead actionIcon() method removed from AuditInventory The method was only used to prepend colored §cX / §aO / §e- / §2+ symbols to audit entry display names. With the color injection fix, display names are now plain text and the symbol-based prefix was replaced by the already-existing actionLabel() string. The dead method has been removed. Fix: Inline color codes removed from TimedAccessInventory, AuditInventory, and AdminMenuInventory Hardcoded §a / §c / §e / §7 / §8 / §f / §6 prefixes were removed from item labels, audit entry display names, lore lines, and the integrations action-bar output. Text that had no meaningful color intent is now plain; text in lore that was intentionally styled continues to use the legacy serializer from the translation file. Documentation: Command and permission audit A full cross-reference of all command source files against plugin.yml and the README was performed. Corrections applied: /bp timed is documented as a chat-input flow rather than a tab-completable CLI subcommand (it was never registered in BlockProtCommand's CLI map); /bp friends bare invocation was undocumented and has been added; /bp reload, /bp update, and /bp integrations require op, not blockprot.user.admin — corrected in the README; /bp about and /bp help are CLI-only and are hidden in GUI mode — the incorrect "Universal Commands" section has been removed; the permissions table now distinguishes between permissions declared in plugin.yml (with defaults) and runtime-only nodes (blockprot.debug, blockprot.lockmax, blockprot.locklimit.*) that must be granted manually. Documentation: README User Menu table corrected The User Menu slot table now reflects the actual UserMenuInventory layout: four items at slots 11–14 (Settings, Friends, Statistics, About). The previous table listed six items across slots 10–16 including Transfer and Timed Access hints that are not present in the current implementation.
    187 downloads
  14. 1.3.0-SNAPSHOT-2BlockProt Reloaded 1.3.0-SNAPSHOT-2May 21, 2026
    Here is the release notes for Snapshot 2. The changes were mentioned in the last version. Snapshot 3 is expected sometime this week, but it might be delayed because I have exams to get into high school, so please be patient. I appreciate your support, and if you find any bugs, please report them in this repository. Have a nice evening.
    27 downloads
  15. 1.3.0-SNAPSHOT-1BlockProt Reloaded 1.3.0-SNAPSHOT-1May 21, 2026

    Snapshot Release Notes | Development Cycle Consolidation and Core Refactoring

    This major snapshot release marks the official deployment and architectural consolidation of development builds Dev 3, Dev 4, and Dev 5 into a single synchronized build.

    Versioning Methodology and Release Pipeline

    To establish a more rigorous and predictable development cycle, the project infrastructure is transitioning to an automated version tracking pipeline. Moving forward, version sequences will follow a strict milestone rule: upon the compilation and completion of the fifth iterative development build (Dev 5), the release system will automatically transition and generate a new major snapshot release branch.
    [!IMPORTANT]
    Example Progression: Version 1.2.9-dev-5 will automatically trigger the generation of the subsequent major release, 1.3.0-SNAPSHOT-1. This structural framework has been introduced to significantly improve long-term version management, dependency tracking, and update deployment predictability. This specific versioning pipeline is currently provisional and remains subject to modification as the continuous integration requirements evolve.
    ---

    Technical Performance and Architectural Optimization

    Console Streamlining and Runtime Efficiency:* The core architecture has undergone extensive optimization to enhance processing speeds and overall server stability. A key objective of this refactoring was the drastic reduction of continuous console output logging. By suppressing redundant tracking data and routine informational messages, the build prevents unnecessary disk write overhead, maximizes console readability for administrators, and ensures that critical system errors or alerts are highly visible without log spam. Hierarchical Configuration Documentation:* Comprehensive administrative documentation has been embedded directly into the project ecosystem. This asset provides a highly organized structural framework for configuration files. It outlines exactly how properties, values, and localized parameters should be formatted, allowing server operators to maintain organized file directories and deploy custom local alterations with minimal risk of formatting errors. ---

    Security and Protection Infrastructure

    Pet Protection Subsystem (Disabled by Default):* A specialized protection mechanism has been engineered to preserve the safety and security of player-owned pets and tamed entities. When activated, this subsystem completely immunizes protected entities from damage vectors caused by external players, hostile attacks, and unauthorized interactions or physical interventions by non-whitelisted individuals. Isolated MySQL Database Architecture:* To maximize database reliability and operational segregation, the data storage layer has been updated. The infrastructure now forces all MySQL directories, storage tables, and configuration outputs to reside within an entirely independent, dedicated sub-folder separate from standard runtime assets. Integrated Protection Feedback Particles:* Visual confirmation systems developed and tested during iterations 3 and 4 have been officially compiled into the production build. The engine now triggers real-time particle rendering routines to provide explicit gameplay feedback for security interactions. These custom particle vectors are executed upon successfully locking or unlocking a storage container, enabling local protection filters over active redstone networks, establishing active protection criteria over hoppers, and enforcing security parameters over piston mechanics to prevent illegal block movement. ---

    User Interface and Experience Engineering

    Action Bar Information Routing:* To preserve chat aesthetics and prevent standard text saturation, user query outputs have been completely rerouted. Execution of the friend lookup utility will no longer post raw text blocks or status confirmation strings directly into the global or local player chat log. Instead, the requested user data is sent straight to the client screen via the action bar overlay, ensuring a non-intrusive HUD readout that keeps active gameplay visible. SkinRestorer Integration for Offline-Mode (Cracked) Servers:* To enhance player identification thresholds within offline-mode or hybrid network topologies, formal compatibility bridges have been engineered for the SkinRestorer API. The system is now fully capable of pulling, caching, and rendering individual user skin head textures directly inside the plugin's graphical menus and player reference lists. This integration ensures that players operating on cracked servers can instantly recognize and confirm the identity of individuals they add to their trusted access lists via accurate visual cues. ---

    Future Objectives and GUI Migration Roadmap

    Development has officially commenced on the upcoming Snapshot 2 build. While the automated bulk-processing macro /bp friends addall has already been fully integrated (successfully addressing the top-voted community request sourced from historical Bukkit discussion comments), the upcoming development phases will follow a specific transitional roadmap from command-line dependencies toward full graphical user interface (GUI) management.
    Snapshot 2: Feature Expansion and Command Implementation
    The immediate next phase will focus on deploying critical structural features requested by the community alongside essential performance patches. Consequently, Snapshot 2 will introduce a higher volume of manual text commands than traditionally expected. Scheduled implementations include: Authorization and Ownership Transfer Commands (`/bp transfer <player>`):* A secure ownership migration utility allowing a protection builder to permanently delegate full administrative rights over a specific container directly to another verified user identity. Access Control List Replacement Matrix:* Addressing GitHub ticket #268, the copy-and-paste utility will abandon entry-appending in favor of an explicit "Replace Mode," entirely flushing pre-existing access lists on target blocks to prevent permission stacking. Temporal and Time-Decaying Access Protocols:* An advanced temporal authorization layer allowing users to extend block interaction privileges to auxiliary players that automatically self-terminate after a server-validated timestamp expires. Administrative Verification Utilities (`/bp info <player>Code`):* A comprehensive lookup command granting authorized staff the ability to extract a full location list of all protected coordinates registered to any targeted player profile.
    Snapshot 3: Interface Refinement and Visual Migration
    To resolve the heavy reliance on manual commands introduced in the previous cycle, Snapshot 3 will be dedicated almost entirely to interface engineering. The objective is to migrate newly added operational commands directly into the visual management GUI. This phase will introduce: Granular Permission Controls via Graphical Interface:* Expanding the management menu to support individual permission toggles, allowing users to interactively cycle friend access levels between read-only parameters and full structural write access. Explicit Lock-on-Place State Labels:* Deprecating the use of simple enchantment glints as status indicators in favor of definitive, clear textual labels indicating absolute enabled or disabled states within the menu.
    Snapshot 4: Complete GUI Standardization
    The ultimate milestone for Snapshot 4 is the near-total deprecation of syntax-based execution for standard users. By this release, the objective is to ensure that the vast majority of the plugin's functionalities, configurations, and administrative tools are accessible entirely through intuitive graphical menus, virtually eliminating the need for manual command inputs during standard gameplay. ---

    Development Methodology and Research Documentation

    The layout of t
    19 downloads
  16. 1.2.9-dev-2BlockProt Reloaded 1.2.9-dev-2May 19, 2026
    Added 3. Colored Particle Effects on Lock / Unlock / Settings Toggle Lock → green dust-particle ring around the block + chest-locked sound. Unlock → red dust-particle ring + sound. Double chests are handled correctly: both halves receive the particle ring simultaneously. Redstone setting toggle → red ↔ white DUST_COLOR_TRANSITION ring + lever click sound. Hopper setting toggle → light-gray ↔ dark-gray transition ring. Piston setting toggle → brown ↔ gray transition ring. All effects respect block_lock_effects: true/false in config.yml (default: true). 24. Shulker Box — Shift+Right-Click Places Without Protection Placing a shulker box while sneaking (Shift+right-click) skips the lock-on-place step. The shulker is placed without any owner, so the recipient can open and lock it as their own. Normal placement still auto-locks as configured. Configurable via the existing lock_on_place_by_default flow; no extra config key needed. 25. Skin Resolution for Cracked / Offline-Mode Servers SkinCache provides an async Mojang-API fallback for offline servers where UUIDs are name-derived and don't correspond to Mojang profiles: On first GUI open for a player, a plain (no-texture) head is shown immediately. In the background, BlockProt queries api.mojang.com to resolve the real Mojang UUID from the username, then fetches the skin texture from the session server. On the next GUI open the skinned head is returned from cache. SkinRestorer (if installed) always takes priority over the Mojang fallback. Fetch failures (network errors, rate limits, unknown names) are silently skipped; the plain head continues to be shown without any console errors. 26. Admin Teleport from Statistics Inventory In the Statistics → Your Blocks list, players with blockprot.admin permission can click any block entry to teleport directly to that block. The inventory closes after teleporting. Players without the admin permission see no change on click. 27. Amber Console Colors for BlockProt-Plus Messages Integration registration and enable messages print in gold/amber via BlockProtConsole. Informational startup messages use §e yellow, success messages use §a green, warnings §c red. Uses Bukkit.getConsoleSender().sendMessage() with legacy color codes — rendered natively by Paper's Log4j2 console renderer on 1.21+ and falls back to plain text on Spigot. Example: §6[BlockProt]§r §6Integration enabled: §eclaimchunk§r 28. Per-Player Sections in the Access Audit Log The audit GUI overview now shows one head per unique player with a clear label: §cX §fname (access denied) or §aOK §fname (access granted). Lore shows the last event timestamp, total event count, and world/coordinates. Clicking a player head opens their full personal history (all events in order). The detail view shows individual event timestamps and actions. Navigation arrows are consistent across both views. Dev 1 is dead kay don´t ask for him, his dead and will never revive, 🥹
    33 downloads
  17. 1.2.9-SNAPSHOTBlockProt Reloaded 1.2.9-SNAPSHOTMay 19, 2026
    All the information of this SNAPSHOT is in [BlockProt - Repo](https://github.com/VictorGugug/BlockProt-Plus) after this release all the changues will be documented on [Releases - Github](https://github.com/VictorGugug/BlockProt-Plus/releases)
    27 downloads

Similar projects

Plugin →