Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for VictorGugug

An advanced Bukkit protection plugin for chests, furnaces, and more, built with a modern GUI

Report BlockProt-Reloaded?

R

1.3.6

1.3.6

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 build/test tools.
  • Added dynamic release cycle commit aggregator (.github/scripts/generate_version_commits.py) automatically detecting release boundaries from gradle.properties and Git history without manual version input, outputting categorized commit summaries to GitHub Actions Step Summaries, build artifacts, and release bodies.
  • Added comparative status table ([v] up to date / [x] update available) rendered directly into GitHub Actions Job Summary without failing CI runs on external upstream updates.
  • Added weekly scheduled trigger (cron: '0 3 * * 0') to CI workflow for proactive automated dependency monitoring.
  • Added automated Governance and Standards validation integrated into .github/workflows/ci.yml validating commit conventions, version integrity in gradle.properties, GPL v3 license headers, and absence of placeholder markers.
  • Added concurrency controls across all repository workflows (ci.yml, publish.yml, release.yml) to cancel redundant in-flight runs on active branches.
  • Added structured GitHub Step Summaries across all workflows (ci.yml, publish.yml, release.yml).
  • Added comprehensive automated unit test EntityProtectionTest covering stick locking, entity claiming, and third-party denial for villagers.
  • Added safe accessors BlockProt.getInstanceOrNull() and BlockProt.hasFoliaLib() to facilitate headless testing environments.
  • Declared explicit supported Minecraft version targets in gradle.properties for the 1.3.6 release cycle (1.20.5 through 26.2).
  • Added structured player NBT organization under BukkitValues/blockprot/... with dedicated subcompounds for preferences, friends, history, and admin.
  • Added native Bedrock Forms GUI integration using GeyserMC Floodgate and Cumulus APIs, including BedrockUserMenuForm, BedrockUserSettingsForm, BedrockStatsForm, BedrockTransferForm, BedrockFriendManageForm, BedrockBlockLockForm, BedrockBlockSettingsForm, BedrockAdminMenuForm, BedrockAdminConfigForm, BedrockLockablesForm, and BedrockAutoDropForm.
  • Added player preference toggle (blockprot_prefer_bedrock_forms) to allow Bedrock players to switch between native Bedrock forms and Java inventory/dialog menus.
  • Added discrete Brigadier command node registration for /bp and /blockprot on Paper servers, ensuring subcommand tab completions appear natively on Bedrock clients via Geyser.
  • Added four friend permission levels (Basic, Operator, Full Manager, and Custom) with granular action flags, supported across dialogs, inventory menus, and Bedrock forms.
  • Added centralized Geyser and Floodgate integrations in integrations.yml with automatic Floodgate username prefix detection.
  • Added a block unlock action shortcut to the Admin Menu inventory.
  • Added experimental support for Minecraft 1.20.5 and 1.20.6 by setting api-version: '1.20'.
  • Added Romanian (translations_ro.yml), Arabic (translations_ar.yml), Ukrainian (translations_uk.yml), Hebrew (translations_he.yml), and Swedish (translations_sv.yml) language files to bundled resources.
  • Added dynamic pagination and support for 25 languages in language selection interfaces.
  • Added Bedrock player skin resolution in SkinCache via the official Geyser Global API (/v2/skin/{xuid}) with XUID extraction from Floodgate UUIDs and Xbox gamertags.
  • Added language-agnostic block query aliases (search_aliases: in translation files) loaded dynamically via Translator and BlockFamilyParser.
  • Added dual-interface Admin Tiers management supporting both chest inventory GUIs (AdminTiersInventory, AdminTierSelectInventory) and native Paper Dialogs (AdminTiersDialog, AdminTierSelectDialog), accessible via /bp tiers, /bp tiers gui, and slot 19 in /bp admin.
  • Added support for configuring the Custom administrative tier directly in the role selection GUI (slot 22, styled as a blue dyed chestplate) and Paper Dialogs.
  • Added automatic server operator (OP) detection across admin tier interfaces, displaying [OP] badges in player lists, player skulls, and dialog headers to clearly distinguish server operators from assigned tiers.
  • Added direct single-player inspection via /bp tiers <player>, reporting both configured administrative tier and server operator status.
  • Added automated unit tests (BlockProtInventoryClickTest) verifying click cancellation, state fallback generation, drag prevention, and exception logging in BlockProtInventory menus.
  • Added official PaperMC Hangar publication plugin integration (io.papermc.hangar-publish-plugin:0.1.4) in spigot/build.gradle.kts targeting BlockProt-Reloaded for Paper 1.20.5 - 26.2.
  • Added multi-platform manual publication workflow (.github/workflows/publish.yml) uploading to Modrinth, CurseForge, and Hangar with credential verification.
  • Added 3-mode execution selector (Preview (Dry-Run Pre-Flight Inspection), Publish / Release (Confirm & Upload), Cancel (Abort without action)) across release and publication workflows.
  • Added single source of truth for platform and version compatibility boundaries in gradle.properties (supportedPlatforms, legacyPlatforms, unsupportedPlatforms, unsupportedVersions).
  • Added real-time server software and upstream build queries to .github/scripts/audit_dependencies.py checking PaperMC Fill v3, PurpurMC API, and Folia builds, displaying stable, experimental, and unsupported platform statuses in Job Summaries.
  • Added dynamic run-name headers across all GitHub Actions workflows (CI: <commit>, Release [<mode>]: <version>, Publish [<mode>]: <tag>) for clean, organized monitoring.
  • Added Domain 10 ("Player Simulation & Gameplay Verification") to /bp debug run in DebugCommand.java, executing 10 in-game player simulation scenarios covering block lock/cache lifecycle, stranger access denial, friend lifecycle, redstone/hopper toggles, block family expressions, hazard protection, entity protection, GUI state integrity, permission node evaluation, and player settings persistence.
  • Added console execution support for /bp debug run [player], executing headless server diagnostics across non-player domains when no player is online, or running full 10-domain player simulation when an online player context is provided.
  • Added automated PlayerSimulationTest utilizing MockBukkit to verify protected block caching, multi-block family resolution, and entity protection damage cancellation within the test suite.
  • Added project file integrity audit step in .github/workflows/ci.yml powered by verify_project_integrity.py, testing YAML syntax, translation parity (904 keys across English and Spanish), GPL v3 headers, placeholder absence, and pure Java boundaries.

