AbyssalLib icon

AbyssalLib -----

A plugin library for GUIs, Items, Blocks, Advancements and much more.




New:
  • ResourcePackCompileEvent so plugins can hook into other plugins packs.
Changes:
  • ItemPredicate partially matches minecraft:custom_data instead of a 1:1 comparison.
----------, May 14, 2026

Changes:
  • ItemAttributeModifers codec is now flipped to fix serialization.
----------, May 13, 2026

New:
  • Command to send toasts (/abyssallib toast <players> <held|custom> <frame> <title> [subtitle] [item_stack]).
  • Command to serialize held item, looked at block or looked at entity.
  • EnumArgument and NbtCompoundArgument for brigadier.
  • Scheduler API (Realtime, Bukkit and Folia)
  • Cooldown API.
Changes:
  • give command now takes player(s) as the first argument.
  • permission gui command can now take player as optional target.
----------, May 13, 2026

New:
  • ClientItemModifier for client-only item modifications, registered by ItemPacketModifier.registerModifier
  • Client-only changes are now applied to cursor items too
----------, May 7, 2026

## **Fix:**
- Vanilla components are now serialized under minecraft namespace, old serialized items can be ported by replacing the namespace of component ids
----------, May 6, 2026

Fix:
  • ConsumeEffect codecs have been fixed (fixes serialization of Deathprotect and Consume components)
----------, May 6, 2026

Fixes:
  • DeathProtect and EnchantableComponent no longer cause error spam
  • ComponentMap now loads vanilla components properly
----------, May 6, 2026

Changes:
  • Attribute API is now 1:1 with the minecraft Attribute system
----------, May 5, 2026

Changes:
  • resourcepack host is now enabled by default
Fixes:
  • No longer causes errors when using Codec.map or similar with Config API
----------, May 4, 2026

Fixes:
  • No longer overwrites player inv when using permission gui
----------, Apr 22, 2026

Fixed:
  • Jitpack now uses JDK 25
----------, Apr 18, 2026

New:
  • Updated to 26.1.2
  • added Dye component
  • added new special model types to RP API to match 26.1
Changes:
  • updated existing special models in RP API to match new changes of 26.1
  • Standard and Dust particle renderer no longer use packet based rendering as that didnt affect them much.
  • CustomBlock now validates if the block material is the correct custom block material, if not it removes the custom block
  • AbstractPropertyEntity now uses reflection API
----------, Apr 18, 2026

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 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).

----------, Apr 17, 2026

New:
  • Structure API along with ingame Structure Block for saving/loading ingame
  • Worldgen API for generating features with json config support (default has ore, geode, spring and structure and more)
  • Color API for Color conversions, creation, and more
  • ItemPredicate for weak stack checks
  • Transaction and Batch query support for Database
  • MySQL implementation for Database
  • A few other useful methods for queries and batch queries
  • From-scratch Energy API with EnergyUnit support and builtin Energy Network
  • Loot table API rewritten to be datadriven, can also be now used to replace or merge with vanilla tables
  • More hooks for CustomBlock, and more properties for it
  • Almost all loaders can now be used to load relevant object from jar or a folder
Changes:
  • Particle API now uses ColorProvider instead of Gradient
  • Tag API now uses ItemPredicate, and has overall been rewritten
  • DataComponent uses Type instead of ID, this also removes all reflection related to data component API (thus making it faster than before)
  • CustomBlock#place no longer resets placed blocks state (this also means if calling via API, the vanilla block should be placed before calling CustomBlock#place)
  • Try utility has been entirely rewritten, any usages must update to new format
  • insert() no longer refers to INSERT_OR_REPLACE, use new replace() chain
  • All database operations (player statistics, block manager etc) now use optimized db calls (transactions, batch calls, async calls)
Removal:
  • Gradient has been removed (replaced by ColorProvider)
  • Removed Deprecated Energy and Particle API
  • CustomRecipe class
  • RECIPE_CHOICES and RECIPE_TYPES registries
----------, Jan 29, 2026

New:
  • Rewritten from-scratch Particle API.
  • Timeline API for animating particles (optional, particles can be animated directly in generator or in your own transformers)
  • Merge PR #2 , Adding Player-aware tooltips and slot validation for Item#onClickInInventory (by @ynovka)
  • CTag#set(String, CTag) and CTag#getCompound(String) for setting compound tags
Changes:
  • Old particle API is marked for removal
  • renamed Item#getRawStack() -> Item#getStack() (#2)
Removal:
  • CustomRecipe class
  • RECIPE_CHOICES and RECIPE_TYPES registries
  • Removed Item#getStack()
----------, Dec 28, 2025

