Permissions System: Added a Permission API with an in-game GUI and Web Editor (with domain support). Includes custom permission checks (Player#hasPerm) and removes the need for permissions in paper-plugin.yml.
Dynamic Translations: Added ItemTranslationProvider and ServerTranslator global providers/resolvers, allowing developers to add dynamic translations without PlaceholderAPI.
Resource Pack Loading: Implemented configuration phase sending for resource packs.
New Asset Types: Added support for Atlas, BBModelLoader, and Core Shader assets.
Loot Commands: Added a command to set custom loot tables on any container (loot generates upon interaction). Added custom loot table support directly to entities.
Locate Command: Added a locate command for structures, which works exclusively in newly generated chunks.
Dynamic Statistics: Added dynamically generated tracking for entities_killed, blocks_mined, and items_crafted based on namespace and ID.
Changes & Improvements
Asynchronous Item Ticking & GUI Performance:ItemTicker now runs asynchronously. Additionally, GuiManager now creates a ticker specifically for GUIs with a tickInterval greater than 0 (default is 1), improving overall server performance.
Structure Optimization: Improved structure placement performance by ~75% and reduced structure file sizes by ~95%. Increased the StructureBlock size limit to 1028 for X/Y/Z coordinates.
GUI Engine Overhaul: Reworked ItemMenu to utilize ItemCategory systems, allowing categorized item displays (a default category is generated if none is specified by a plugin). Missing plugin icons now default to an apple placeholder.
Particle Performance: Improved the performance of default particle renderers.
Component Handling: Component Maps and custom components now use NbtOps codecs to properly maintain data types natively.
Fixes
Worldgen & Structures: Fixed structure rotation failing to rotate by the origin anchor. Fixed an issue where worldgen would fail for structures extending beyond a 3x3 chunk region. Fixed structure placement not working with processors.
MiniMessage Parsing: Fixed MiniMessage text parsing for Server-Side Rendering (SSR), chat packets (including disguised packets), boss-bars, objectives, and dialogs.
Translation Overrides: Fixed TranslationLoader overriding previously loaded locale files, and fixed a bug where failed translation strings were replaced by their raw keys instead of parsing correctly.
Packet Translation: Fixed PacketTranslator breaking items server-side, allowing custom items to function correctly in recipes.
Block State Adapters: Fixed and added adapters for Nameable, Container, InventoryHolder, Lootable, Lockable, Leaves, and Bed (part/occupied) tile states.
API & Developer Notes
Dependencies: Updated to Kotlin 2.1.0, added kotlinx.coroutines, and added Kotlin API for config and database.
Database Loader: Added a universal Database API and Loader via Config, supporting MariaDB, MongoDB, Redis, PostgreSQL, and H2.
New APIs: Added Scoreboard API, Economy API (requires plugin implementation, not Vault compatible), Advancement & Toast API, and Placeholder API with defaults.
Kotlin DSLs: Added Kotlin DSLs for Blocks and Block Entities (similar to the Item DSL).
Energy Conductor Nodes: Added EnergyConductor for cable-type nodes with simulation mode for insert/extract. Transfers now depend on BlockFace. Custom blocks must manually handle EnergyNetwork registration/unregistration.
Library Migrations: Moved away from ItemBridge, BlockBridge, and Identifier. Use BlockInfo and Adventure Key instead. Direct support for Nexo and ItemsAdder has been removed.
GUI API Adjustments: Added GuiClickContext and GuiDragContext as overrides, replacing the old onDrag and onClick. Added new builder utilities (fill, fillBorder, structure) and new UI layers (ScrollLayer, StateCycleElement, ToggleElement, ProgressBarLayer).
Javadocs: Added extensive Javadoc coverage across the library, linking to PaperMC and Adventure APIs.
Removals & Deprecations:
Deleted the Multiblock API.
Removed deprecated GUI implementations (ListedLayers and PaginatedElements are replaced by LayerStack and PagedLayer).
Removed BlockPileFeature, CaveVineFeature, and RandomPatchFeature.
Removed DamageType.Registrar (use DamageType#register in PluginBootstrap).