Changed

  • Consolidated standalone diagnostics and integrity auditing directly into .github/workflows/ci.yml, publishing the complete file integrity report to GitHub Job Summaries and archiving integrity-report.md alongside CI reports.
  • Relocated developer compilation guide from consumer-facing documentation into internal developer tooling to preserve clean distribution boundaries.
  • Updated all diagnostic check methods in DebugCommand to accept nullable player instances, enabling headless execution from console.
  • Consolidated Governance and Standards validation directly into .github/workflows/ci.yml as Job 1 before build execution, eliminating redundant concurrent workflow runs and retiring standalone governance.yml.
  • Renamed the unassigned role none to User (Normal) across language files, inventory lore, and dialog actions, allowing administrators to configure players back to standard user permissions directly from the interface.
  • Expanded AdminTier.fromString with user, normal, and 0 aliases resolving to AdminTier.NONE.
  • Expanded /bp debug run diagnostics with automatic structural class verification for all admin tier UI components and role storage roundtrip tests.
  • Streamlined /bp debug environment diagnostic reporting into structured key-value entries, removing verbose logs and delimiter lines.
  • Consolidated language label computation between AdminConfigLanguageDialog and AdminConfigLanguageInventory.
  • Refactored TemporaryActionBar to eliminate resend flickering and abrupt empty packet clears, refreshing display packets every 40 ticks for sustained visibility throughout the configured window (action_bar.duration_seconds: 6).
  • Decoupled tier role management from /bp admin to standalone /bp tiers [setrole] <player> <role>.
  • Enforced strict command and tab-completion filtering to /bp user and /bp admin when use_menus: true, dispatching instant client command tree updates (player.updateCommands()) on join and dynamic config changes.
  • Automated removal of obsolete recommended_config_applied and recommended_blocks_applied keys from disk on startup and patching.
  • Updated VillagerWorkstationProtectionListener to enforce AdminTierManager permissions and dispatch alerts via TemporaryActionBar.
  • Updated admin commands and listeners (BlockEventListener, InteractEventListener, AdminMenuCommand, LockablesCommand, AdminUnlockCommand, WorldProtDeleteCommand, ReloadCommand, UpdateCommand, IntegrationsCommand) to check granular AdminAction and AdminTier permissions.
  • Converted WorldExpiryTask from legacy BukkitRunnable to Runnable dispatched through FoliaLib scheduler with chunk-level protected block pre-filtering.
  • Modernized VillagerLocateTask to use FoliaLib scheduler with task cancellation hooks.
  • Upgraded FriendSearchResultInventory, EntityFriendSearchResultInventory, and TransferSearchInventory to use asynchronous querying with runAtEntity UI callbacks, eliminating legacy 1-tick polling loops.
  • Modernized AuditInventory, BlockInfoInventory, EntityInfoInventory, and BlockProtInventory async skull texture resolution to use entity-bound FoliaLib dispatchers.
  • Modernized FriendsAddAllCommand background task execution with FoliaLib scheduler.
  • Upgraded commons-lang3 dependency to version 3.17.0.
  • Upgraded item-nbt-api to 2.16.1, Towny integration to 0.103.2.7, GriefPrevention integration to 16.18.7, and Residence integration to 6.0.2.3.
  • Upgraded mysql-connector-j to Oracle CalVer 26.7.0, org.jetbrains:annotations to 26.1.0, and test platform junit-bom to 6.1.3 with MockBukkit 4.116.3.
  • Updated Gradle root project declaration in settings.gradle.kts to BlockProt-Reloaded and upgraded Shadow plugin to 9.6.1.
  • Bounded SkinCache with a Caffeine cache capped at 5,000 profiles and a 24-hour expiration window.
  • Added candidate caching with a 30-second TTL to PlayerLookup to optimize repeated friend search queries on large offline player databases.
  • Updated User Menu dialog (UserMenuDialog) block transfer button to prompt via chat input (TextInput), enabling native tab-completion for player names.
  • Standardized multi-action dialog navigation rows across AutoDropDialog, LockablesDialog, LockableCategoryDialog, AutoDropFamilyDialog, AutoDropSearchDialog, and WorldLockableDetailDialog using grid padding (BpDialogStyles.padToGrid) to fix Prev, action, and Next buttons in stable 3-column bottom rows.
  • Updated administrator and user guide documentation (ADMIN_GUIDE.md and USER_GUIDE.md) covering administrative permission tiers, standalone /bp tiers command usage, Bedrock forms preference toggling, and protectable entities.
  • Modernized root README.md with complete documentation on UI parity (native Paper Dialogs, Bedrock Forms, Chest GUIs), 4-tier staff administration, and 13 external integrations, while removing obsolete roadmap and legacy documentation transition policies.
  • Synchronized root README.md and documentation references with the complete 10-section configuration schema from config.yml, updating supported Minecraft versions to 1.20.5 - 26.2 across consumer guides.