## **Fix:**
- Kotlin classes no longer cause errors when used
----------, Dec 25, 2025

Fix:
  • Item#onInventoryClick fires for hotbar swapped items now
  • Plugin Hooks now properly load
----------, Dec 23, 2025

New:
  • Command /abyssallib reload pack which resends all packs (including external packs)
  • Config#value method that takes in a Codec for serializing values.
  • PacketEvent#setPacket so that the packet may be modified in Recieve/Send events
  • Experimental entity natural spawning system for custom entities.
  • external_packs: list in config to allow sending packs other than ones registered using ResourcePack#register
  • InventoryClickType (Bukkit ClickType duplicate) to avoid conflict with ClickType
  • Item#onClickInInventory and Item#onInventoryTick (tick is untested and may be removed if performance is impacted too much)
  • ItemBridge and BlockBridge have been vastly improved.

Changes:
  • ItemStack Codec no longer forces YAML format for `data:` section.
  • Most save/remove DB operations are now Async (should improve performance)
  • All permissions have been changed to more standard ones and should now appear in LuckPerms web editor properly
Code (Text):
abyssallib.admin.give -> abyssallib.items.give
abyssallib.admin.attribute -> abyssallib.attribute.get
abyssallib.admin.summon -> abyssallib.entity.summon
abyssallib.player.statistic_self -> abyssallib.statistics.view.self
abyssallib.player.statistic_all -> abyssallib.statistics.view.all
abyssallib.player.statistic_self.menu -> abyssallib.statistics.menu.self
abyssallib.player.statistic_all.menu -> abyssallib.statistics.menu.all
abyssallib.admin.reload -> abyssallib.reload
abyssallib.content.items.view (new)
----------, Dec 22, 2025

New:
  • Network based Energy system in favor of isolated energy system
  • EnergyNetworkTransferEvent, EnergyNodeChangeEvent, EnergyNodeAddEvent, EnergyNodeRemoveEvent for new Energy API
  • ItemEnergyNode datacomponent for custom items that supports holding any EnergyNode
Changes:
  • Multiblock API completely overhauled and is now ready for use (docs soon)
  • Old Energy API completely marked as Deprecated for removal
----------, Dec 12, 2025

New:
  • ItemsAdder items can now be used in recipes and tags (ia:namespace:id), (Blocks for tags too)
  • Either<A, B> (kinda just DFU version) aswell as Codec<Either<A, B>> type has been added (Codec.either)
  • OneOf codec for allowing attempt of many codecs (next-if-previous-failed) (Codec.oneOf)
  • Item Definitions inside recipes and tags now support data component modifications (e.g
  • Code (YAML):
     id : minecraft:stick
    [*]    amount
    : 2
    [*]    data
    :
    [*]      minecraft:unbreakable
    : ""
    [*]      minecraft:max_stack_size
    : 2
    check out docs for the format of each component). this also makes it cleaner (as before items wwith amount were defined as {"item:id", amount}).
Changes:
  • Codec.either -> Codec.fallback
  • EitherCodec -> FallbackCodec
Fix:
  • Codec#list/collection now works as intended on FallbackCodec
----------, Dec 11, 2025

FIxes:
  • Only one BlockEntity ticking after chunk is reloaded (or server restarts)
----------, Dec 1, 2025

New:
- ListedLayers#reset() and PaginatedElements#reset() [Useful if layer hasn't been added to GUI and is being handled by another layer]
- Item#onSwapHand, Item#onSlotChange, Item#onDrop, Item#onPickup ( #1)

Changes:
- Item#onUse now has a third argument ClickType showing what type of click it was (left/right) ( #1)

Fixes:
- BlockInteractionEvent#getInteractionPoint is now Nullable
----------, Nov 30, 2025

New:
  • Selector.Select type has been added (Component select has NOT been added yet)
  • BukkitBlockExtensions with (currently) 1 method, Block#getPDC, this calls BlockPersistentData.get(Block)
[HR][/HR]
Fixes:
  • Blocks properly load now.
  • Selector.Select json output is now ordered
  • Block/Entity/Multiblock databases no longer duplicate content
  • BlockEntity superclass Property<>(s) also get saved now
  • Blocks now get properly removed from database
[HR][/HR]
Removal:
  • (none)
----------, Nov 27, 2025

Fixes:
  • Blocks properly get saved
  • BlockEntity no longer gets overwritten on new block placement

Additionally, I apologize for not including -mcx.x.x in previous 2 version
----------, Nov 25, 2025

Fixes:
  • Default plugin_icon is no longer a missing texture (no resourcepack reset needed)
  • BlockInteractionEvent is now called and handled correctly
  • Plugin Icon items no longer show in give cmd and Item Menu
