Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
An advanced Bukkit protection plugin for chests, furnaces, and more, built with a modern GUI

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 runwith 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
TemporaryActionBarfor sustained client alerts with configurable duration (action_bar.duration_seconds: 6). OptimizedRaidDetectionListenerwithProtectedBlockCacheearly exit and 5-second owner debouncing to prevent alert spam during raids. - Expanded Entity Protection: Added
protectable_entitiesinblocks.yml, enabling protection for non-tameable entities withVILLAGERconfigured 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
mainand 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 andgradle.propertiesdirectly 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 officialio.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-versionto1.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) andblockprot.user.admin.custom. - Added standalone staff management via
/bp tiers [setrole] <player> <role>andadmins.yml, providing persistent role storage without requiring LuckPerms, decoupled from/bp admin. - Added in-game
/bp recommendedcommand execution for players holding theblockprot.user.admin.ownerpermission. - Added
action_bar.duration_secondsconfiguration setting inconfig.yml(default 6 seconds). - Added
protectable_entitiesconfiguration list inblocks.yml, withVILLAGERconfigured 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 tomainand 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-auditjob in.github/workflows/ci.ymlbacked 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 fromgradle.propertiesand 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.ymlvalidating commit conventions, version integrity ingradle.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
EntityProtectionTestcovering stick locking, entity claiming, and third-party denial for villagers. - Added safe accessors
BlockProt.getInstanceOrNull()andBlockProt.hasFoliaLib()to facilitate headless testing environments. - Declared explicit supported Minecraft version targets in
gradle.propertiesfor the 1.3.6 release cycle (1.20.5through26.2). - Added structured player NBT organization under
BukkitValues/blockprot/...with dedicated subcompounds forpreferences,friends,history, andadmin. - Added native Bedrock Forms GUI integration using GeyserMC Floodgate and Cumulus APIs, including
BedrockUserMenuForm,BedrockUserSettingsForm,BedrockStatsForm,BedrockTransferForm,BedrockFriendManageForm,BedrockBlockLockForm,BedrockBlockSettingsForm,BedrockAdminMenuForm,BedrockAdminConfigForm,BedrockLockablesForm, andBedrockAutoDropForm. - 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
/bpand/blockproton 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.ymlwith 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
SkinCachevia 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 viaTranslatorandBlockFamilyParser. - 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 inBlockProtInventorymenus. - Added official PaperMC Hangar publication plugin integration (
io.papermc.hangar-publish-plugin:0.1.4) inspigot/build.gradle.ktstargetingBlockProt-Reloadedfor Paper1.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.pychecking PaperMC Fill v3, PurpurMC API, and Folia builds, displaying stable, experimental, and unsupported platform statuses in Job Summaries. - Added dynamic
run-nameheaders 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 runinDebugCommand.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
PlayerSimulationTestutilizing 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.ymlpowered byverify_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 archivingintegrity-report.mdalongside 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
DebugCommandto accept nullable player instances, enabling headless execution from console. - Consolidated Governance and Standards validation directly into
.github/workflows/ci.ymlas Job 1 before build execution, eliminating redundant concurrent workflow runs and retiring standalonegovernance.yml. - Renamed the unassigned role
nonetoUser (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.fromStringwithuser,normal, and0aliases resolving toAdminTier.NONE. - Expanded
/bp debug rundiagnostics with automatic structural class verification for all admin tier UI components and role storage roundtrip tests. - Streamlined
/bp debugenvironment diagnostic reporting into structured key-value entries, removing verbose logs and delimiter lines. - Consolidated language label computation between
AdminConfigLanguageDialogandAdminConfigLanguageInventory. - Refactored
TemporaryActionBarto 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 adminto standalone/bp tiers [setrole] <player> <role>. - Enforced strict command and tab-completion filtering to
/bp userand/bp adminwhenuse_menus: true, dispatching instant client command tree updates (player.updateCommands()) on join and dynamic config changes. - Automated removal of obsolete
recommended_config_appliedandrecommended_blocks_appliedkeys from disk on startup and patching. - Updated
VillagerWorkstationProtectionListenerto enforceAdminTierManagerpermissions and dispatch alerts viaTemporaryActionBar. - Updated admin commands and listeners (
BlockEventListener,InteractEventListener,AdminMenuCommand,LockablesCommand,AdminUnlockCommand,WorldProtDeleteCommand,ReloadCommand,UpdateCommand,IntegrationsCommand) to check granularAdminActionandAdminTierpermissions. - Converted
WorldExpiryTaskfrom legacyBukkitRunnabletoRunnabledispatched through FoliaLib scheduler with chunk-level protected block pre-filtering. - Modernized
VillagerLocateTaskto use FoliaLib scheduler with task cancellation hooks. - Upgraded
FriendSearchResultInventory,EntityFriendSearchResultInventory, andTransferSearchInventoryto use asynchronous querying withrunAtEntityUI callbacks, eliminating legacy 1-tick polling loops. - Modernized
AuditInventory,BlockInfoInventory,EntityInfoInventory, andBlockProtInventoryasync skull texture resolution to use entity-bound FoliaLib dispatchers. - Modernized
FriendsAddAllCommandbackground task execution with FoliaLib scheduler. - Upgraded
commons-lang3dependency to version3.17.0. - Upgraded
item-nbt-apito2.16.1,Townyintegration to0.103.2.7,GriefPreventionintegration to16.18.7, andResidenceintegration to6.0.2.3. - Upgraded
mysql-connector-jto Oracle CalVer26.7.0,org.jetbrains:annotationsto26.1.0, and test platformjunit-bomto6.1.3withMockBukkit4.116.3. - Updated Gradle root project declaration in
settings.gradle.ktstoBlockProt-Reloadedand upgraded Shadow plugin to9.6.1. - Bounded
SkinCachewith a Caffeine cache capped at 5,000 profiles and a 24-hour expiration window. - Added candidate caching with a 30-second TTL to
PlayerLookupto 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, andWorldLockableDetailDialogusing grid padding (BpDialogStyles.padToGrid) to fixPrev, action, andNextbuttons in stable 3-column bottom rows. - Updated administrator and user guide documentation (
ADMIN_GUIDE.mdandUSER_GUIDE.md) covering administrative permission tiers, standalone/bp tierscommand usage, Bedrock forms preference toggling, and protectable entities. - Modernized root
README.mdwith 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.mdand documentation references with the complete 10-section configuration schema fromconfig.yml, updating supported Minecraft versions to1.20.5 - 26.2across 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
filterFriendsandfilterFriendsInternalmethods fromPluginIntegrationandTownyIntegration, 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_menusis enabled. - Fixed
/bp tiersreporting an unhelpful no-permission message whenadmin_tiersis disabled instead of displaying the informative disabled notice. - Fixed performance lag during massive explosions on unprotected terrain in
RaidDetectionListenerby filtering blocks throughProtectedBlockCachebefore 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
ProtectedBlockCacheprior 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
BlockStateallocation during block interaction checks inInteractEventListener. - Fixed raw permission strings in
InactivityCleanupTaskandEntityMenuOpenListenerto use centralizedPermissionsconstants. - Fixed navigation button misalignment in
AutoDropDialogwhere 5-item family lists causedPrevandNextbuttons 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
EntityMenuOpenListenerandEntitySettingsInventoryblocking non-tameable protectable entities by replacing restrictiveinstanceof Tameablechecks withEntityProtectionHandler.isSupportedEntity(...)and enabling unowned entity claiming. - Fixed
EntityProtectionHandlerthrowingAssertionErrorduring headless test execution by using safeNamespacedKeygeneration. - Fixed test discovery failures (
NoSuchMethodError) caused by version misalignment between MockBukkit 4.110.0 and JUnit 5 by aligning withjunit-bom:6.0.3. - Fixed
BlockFamilyParserinvoking mock-unimplemented legacy material checks by checkingm.isLegacy()prior tom.isAir(). - Fixed item theft vulnerability in
BlockProtInventorymenus (AdminTiersInventory,AdminTierSelectInventory) where clicks occurred without an activeInventoryStateor 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.errorand informing players of internal failures. - Fixed
InventoryDragEventonBlockProtInventoryto unconditionally cancel item dragging into custom interfaces. - Fixed premature menu close on "set by name" offline player action in
AdminTiersInventory, ensuringsuppressCloseReopenis set before triggering chat input. - Fixed
/bp debug runscreen coverage failures ([9g. Class coverage]) by registering and exercisingAdminTiersInventory,AdminTierSelectInventory,AdminTiersDialog,AdminTierSelectDialog,FriendDetailDialog, andWorldExpiryDialogin debug test suites. - Fixed
BlockProtLoggerthrowingAssertionErrorduring headless test execution when callingBlockProt.getInstance()by utilizing safe accessorgetInstanceOrNull()and falling back to standard logger. - Fixed menu navigation origins and origin stack propagation when selecting players in
AdminTierSelectInventoryandAdminTiersInventory, ensuring back button clicks return to the correct originating parent menu. - Fixed top-level command execution of
/bp tiers guidisplaying a back button by detectingMenuOrigin.NONEand rendering a barrier "Close" item that closes the inventory cleanly. - Fixed
UpdateCommand,AboutCommand, andTiersCommandopening dialogs with incorrect parent origins when executed from chat, passing explicitDialogOrigin.NONE. - Fixed
AdminMenuDialogopeningAboutDialogwithDialogOrigin.NONEinstead ofDialogOrigin.ADMIN_MENU, restoring proper return flow to the admin menu. - Fixed dialog transition in
UserSettingsInventorywhen togglingpreferDialogs, correctly propagating parent origin. - Fixed
/bp debug runrestricting 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
InventoryStatetest 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 clickorBPR:main(add): Introduce protectable entities configuration in blocks.yml). BPRidentifies the BlockProt Reloaded project.:<branch>denotes the targeted repository branch (:mainor future branches).(<type>)categorizes the modification (fix,add,refactor,docs,chore).- Enforces linear history discipline, clarity, and verifiable compliance with repository standards.
- Required format:
- 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.propertiesand 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 fromgradle.propertiesand 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.ymlas 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.
Platforms
Paper
1.20.5–26.3