Deprecated

  • Standalone un-forked Spigot is now formally deprecated and will reach end of support in this release cycle. Paper or modern Paper forks (Purpur, Folia) are strongly recommended.

Removed

  • Removed dead filterFriends and filterFriendsInternal methods from PluginIntegration and TownyIntegration, cleaning up orphaned javadoc references.
  • Removed deprecated unused constructor in BlockProtInventory.

Fixed

  • Fixed action bar alerts fading out prematurely after 2 seconds regardless of configuration by refreshing packets every 40 ticks throughout the configured display window (default 6 seconds) and clearing cleanly at expiration.
  • Fixed command tab completions remaining desynchronized on client join or runtime config modification when use_menus is enabled.
  • Fixed /bp tiers reporting an unhelpful no-permission message when admin_tiers is disabled instead of displaying the informative disabled notice.
  • Fixed performance lag during massive explosions on unprotected terrain in RaidDetectionListener by filtering blocks through ProtectedBlockCache before reading NBT.
  • Fixed alert spam during raids by debouncing rapid explosion notifications within a 5-second cooldown per owner.
  • Fixed legacy flat player tags cluttering the root player PersistentDataContainer in NBTExplorer by migrating and purging old keys upon login.
  • Fixed un-cached NBT deserialization on high-frequency redstone current changes by checking ProtectedBlockCache prior to inspecting block state.
  • Fixed piston extend and retract listeners reading NBT for blocks outside the protected block cache.
  • Fixed block burn, block break, and explosion blast radius calculations reading persistent data for unprotected blocks.
  • Fixed redundant BlockState allocation during block interaction checks in InteractEventListener.
  • Fixed raw permission strings in InactivityCleanupTask and EntityMenuOpenListener to use centralized Permissions constants.
  • Fixed navigation button misalignment in AutoDropDialog where 5-item family lists caused Prev and Next buttons to shift into content rows.
  • Fixed player name resolution in block transfers and friend candidate lookups to reliably resolve both online and offline players.
  • Fixed EntityMenuOpenListener and EntitySettingsInventory blocking non-tameable protectable entities by replacing restrictive instanceof Tameable checks with EntityProtectionHandler.isSupportedEntity(...) and enabling unowned entity claiming.
  • Fixed EntityProtectionHandler throwing AssertionError during headless test execution by using safe NamespacedKey generation.
  • Fixed test discovery failures (NoSuchMethodError) caused by version misalignment between MockBukkit 4.110.0 and JUnit 5 by aligning with junit-bom:6.0.3.
  • Fixed BlockFamilyParser invoking mock-unimplemented legacy material checks by checking m.isLegacy() prior to m.isAir().
  • Fixed item theft vulnerability in BlockProtInventory menus (AdminTiersInventory, AdminTierSelectInventory) where clicks occurred without an active InventoryState or fell into unhandled container paths, ensuring top and bottom clicks are unconditionally cancelled and fallback state is automatically generated.
  • Fixed silent error suppression on inventory and container click handlers by routing diagnostics through BlockProtLogger.error and informing players of internal failures.
  • Fixed InventoryDragEvent on BlockProtInventory to unconditionally cancel item dragging into custom interfaces.
  • Fixed premature menu close on "set by name" offline player action in AdminTiersInventory, ensuring suppressCloseReopen is set before triggering chat input.
  • Fixed /bp debug run screen coverage failures ([9g. Class coverage]) by registering and exercising AdminTiersInventory, AdminTierSelectInventory, AdminTiersDialog, AdminTierSelectDialog, FriendDetailDialog, and WorldExpiryDialog in debug test suites.
  • Fixed BlockProtLogger throwing AssertionError during headless test execution when calling BlockProt.getInstance() by utilizing safe accessor getInstanceOrNull() and falling back to standard logger.
  • Fixed menu navigation origins and origin stack propagation when selecting players in AdminTierSelectInventory and AdminTiersInventory, ensuring back button clicks return to the correct originating parent menu.
  • Fixed top-level command execution of /bp tiers gui displaying a back button by detecting MenuOrigin.NONE and rendering a barrier "Close" item that closes the inventory cleanly.
  • Fixed UpdateCommand, AboutCommand, and TiersCommand opening dialogs with incorrect parent origins when executed from chat, passing explicit DialogOrigin.NONE.
  • Fixed AdminMenuDialog opening AboutDialog with DialogOrigin.NONE instead of DialogOrigin.ADMIN_MENU, restoring proper return flow to the admin menu.
  • Fixed dialog transition in UserSettingsInventory when toggling preferDialogs, correctly propagating parent origin.
  • Fixed /bp debug run restricting diagnostics to in-game players only, now allowing server console execution in headless mode across all static and configuration domains while gracefully executing full player simulation when an online player context is provided.
  • Fixed InventoryState test state retention by ensuring mock and test player states are cleanly removed in finally blocks.