Removal:
  • CustomRecipe#getCodec (had no real use)
----------, Nov 24, 2025

From now on AbyssalLib will receive smaller updates as well as dev versions (dev only on GitHub)
For Developers: you should now add a lang key `plugin.<plugin_id>` so that you can show a proper name inside ItemMenu (default is plugin_id). Optionally, also add an icon.
New:
  • Statistics Menu, and Item Menu for viewing said content (view permissions in docs)
  • Namespace#icon for specifying the plugin icon to show in /abyssallib content items (textures/items/icon.png)
  • EntitySpawner component for items that spawn custom entities
  • Statistics API for adding custom Statistics to players
  • Command now supports aliases
  • Codecs for all DataComponents
  • Codec#collection and Codec#collection(collectionConstructor) (e.g. codec.collection(HashSet::new))
  • Entity now supports DataComponent (not Vanilla ones, only custom)
  • EnergyContainer component (wrapper for SimpleEnergyContainer)
  • A lot of new codecs in ExtraCodecs and Codecs
  • oversizedInGui field for ItemDefinition
  • Kotlin player and entity extensions for various methods
  • Kotlin GuiBuilder, DamageTypeBuilder, ParticlesBuilder, LootTableBuilder, LootPoolBuilder, RecordCodec
  • Model now includes guiLight, textureSize, ambientOcclusion
  • Model.Element now includes shade and lightEmission
  • Added byte[] data Overloads for all assets (cannot edit them via code afterward)
  • ResourcePack#unregister (does nothing under RSPM; reload RSPM instead)
Changes:
  • Add back many constructors to DataComponents to fix component loading
  • BlockEntity now only serializes variables of type Property<>
  • BlockManager no longer uses TextUtil.GSON for serialization/deserialization
  • AttributeModifier → ItemAttributeModifier
  • Many constructors with easier-to-use versions for DataComponents
  • DataComponent constructor now accepts subclass Codecs (Codec<ToolComponent> instead of Codec<DataComponent<Tool>>)
  • Entity Loading is now fixed
  • Codec<Component> (TEXT_COMPONENT in Codecs) now uses MiniMessage for serializing/deserializing
Fixes:
  • ItemBridge properly loads items now (also fixes ITEM_STACK codec)
  • Registry no longer crashes plugin if a duplicate ID is registered (it skips instead)
  • Item Components randomly not applying
  • Typo in ItemModel which caused it to replace ItemName
  • Possibly fix Entity Spawning
Removal:
  • Logging from SimpleEnergyContainer
  • WorldMeta
----------, Nov 23, 2025

New:
  • Experimental Multiblock API
  • PaginatedElements#getPage to get current page
  • Experimental Energy API
  • Config class as a wrapper to YamlConfiguration
  • Rewritten Item api (mostly same, only getSettings() is no longer applicable)
  • Server owners can load recipes using yml files.
  • Codec API for serialization
  • ItemBridge for easily getting ItemStacks from different sources based on ID (used in Recipe loading)

Removal:
  • BlockInteractionEvent {buggy and redundant}
  • Annotation based Config API {Extremely fucked}
  • CustomBlockBreak {very buggy, and not useful}
  • ToolType and ToolTier {may or may not be temporary}
  • MySQL impl of Database API {impl wasnt good}

Changes:
  • Full rewrite of Particles, Shape, Shapes and AnimatedShapes
  • EventBus.post is now a static method
  • Classes from /world/level/ moved to /world/ (some more classes were also moved to common/)
  • Block.java -> CustomBlock.java to resolve name conflict

Fixes:
  • Gui no longer opens if player is sleeping or in a portal
----------, Sep 16, 2025

New:
  • Equipment .json loading/creating
  • Blockstate .json loading/creating
  • PostEffect .json loading/creating
  • WaypointStyle loading/creating
  • Updated to RSPM 1.5.0

Changes:
  • No longer delays resourcepack generation/registration.

Fixed:
  • McMeta files being created in root of resourcepack
----------, Jul 27, 2025

New:
  • McMeta, PackMcMeta and Pack icon support in ResourcePack/Namespace
----------, Jul 27, 2025

Changes:
  • BlockManager now only ticks BlockEntities of loaded chunks (should improve performance)
  • registerTypeAdapter seperate into itself and registerTypeHierarchyAdapter in BlockManager.

Fixes:
  • Error when breaking block
  • All Blocks sharing same BlockEntity
  • Blocks not being removed

* I apologize for messing up versioning, previous version was meant to be 1.4.0
----------, Jul 26, 2025

