
AbyssalLib
a plugin library for making development and integration way easier
Список изменений
Changelog
Features & Additions
- 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 inpaper-plugin.yml. - Dynamic Translations: Added
ItemTranslationProviderandServerTranslatorglobal 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
locatecommand for structures, which works exclusively in newly generated chunks. - Dynamic Statistics: Added dynamically generated tracking for
entities_killed,blocks_mined, anditems_craftedbased on namespace and ID.
Changes & Improvements
- Asynchronous Item Ticking & GUI Performance:
ItemTickernow runs asynchronously. Additionally,GuiManagernow creates a ticker specifically for GUIs with atickIntervalgreater 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
StructureBlocksize limit to 1028 for X/Y/Z coordinates. - GUI Engine Overhaul: Reworked
ItemMenuto utilizeItemCategorysystems, 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
NbtOpscodecs 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
TranslationLoaderoverriding 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
PacketTranslatorbreaking 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
EnergyConductorfor cable-type nodes with simulation mode for insert/extract. Transfers now depend onBlockFace. Custom blocks must manually handleEnergyNetworkregistration/unregistration. -
Library Migrations: Moved away from
ItemBridge,BlockBridge, andIdentifier. UseBlockInfoand AdventureKeyinstead. Direct support for Nexo and ItemsAdder has been removed. -
GUI API Adjustments: Added
GuiClickContextandGuiDragContextas overrides, replacing the oldonDragandonClick. 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 (
ListedLayersandPaginatedElementsare replaced byLayerStackandPagedLayer). - Removed
BlockPileFeature,CaveVineFeature, andRandomPatchFeature. - Removed
DamageType.Registrar(useDamageType#registerinPluginBootstrap).
Note for devs using particle API; if you spawn a HUGE amount of particles, consider using ItemDisplayRenderer instead as the client wont have to receive a ton of packets (tested with 2500 item displays, client and server performance was good, however particles cause client to disconnect on same configuration)