Repository and Governance

  • Established formal repository governance documentation:
    • CONTRIBUTING.md: Defines contribution guidelines, mandatory issue-first workflow, pull request lifecycle, live-server verification criteria, and AI-assisted contribution standards.
    • SCOPE.md: Formalizes authoritative project boundaries, supported server platforms (Paper family and Folia), universal version separation (plugin semantic versioning versus upstream Minecraft game releases), and out-of-scope targets.
    • AGENTS.md: Restates binding policies for AI assistants, enforcing the issue-first mandate, pure code without conversational narration comments, license header preservation, and prohibition of version bumping.
  • Standardized commit message convention across the repository:
    • Required format: BPR:<branch>(<type>): <description> (for example, BPR:main(fix): Resolve duplicate interact event on off-hand click or BPR:main(add): Introduce protectable entities configuration in blocks.yml).
    • BPR identifies the BlockProt Reloaded project.
    • :<branch> denotes the targeted repository branch (:main or future branches).
    • (<type>) categorizes the modification (fix, add, refactor, docs, chore).
    • Enforces linear history discipline, clarity, and verifiable compliance with repository standards.
  • Added direct community Discord invitation (https://discord.gg/RRcjuMr9Jd) across governance documents for proactive issue coordination.
  • Automated CI and Governance verification on all incoming pull requests and main pushes via GitHub Actions:
    • CI pipeline executes full Gradle builds and test suites with automated test report archiving on failure and shadow JAR artifact publishing on success.
    • Runtime environment step resolves and reports current plugin version, declared Minecraft support range (1.20.5 - 26.2), Java baseline, and platform targets in logs and job summaries.
    • Chained dependency and integration audit job parses gradle.properties and Gradle build scripts, querying Maven Central, CodeMC, TCoded, ExtendedClip, EngineHub, OpenCollab, and GitHub APIs across 24 components to produce a comparative status table ([v] / [x]).
    • Governance pipeline enforces commit formatting rules, version immutability in gradle.properties, GNU GPL v3 license headers across Java sources, and complete absence of placeholder markers (TODO, FIXME, XXX).
    • Consolidated diagnostic and project file integrity audit (verify_project_integrity.py) directly into .github/workflows/ci.yml, validating 32 YAML files, 904 translation key parity between English and Spanish, and pure Java isolation in :common.
    • Concurrency management across all workflows cancels obsolete in-flight executions on branches while allowing primary branch runs to conclude cleanly.
    • Dynamic release cycle commit aggregator (.github/scripts/generate_version_commits.py) extracting version boundaries from gradle.properties and Git history, publishing categorized commit summaries directly to GitHub Step Summaries and release artifacts without manual version entry.
    • Modernized Gradle wrapper validation in release and publish pipelines via gradle/actions/wrapper-validation@v4.
    • Structured step summaries across all workflows providing immediate visibility into test outcomes, governance checks, artifact builds, and release metadata.
    • Consolidated Governance and Standards validation directly into ci.yml as Job 1, preventing duplicate workflow runs and ensuring all quality gates pass before compilation.
    • Multi-platform publication workflow (publish.yml) supporting Modrinth, CurseForge, and PaperMC Hangar with 3-mode execution (Preview, Publish, Cancel) and binary checksum validation.
    • Upstream server platform build auditing for Paper, Folia, and Purpur tracking stable and experimental releases alongside compatibility boundaries.

Information

Published
September 27, 2026
1Downloads

Platforms

Paper
Paper
1.20.5–26.3