New:
  • Update to 1.21.7
  • BlockBrokenEvent contains fortune level of item and can be used to interrupt drops and handle them manually
  • Item(s) can be made to place Block(s) using getSettings().blockItem(Block) now
  • Newconfig api! (old one is in .legacy package)
  • New gui api (no javadocs yet)

Fixed:
  • ItemTag#contains
  • BlockTag#contains
  • BlockManager loads blocks properly
  • TextOffset not working properly

Changes:
  • Removed RecipeAPI (broken)
  • Item#data changed to #setData and #getData
  • GuiManager methods are now static
  • ChatInputHandler methods are now static
----------, Jul 22, 2025

Fixes:
  • Blocks not being saved
  • EntityAttributes db file not being created
  • Entity db file not being created
  • Packets causing players to disconnect
  • TextOffset not working
  • Bitmaps not loading properly
----------, Jul 3, 2025

New:
  • Block(Identifier, Material) constructor

Changes:
  • PlayerAttributes renamed to EntityAttributes (can store attributes for any entity now)

Fix:
  • Static getHandlerList in all custom events
----------, Jul 2, 2025

New:
  • Config option
    Code (YAML):
    `features.custom_block_breaking`
    to disable/enable the block hardness mechanic (default false as visuals are buggy)
  • AttributeModifier and AttributeOperation for PlayerAttribute API (modifiers are unloaded upon restart, they must be manually added back)
  • Font#glyph has been readded

Changes:
  • Packet API now provides PacketReceiveEvent and PacketSendEvent
  • PlayerData renamed to PlayerAttribute (now only supports Number (int, float, byte, etc))
----------, Jun 28, 2025

Changes:
  • Item and Block API have been rewritten in alot of parts.
  • Config API has been moved to .legacy in favor of possibly new API
  • ResourceLocation is now Identifier and made using Identifier#of
  • ResourcePack API has been rewritten from scratch

New:
  • BaseMap which can be extended to make your own maps
  • BlockEntity (for Block ticking and data)
  • ParticleEmitter for dynamic particle source
  • ItemDisplay capabilities to particle API
  • PlayerData and Attribute API
  • DamageType API (not tested, requires BootStrap)
  • WorldMeta class for easy use of world PDC
  • DataPack class for loading datapacks from within plugin (requires bootstrap)
  • BlockProperties which allow setting custom hardness, allowing fortune/requiring silktouch for blocks (will be expanded).
  • Custom block break handling (has visual bugs)
  • Experimental entity api (no loot table/ event hooks in-class, need to be handled in respective events for now)
  • ItemType and ItemTier
  • Experimental packet api
  • TTF, bitmap char arrays, unihex and space provider support for Font class
  • TextOffset class for easily getting any offset (gui position etc)
  • keepAlive to MySQL database

Removed:
  • BlockData removed in favor of BlockEntity
  • Builtin RecipeViewer and Recipe serialization removed in favor of WIP separate plugin.
----------, Jun 27, 2025

Changes:
  • Rewrote GUI API to support multi-player inventories (docs will be updated soon)
Fixed:
  • GUI still ticking after closing
----------, May 21, 2025

New:
  • Middle Click now picks the blocks item (if it exists) instead of the vanilla item
Changes:
  • Rewrote Item class (for devs):
    • There is NO change in how you register the item or create them, but now, instead of passing the Item as an ItemStack, you must call Item#stack() instead
    • Item no longer extends ItemStack
----------, May 19, 2025

New:
  • ResourcePackDeleteEvent and ResourcePackGenerateEvent
  • Added EventBus#post(Event) for calling events (overlay for bukkits method)
  • Added a static instance of EventBus in AbyssalLib class, can be used if you dont want to make your own instance
Changes:
  • You need to call GlyphWriter#writeAll(modid) to generate the glyphs into the pack properly now, this MUST be done BEFORE ResourcePack#generate()
Docs will be updated shortly to reflect these changes
----------, May 18, 2025

Changes:
  • Rewrote Particle API
----------, May 17, 2025

Added PlayerEnterWaterEvent and PlayerExitWaterEvent
----------, May 17, 2025

Changes:
  • Rewrote LootTable API
  • Rewrote ConfigSpec
  • Rewrote Block API (BlockItem related)
  • Rewrote Tag API
----------, May 16, 2025

Added Database api
Added Particle API - Beta
----------, May 12, 2025

Fixed Class not found
Reworked Contexts to be more consistent
Reworked GUI system to use MenuType, docs are being updated
added JavaDocs! (most classes are covered)

Glyps will be reworked next!!
----------, May 11, 2025

Resource Information
Author:
----------
Total Downloads: 793
First Release: May 4, 2025
Last Update: May 14, 2026
Category: ---------------
All-Time Rating:
1 ratings
Find more info at darksoulq.github.io...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings