AbyssalLib
2.5.0-mc.26.3-alpha.9A plugin library for GUIs, Items, Blocks, Advancements and much more.
2.5.0-mc.26.3-alpha.9latestVersion 2.5.0-mc.26.3-alpha.9last week Custom Attribute and Entity systems no longer use databases. Make sure to delete
entity_data.dbandentities.db.New:
- Rewritten From-Scratch Entity API -SkinCache#delete(UUID)- Built-in FreeMinecraftModels support forCustomEntityChanges:
- Natural Entity Spawning has been EXTREMELY optimized and actually works now (will be default-enabled once this version leaves alpha stage) -Attribute→CustomAttribute,AttributeInstance→CustomAttributeInstance,AttributeModifier→CustomAttributeModifierJavadocs have temporarily been removed from the
CustomEntityandCustomAttributeAPIs.2.5.0-mc.26.2-alpha.9Version 2.5.0-mc.26.2-alpha.9last week Custom Attribute and Entity systems no longer use databases. Make sure to delete
entity_data.dbandentities.db.New:
- Rewritten From-Scratch Entity API -SkinCache#delete(UUID)- Built-in FreeMinecraftModels support forCustomEntityChanges:
- Natural Entity Spawning has been EXTREMELY optimized and actually works now (will be default-enabled once this version leaves alpha stage) -Attribute→CustomAttribute,AttributeInstance→CustomAttributeInstance,AttributeModifier→CustomAttributeModifierJavadocs have temporarily been removed from the
CustomEntityandCustomAttributeAPIs.2.5.0-mc.26.1.2-alpha.9Version 2.5.0-mc.26.1.2-alpha.9last week Custom Attribute and Entity systems no longer use databases. Make sure to delete
entity_data.dbandentities.db.New:
- Rewritten From-Scratch Entity API -SkinCache#delete(UUID)- Built-in FreeMinecraftModels support forCustomEntityChanges:
- Natural Entity Spawning has been EXTREMELY optimized and actually works now (will be default-enabled once this version leaves alpha stage) -Attribute→CustomAttribute,AttributeInstance→CustomAttributeInstance,AttributeModifier→CustomAttributeModifierJavadocs have temporarily been removed from the
CustomEntityandCustomAttributeAPIs.2.5.0-mc.1.21.11-alpha.9Version 2.5.0-mc.1.21.11-alpha.9last week Custom Attribute and Entity systems no longer use databases. Make sure to delete
entity_data.dbandentities.db.New:
- Rewritten From-Scratch Entity API -SkinCache#delete(UUID)- Built-in FreeMinecraftModels support forCustomEntityChanges:
- Natural Entity Spawning has been EXTREMELY optimized and actually works now (will be default-enabled once this version leaves alpha stage) -Attribute→CustomAttribute,AttributeInstance→CustomAttributeInstance,AttributeModifier→CustomAttributeModifierJavadocs have temporarily been removed from the
CustomEntityandCustomAttributeAPIs.2.5.0-mc.26.3-alpha.8Version 2.5.0-mc.26.3-alpha.8last week Changes:
- The plugins config has comments again - Config API is now more optimized - Config API properly handles order of values2.5.0-mc.26.2-alpha.8Version 2.5.0-mc.26.2-alpha.8last week Changes:
- The plugins config has comments again - Config API is now more optimized - Config API properly handles order of values2.5.0-mc.26.1.2-alpha.8Version 2.5.0-mc.26.1.2-alpha.8last week Changes:
- The plugins config has comments again - Config API is now more optimized - Config API properly handles order of values2.5.0-mc.1.21.11-alpha.8Version 2.5.0-mc.1.21.11-alpha.8last week Changes:
- The plugins config has comments again - Config API is now more optimized - Config API properly handles order of values2.5.0-mc.26.3-alpha.7Version 2.5.0-mc.26.3-alpha.72 weeks ago New:
-ResourcePack#scanto automatically load existing files from resources/resourcepack/ -OfflinePlayerData#fetchSkin[Sync|Async]to load the profiles skinChanges:
-OfflinePlayerDatano longer auto fetchs the skin of the profileRemoval:
- FakePlayer is now removedNote about OfflinePlayerData skins:
it uses a Skin Cache system, which:
updates cached skin when player joins.
invalidates cached skin after 1 day from last update and tries to re-fetch it. (from mojang session server)
can skip the fetching entirely by passing true in the skipSessionServer argument.
2.5.0-mc.26.2-alpha.7Version 2.5.0-mc.26.2-alpha.72 weeks ago New:
-ResourcePack#scanto automatically load existing files from resources/resourcepack/ -OfflinePlayerData#fetchSkin[Sync|Async]to load the profiles skinChanges:
-OfflinePlayerDatano longer auto fetchs the skin of the profileRemoval:
- FakePlayer is now removedNote about OfflinePlayerData skins:
it uses a Skin Cache system, which:
updates cached skin when player joins.
invalidates cached skin after 1 day from last update and tries to re-fetch it. (from mojang session server)
can skip the fetching entirely by passing true in the skipSessionServer argument.
2.5.0-mc.26.1.2-alpha.7Version 2.5.0-mc.26.1.2-alpha.72 weeks ago New:
-ResourcePack#scanto automatically load existing files from resources/resourcepack/ -OfflinePlayerData#fetchSkin[Sync|Async]to load the profiles skinChanges:
-OfflinePlayerDatano longer auto fetchs the skin of the profileRemoval:
- FakePlayer is now removedNote about OfflinePlayerData skins:
it uses a Skin Cache system, which:
updates cached skin when player joins.
invalidates cached skin after 1 day from last update and tries to re-fetch it. (from mojang session server)
can skip the fetching entirely by passing true in the skipSessionServer argument.
2.5.0-mc.1.21.11-alpha.7Version 2.5.0-mc.1.21.11-alpha.72 weeks ago New:
-ResourcePack#scanto automatically load existing files from resources/resourcepack/ -OfflinePlayerData#fetchSkin[Sync|Async]to load the profiles skinChanges:
-OfflinePlayerDatano longer auto fetchs the skin of the profileRemoval:
- FakePlayer is now removedNote about OfflinePlayerData skins:
it uses a Skin Cache system, which:
updates cached skin when player joins.
invalidates cached skin after 1 day from last update and tries to re-fetch it. (from mojang session server)
can skip the fetching entirely by passing true in the skipSessionServer argument.
2.5.0-mc.26.3-alpha.6Version 2.5.0-mc.26.3-alpha.63 weeks ago New:
-BlockManagernow hasreindexChunks,removeByIdandunloadById(aswell asByNamespacevariants),unloadByIdis automatically called if you callDeferredRegistry#unload(this is useful for Plugman compatibility to some extent, callreindexChunksat end of your onEnable if you need plugman compatibility)Changes:
- Block system has been optimized to be capable of handling WAY more loaded blocks, and save times should become lower as unchanged blocks will no longer be saved2.5.0-mc.26.2-alpha.6Version 2.5.0-mc.26.2-alpha.63 weeks ago New:
-BlockManagernow hasreindexChunks,removeByIdandunloadById(aswell asByNamespacevariants),unloadByIdis automatically called if you callDeferredRegistry#unload(this is useful for Plugman compatibility to some extent, callreindexChunksat end of your onEnable if you need plugman compatibility)Changes:
- Block system has been optimized to be capable of handling WAY more loaded blocks, and save times should become lower as unchanged blocks will no longer be saved2.5.0-mc.26.1.2-alpha.6Version 2.5.0-mc.26.1.2-alpha.63 weeks ago New:
-BlockManagernow hasreindexChunks,removeByIdandunloadById(aswell asByNamespacevariants),unloadByIdis automatically called if you callDeferredRegistry#unload(this is useful for Plugman compatibility to some extent, callreindexChunksat end of your onEnable if you need plugman compatibility)Changes:
- Block system has been optimized to be capable of handling WAY more loaded blocks, and save times should become lower as unchanged blocks will no longer be saved2.5.0-mc.1.21.11-alpha.6Version 2.5.0-mc.1.21.11-alpha.63 weeks ago New:
-BlockManagernow hasreindexChunks,removeByIdandunloadById(aswell asByNamespacevariants),unloadByIdis automatically called if you callDeferredRegistry#unload(this is useful for Plugman compatibility to some extent, callreindexChunksat end of your onEnable if you need plugman compatibility)Changes:
- Block system has been optimized to be capable of handling WAY more loaded blocks, and save times should become lower as unchanged blocks will no longer be saved2.5.0-mc.26.3-alpha.4Version 2.5.0-mc.26.3-alpha.43 weeks ago Changes:
- Marked FakePlayer for remova - ItemPredicate now has a vanillaMatching field which bypasses predicate check and uses isSimilar instead (REQUIRES id/material to be set)2.5.0-mc.26.2-alpha.4Version 2.5.0-mc.26.2-alpha.43 weeks ago Changes:
- Marked FakePlayer for remova - ItemPredicate now has a vanillaMatching field which bypasses predicate check and uses isSimilar instead (REQUIRES id/material to be set)2.5.0-mc.26.1.2-alpha.4Version 2.5.0-mc.26.1.2-alpha.43 weeks ago Changes:
- Marked FakePlayer for remova - ItemPredicate now has a vanillaMatching field which bypasses predicate check and uses isSimilar instead (REQUIRES id/material to be set)2.5.0-mc.1.21.11-alpha.4Version 2.5.0-mc.1.21.11-alpha.43 weeks ago Changes:
- Marked FakePlayer for remova - ItemPredicate now has a vanillaMatching field which bypasses predicate check and uses isSimilar instead (REQUIRES id/material to be set)2.5.0-mc.26.3-alpha.3Version 2.5.0-mc.26.3-alpha.3Oct 3, 2026 New:
-isValidStateonCustomBlock, replaces hardcoded block material check so can be overriden for custom checks.2.5.0-mc.26.2-alpha.3Version 2.5.0-mc.26.2-alpha.3Oct 3, 2026 New:
-isValidStateonCustomBlock, replaces hardcoded block material check so can be overriden for custom checks.2.5.0-mc.26.1.2-alpha.3Version 2.5.0-mc.26.1.2-alpha.3Oct 3, 2026 New:
-isValidStateonCustomBlock, replaces hardcoded block material check so can be overriden for custom checks.2.5.0-mc.1.21.11-alpha.3Version 2.5.0-mc.1.21.11-alpha.3Oct 3, 2026 New:
-isValidStateonCustomBlock, replaces hardcoded block material check so can be overriden for custom checks.2.5.0-mc.26.3-alpha.2Version 2.5.0-mc.26.3-alpha.2Oct 1, 2026 New:
-onUnload(String, Object)andpostUnloadmethods onDeferredRegistryModifier. -DeferredRegistrycan now be unloaded at any time. -ModelParentsandDisplayPerspectivesclasses containing constants for aiding with RP creation. -BaseCommandcan now be unloaded inCommandBus.Fixes:
- Empty itemstacks are serialized/deserialized correctly now (Fixes Relique). - Multiple errors caused on systems using a language other than English.2.5.0-mc.26.2-alpha.2Version 2.5.0-mc.26.2-alpha.2Oct 1, 2026 New:
-onUnload(String, Object)andpostUnloadmethods onDeferredRegistryModifier. -DeferredRegistrycan now be unloaded at any time. -ModelParentsandDisplayPerspectivesclasses containing constants for aiding with RP creation. -BaseCommandcan now be unloaded inCommandBus.Fixes:
- Empty itemstacks are serialized/deserialized correctly now (Fixes Relique). - Multiple errors caused on systems using a language other than English.2.5.0-mc.26.1.2-alpha.2Version 2.5.0-mc.26.1.2-alpha.2Oct 1, 2026 New:
-onUnload(String, Object)andpostUnloadmethods onDeferredRegistryModifier. -DeferredRegistrycan now be unloaded at any time. -ModelParentsandDisplayPerspectivesclasses containing constants for aiding with RP creation. -BaseCommandcan now be unloaded inCommandBus.Fixes:
- Empty itemstacks are serialized/deserialized correctly now (Fixes Relique). - Multiple errors caused on systems using a language other than English.2.5.0-mc.1.21.11-alpha.2Version 2.5.0-mc.1.21.11-alpha.2Oct 1, 2026 New:
-onUnload(String, Object)andpostUnloadmethods onDeferredRegistryModifier. -DeferredRegistrycan now be unloaded at any time. -ModelParentsandDisplayPerspectivesclasses containing constants for aiding with RP creation. -BaseCommandcan now be unloaded inCommandBus.Fixes:
- Empty itemstacks are serialized/deserialized correctly now (Fixes Relique). - Multiple errors caused on systems using a language other than English.2.5.0-mc.26.3-alpha.1Version 2.5.0-mc.26.3-alpha.1Sep 24, 2026 New:
*FakePlayerReplaceEvent, fired when a player joins and theFakePlayeris despawned. *AttackAnimation,CushionColor,MobVisible,ProvidesPotteryPatterns,SignFrontText,SignBackText,VillagersFood,Waxeditem components.Changes:
*CustomPotionMixautomatically usesBrewingRecipeon 26.3+ * teleportRandomly now supportsdirectional_particlesfieldFixes:
* External Packs now work again. * Various Bugs onFakePlayer/OfflinePlayerDatathat causedFakePlayerto not spawn at all.2.5.0-mc.26.2-alpha.1Version 2.5.0-mc.26.2-alpha.1Sep 24, 2026 New:
*FakePlayerReplaceEvent, fired when a player joins and theFakePlayeris despawned. *AttackAnimation,CushionColor,MobVisible,ProvidesPotteryPatterns,SignFrontText,SignBackText,VillagersFood,Waxeditem components.Changes:
*CustomPotionMixautomatically usesBrewingRecipeon 26.3+ * teleportRandomly now supportsdirectional_particlesfieldFixes:
* External Packs now work again. * Various Bugs onFakePlayer/OfflinePlayerDatathat causedFakePlayerto not spawn at all.2.5.0-mc.26.1.2-alpha.1Version 2.5.0-mc.26.1.2-alpha.1Sep 24, 2026 New:
*FakePlayerReplaceEvent, fired when a player joins and theFakePlayeris despawned. *AttackAnimation,CushionColor,MobVisible,ProvidesPotteryPatterns,SignFrontText,SignBackText,VillagersFood,Waxeditem components.Changes:
*CustomPotionMixautomatically usesBrewingRecipeon 26.3+ * teleportRandomly now supportsdirectional_particlesfieldFixes:
* External Packs now work again. * Various Bugs onFakePlayer/OfflinePlayerDatathat causedFakePlayerto not spawn at all.2.5.0-mc.1.21.11-alpha.1Version 2.5.0-mc.1.21.11-alpha.1Sep 24, 2026 New:
*FakePlayerReplaceEvent, fired when a player joins and theFakePlayeris despawned. *AttackAnimation,CushionColor,MobVisible,ProvidesPotteryPatterns,SignFrontText,SignBackText,VillagersFood,Waxeditem components.Changes:
*CustomPotionMixautomatically usesBrewingRecipeon 26.3+ * teleportRandomly now supportsdirectional_particlesfieldFixes:
* External Packs now work again. * Various Bugs onFakePlayer/OfflinePlayerDatathat causedFakePlayerto not spawn at all.2.4.0-mc.26.2AbyssalLib 2.4.0-mc.26.2Sep 9, 2026 The API is now available on the Maven Central Repository.
New:
- Codec API now returnsDataResult, allowing errors to propagate and partial-success warnings to accumulate. - AddedCodec#encodeAsync/decodeAsync,Codec.dispatch,Codec.taggedUnion,Codec.tuple, and much more. -RecordCodecBuilder→RecordBuilder; it has also been rewritten. - AddedEncodeContext/DecodeContextto help simplify more complicated codecs. - Reflection API now covers more previously missed features. - Added Menu API, useful for custom containers and crafting UIs, with automatic item movement handling. - Added config options to toggle Item Server-Side Translation Ticking, Item Ticking, and the Energy Network, as well as an option to change the delay of server-side translation ticking. - Added newenable_custom_break_speedsandenable_natural_spawningconfig fields to thefeaturessection. - AddedTypedRegistry. - Added placeholders for permissions: -abyssallib:player_has_permission:<permission>— Checks whether the player has the permission (Boolean). -abyssallib:player_has_group:<group>— Checks whether the player belongs to a group (Boolean). -abyssallib:player_groups— Gets all groups the player is in (List of String). -abyssallib:player_group:<index>— Gets the player's group at a specific index in the sorted group list. -abyssallib:player_primary_group— Gets the player's group with the highest weight. This can be inconsistent if multiple groups have the same highest weight. - Added 2 JSON-specificMergeStrategys for replacing or inheriting from existing loot tables, allowing vanilla loot tables to be merged or replaced. - Added custom block breaking, utilizing the value ofBlockProperties#hardness. - AddedCustomToolcomponent, which behaves similarly to theToolcomponent but for custom blocks. - Addedcompressconfig option to the resource-pack section. Enabled by default; currently minifies all JSON, making it useful for packs with a lot of models. - AddedFakePlayerandOfflinePlayerDataAPIs for modifying players while they are offline and for using that data with fake players.Changes:
-RECIPESregistry is now typed, allowing recipes of a specific type to be retrieved usingRECIPES#getByType. - Reflection API is now safer. - UpdateChecker now accepts a String vararg of ignored identifiers (e.g..alpha,.beta, etc.). - Resource Pack Server has been optimized. -external-packsnow supports{"path": boolean}, allowing external packs to be exempted from compression. This is required if a pack is already compressed or encrypted.Fixes:
- Default (folder) recipe registration is now delayed by 10 ticks, giving other plugins time to register their items. - Fixed duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory updates. - PackServer will no longer duplicate packs for the client, as packs now use deterministic UUIDs.2.4.0-mc.26.1.2AbyssalLib 2.4.0-mc.26.1.2Sep 9, 2026 The API is now available on the Maven Central Repository.
New:
- Codec API now returnsDataResult, allowing errors to propagate and partial-success warnings to accumulate. - AddedCodec#encodeAsync/decodeAsync,Codec.dispatch,Codec.taggedUnion,Codec.tuple, and much more. -RecordCodecBuilder→RecordBuilder; it has also been rewritten. - AddedEncodeContext/DecodeContextto help simplify more complicated codecs. - Reflection API now covers more previously missed features. - Added Menu API, useful for custom containers and crafting UIs, with automatic item movement handling. - Added config options to toggle Item Server-Side Translation Ticking, Item Ticking, and the Energy Network, as well as an option to change the delay of server-side translation ticking. - Added newenable_custom_break_speedsandenable_natural_spawningconfig fields to thefeaturessection. - AddedTypedRegistry. - Added placeholders for permissions: -abyssallib:player_has_permission:<permission>— Checks whether the player has the permission (Boolean). -abyssallib:player_has_group:<group>— Checks whether the player belongs to a group (Boolean). -abyssallib:player_groups— Gets all groups the player is in (List of String). -abyssallib:player_group:<index>— Gets the player's group at a specific index in the sorted group list. -abyssallib:player_primary_group— Gets the player's group with the highest weight. This can be inconsistent if multiple groups have the same highest weight. - Added 2 JSON-specificMergeStrategys for replacing or inheriting from existing loot tables, allowing vanilla loot tables to be merged or replaced. - Added custom block breaking, utilizing the value ofBlockProperties#hardness. - AddedCustomToolcomponent, which behaves similarly to theToolcomponent but for custom blocks. - Addedcompressconfig option to the resource-pack section. Enabled by default; currently minifies all JSON, making it useful for packs with a lot of models. - AddedFakePlayerandOfflinePlayerDataAPIs for modifying players while they are offline and for using that data with fake players.Changes:
-RECIPESregistry is now typed, allowing recipes of a specific type to be retrieved usingRECIPES#getByType. - Reflection API is now safer. - UpdateChecker now accepts a String vararg of ignored identifiers (e.g..alpha,.beta, etc.). - Resource Pack Server has been optimized. -external-packsnow supports{"path": boolean}, allowing external packs to be exempted from compression. This is required if a pack is already compressed or encrypted.Fixes:
- Default (folder) recipe registration is now delayed by 10 ticks, giving other plugins time to register their items. - Fixed duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory updates. - PackServer will no longer duplicate packs for the client, as packs now use deterministic UUIDs.2.4.0-mc.1.21.11AbyssalLib 2.4.0-mc.1.21.11Sep 9, 2026 The API is now available on the Maven Central Repository.
New:
- Codec API now returnsDataResult, allowing errors to propagate and partial-success warnings to accumulate. - AddedCodec#encodeAsync/decodeAsync,Codec.dispatch,Codec.taggedUnion,Codec.tuple, and much more. -RecordCodecBuilder→RecordBuilder; it has also been rewritten. - AddedEncodeContext/DecodeContextto help simplify more complicated codecs. - Reflection API now covers more previously missed features. - Added Menu API, useful for custom containers and crafting UIs, with automatic item movement handling. - Added config options to toggle Item Server-Side Translation Ticking, Item Ticking, and the Energy Network, as well as an option to change the delay of server-side translation ticking. - Added newenable_custom_break_speedsandenable_natural_spawningconfig fields to thefeaturessection. - AddedTypedRegistry. - Added placeholders for permissions: -abyssallib:player_has_permission:<permission>— Checks whether the player has the permission (Boolean). -abyssallib:player_has_group:<group>— Checks whether the player belongs to a group (Boolean). -abyssallib:player_groups— Gets all groups the player is in (List of String). -abyssallib:player_group:<index>— Gets the player's group at a specific index in the sorted group list. -abyssallib:player_primary_group— Gets the player's group with the highest weight. This can be inconsistent if multiple groups have the same highest weight. - Added 2 JSON-specificMergeStrategys for replacing or inheriting from existing loot tables, allowing vanilla loot tables to be merged or replaced. - Added custom block breaking, utilizing the value ofBlockProperties#hardness. - AddedCustomToolcomponent, which behaves similarly to theToolcomponent but for custom blocks. - Addedcompressconfig option to the resource-pack section. Enabled by default; currently minifies all JSON, making it useful for packs with a lot of models. - AddedFakePlayerandOfflinePlayerDataAPIs for modifying players while they are offline and for using that data with fake players.Changes:
-RECIPESregistry is now typed, allowing recipes of a specific type to be retrieved usingRECIPES#getByType. - Reflection API is now safer. - UpdateChecker now accepts a String vararg of ignored identifiers (e.g..alpha,.beta, etc.). - Resource Pack Server has been optimized. -external-packsnow supports{"path": boolean}, allowing external packs to be exempted from compression. This is required if a pack is already compressed or encrypted.Fixes:
- Default (folder) recipe registration is now delayed by 10 ticks, giving other plugins time to register their items. - Fixed duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory updates. - PackServer will no longer duplicate packs for the client, as packs now use deterministic UUIDs.2.4.0-mc.26.2-alpha.6AbyssalLib 2.4.0-mc.26.2-alpha.6Sep 9, 2026 New:
- Custom block breaking, utilizes value of BlockProperties#hardness - CustomTool component, behaves similarly to Tool component but for custom blocks -compressconfig added to resource-pack section, by default true, currently minifies all json so useful for packs with alot of models - FakePlayer and OfflinePlayerData APIs for modification of players that are offline and also using that data for fake playersChanges:
- Resource pack server has been optimized a bit -external-packsfield now supports {"path": boolean}, this allows for exempting external packs for compression (required if pack is compressed OR encrypted)Fixes:
- PackServer will no longer duplicate packs for client (uses deterministic UUID for packs now)2.4.0-mc.26.1.2-alpha.6AbyssalLib 2.4.0-mc.26.1.2-alpha.6Sep 9, 2026 New:
- Custom block breaking, utilizes value of BlockProperties#hardness - CustomTool component, behaves similarly to Tool component but for custom blocks -compressconfig added to resource-pack section, by default true, currently minifies all json so useful for packs with alot of models - FakePlayer and OfflinePlayerData APIs for modification of players that are offline and also using that data for fake playersChanges:
- Resource pack server has been optimized a bit -external-packsfield now supports {"path": boolean}, this allows for exempting external packs for compression (required if pack is compressed OR encrypted)Fixes:
- PackServer will no longer duplicate packs for client (uses deterministic UUID for packs now)2.4.0-mc.1.21.11-alpha.6AbyssalLib 2.4.0-mc.1.21.11-alpha.6Sep 9, 2026 New:
- Custom block breaking, utilizes value of BlockProperties#hardness - CustomTool component, behaves similarly to Tool component but for custom blocks -compressconfig added to resource-pack section, by default true, currently minifies all json so useful for packs with alot of models - FakePlayer and OfflinePlayerData APIs for modification of players that are offline and also using that data for fake playersChanges:
- Resource pack server has been optimized a bit -external-packsfield now supports {"path": boolean}, this allows for exempting external packs for compression (required if pack is compressed OR encrypted)Fixes:
- PackServer will no longer duplicate packs for client (uses deterministic UUID for packs now)2.4.0-mc.26.2-alpha.5AbyssalLib 2.4.0-mc.26.2-alpha.5Aug 17, 2026 New:
- Add 2 JSON specific MergeStrategy for replacing/inheriting from existing loot tables that merge/replace vanilla tables2.4.0-mc.26.1.2-alpha.5AbyssalLib 2.4.0-mc.26.1.2-alpha.5Aug 17, 2026 New:
- Add 2 JSON specific MergeStrategy for replacing/inheriting from existing loot tables that merge/replace vanilla tables2.4.0-mc.1.21.11-alpha.5AbyssalLib 2.4.0-mc.1.21.11-alpha.5Aug 17, 2026 New:
- Add 2 JSON specific MergeStrategy for replacing/inheriting from existing loot tables that merge/replace vanilla tables2.4.0-mc.26.2-alpha.4AbyssalLib 2.4.0-mc.26.2-alpha.4Jul 27, 2026 Fixes:
- Recipe registration is delayed by 10 ticks so plugins get time to register items. - Duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory update2.4.0-mc.26.1.2-alpha.4AbyssalLib 2.4.0-mc.26.1.2-alpha.4Jul 27, 2026 Fixes:
- Recipe registration is delayed by 10 ticks so plugins get time to register items. - Duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory update2.4.0-mc.1.21.11-alpha.4AbyssalLib 2.4.0-mc.1.21.11-alpha.4Jul 27, 2026 Fixes:
- Recipe registration is delayed by 10 ticks so plugins get time to register items. - Duplicate ghost items caused by SSR and ItemTicker in most cases. - ItemTicker no longer triggers on inventory update2.4.0-mc.26.2-alpha.3AbyssalLib 2.4.0-mc.26.2-alpha.3Jul 19, 2026 Fixes:
- Default (folder) Recipe registration is delayed by 10 ticks so other plugins have time to register items.2.4.0-mc.26.1.2-alpha.3AbyssalLib 2.4.0-mc.26.1.2-alpha.3Jul 19, 2026 Fixes:
- Default (folder) Recipe registration is delayed by 10 ticks so other plugins have time to register items.2.4.0-mc.1.21.11-alpha.3AbyssalLib 2.4.0-mc.1.21.11-alpha.3Jul 19, 2026 Fixes:
- Default (folder) Recipe registration is delayed by 10 ticks so other plugins have time to register items.2.4.0-mc.26.2-alpha.2AbyssalLib 2.4.0-mc.26.2-alpha.2Jul 11, 2026 The API is now available on the maven central repository
New:
- Menu API (Useful for custom containers/crafting UI's as it handles item movement on its own) - Config options to toggle Item Server-Side Translation Ticking, Item ticking, and Energy network, aswell as option to change delay of server-side translation ticking - Placeholders for Permissions -abyssallib:player_has_permission:<permission>Checks if the player has the permission (Boolean) -abyssallib:player_has_group:<group>Checks if the player belongs to a group (Boolean) -abyssallib:player_groupsGets all the groups the player is in (List of String) -abyssallib:player_group:<index>Gets the players group of a specific index from the sorted group list -abyssallib:player_primary_groupGets the players group that has the highest weight (could be inconsistent if multiple groups use same weight and are highest)2.4.0-mc.26.1.2-alpha.2AbyssalLib 2.4.0-mc.26.1.2-alpha.2Jul 11, 2026 The API is now available on the maven central repository
New:
- Menu API (Useful for custom containers/crafting UI's as it handles item movement on its own) - Config options to toggle Item Server-Side Translation Ticking, Item ticking, and Energy network, aswell as option to change delay of server-side translation ticking - Placeholders for Permissions -abyssallib:player_has_permission:<permission>Checks if the player has the permission (Boolean) -abyssallib:player_has_group:<group>Checks if the player belongs to a group (Boolean) -abyssallib:player_groupsGets all the groups the player is in (List of String) -abyssallib:player_group:<index>Gets the players group of a specific index from the sorted group list -abyssallib:player_primary_groupGets the players group that has the highest weight (could be inconsistent if multiple groups use same weight and are highest)2.4.0-mc.1.21.11-alpha.2AbyssalLib 2.4.0-mc.1.21.11-alpha.2Jul 11, 2026 The API is now available on the maven central repository
New:
- Menu API (Useful for custom containers/crafting UI's as it handles item movement on its own) - Config options to toggle Item Server-Side Translation Ticking, Item ticking, and Energy network, aswell as option to change delay of server-side translation ticking - Placeholders for Permissions -abyssallib:player_has_permission:<permission>Checks if the player has the permission (Boolean) -abyssallib:player_has_group:<group>Checks if the player belongs to a group (Boolean) -abyssallib:player_groupsGets all the groups the player is in (List of String) -abyssallib:player_group:<index>Gets the players group of a specific index from the sorted group list -abyssallib:player_primary_groupGets the players group that has the highest weight (could be inconsistent if multiple groups use same weight and are highest)2.4.0-mc.26.1.2-alpha.1AbyssalLib 2.4.0-mc.26.1.2-alpha.1Jun 5, 2026 New:
- Codec API now returns DataResult this allows propagative errors and partial success warnings accumulation) -Codec#encodeAsync/decodeAsync,Codec.dispatch,Codec.taggedUnion,Codec.tupleand much more -RecordCodecBuilder->RecordBuilder, it has also been rewritten -EncodeContext/DecodeContextto help clean up more complicated codecs. - Reflection API covers more missed featuresChanges:
- Reflection API is now made safer - UpdateChecker accepts a String vararg of ignored identifiers (e.g .alpha, .beta etc)2.3.9-mc.26.1.2AbyssalLib 2.3.9-mc.26.1.2May 30, 2026 Fixes:
- ItemStack deserialization no longer adds custom_data to item if its not defined in the yml/json/etc.2.3.8-mc.26.1.2AbyssalLib 2.3.8-mc.26.1.2May 29, 2026 Fix:
- UpdateChecker now works properly2.3.7-mc.26.1.2AbyssalLib 2.3.7-mc.26.1.2May 29, 2026 Fix:
- YamlOps properly gets double and long values2.3.6-mc.26.1.2AbyssalLib 2.3.6-mc.26.1.2May 28, 2026 Changes:
- Encoder and Decoder are no longer functional interfacesFixes:
- LootTable no longer cause a crash - ItemMenu now works again2.3.5-mc.26.1.2AbyssalLib 2.3.5-mc.26.1.2May 25, 2026 [EDIT: DO NOT USE CODEC.OF WITH LAMDA, IT DOESNT WORK] Changes: - Encoder and Decoder are now FunctionalInterface(s) (Codec.of)2.3.4-mc.26.1.2AbyssalLib 2.3.4-mc.26.1.2May 25, 2026 2.3.3-mc.26.1.2AbyssalLib 2.3.3-mc.26.1.2May 24, 2026 New:
- Simple Recipe API that allows automatically loading registered recipe types from JSON/YAML. - Recipes can now be disabled by making a file in recipes folder with the following content:
- Recipes can now be replaced if they already exist using the optionalid: "minecraft:diamond_sword" disabled: truereplace: <boolean>field2.3.2-mc.26.1.2AbyssalLib 2.3.2-mc.26.1.2May 24, 2026 New:
- Tags loaded by TagLoader can now replace existing ones aslong as the ID is the same by settingreplace: true. - Loot tables now respect merge_strategy for existing custom loot tables of same id - DeferredRegistry now supports adding modifiers which allow runing logic on elements during and after registration.Fixes:
- ItemMenu now shows correct item count on plugins with no ItemCategory. - ItemMenu now properly hides "hidden" items if no ItemCategory is present2.3.1-mc.26.1.2AbyssalLib 2.3.1-mc.26.1.2May 23, 2026 Fixes:
- OminousAmplifier component no longer causes ClassCastException. - GUIs now tick on folia2.3.0-mc.26.1.2AbyssalLib 2.3.0-mc.26.1.2May 23, 2026 This is the first build with folia compatibility, if you find any errors please report them on either github or discord
New:
- Folia is now supported. - Minestom inspired Command API (old annotation registration still works).Changes:
- Scheduler API is now ~4.8x faster. - Structure Block placement speed is now configurable. - onTick and onRandomTick have been moved to CustomBlock from BlockEntity.Fixes:
- RemainderUse component has been fixed.2.2.2-mc.26.1.2AbyssalLib 2.2.2-mc.26.1.2May 14, 2026 New:
- ResourcePackCompileEvent so plugins can hook into other plugins packs.Changes:
- ItemPredicate partially matches minecraft:custom_data instead of a 1:1 comparison.2.2.1-mc.26.1.2AbyssalLib 2.2.1-mc.26.1.2May 13, 2026 Changes:
- ItemAttributeModifers codec is now flipped to fix serialization.2.2.0-mc.26.1.2AbyssalLib 2.2.0-mc.26.1.2May 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:
-givecommand now takes player(s) as the first argument. -permission guicommand can now take player as optional target.2.1.0-mc.26.1.2AbyssalLib 2.1.0-mc.26.1.2May 7, 2026 New:
- ClientItemModifier for client-only item modifications, registered by ItemPacketModifier.registerModifier - Client-only changes are now applied to cursor items too2.0.8-mc.26.1.2AbyssalLib 2.0.8-mc.26.1.2May 6, 2026 Fix:
- Vanilla components are now serialized under minecraft namespace, old serialized items can be ported by replacing the namespace of component ids2.0.7-mc.26.1.2AbyssalLib 2.0.7-mc.26.1.2May 6, 2026 Fix:
- ConsumeEffect codecs have been fixed (fixes serialization of Deathprotect and Consume components)2.0.6-mc.26.1.2AbyssalLib 2.0.6-mc.26.1.2May 6, 2026 Fixes:
- DeathProtect and EnchantableComponent no longer cause error spam - ComponentMap now loads vanilla components properly2.0.5-mc.26.1.2AbyssalLib 2.0.5-mc.26.1.2May 5, 2026 Changes:
- Attribute API is now 1:1 with the minecraft Attribute system.2.0.4-mc.26.1.2AbyssalLib 2.0.4-mc.26.1.2May 4, 2026 Changes:
- resourcepack host is now enabled by defaultFixes:
- No longer causes errors when using Codec.map or similar with Config API2.0.3-mc.26.1.2AbyssalLib 2.0.3-mc.26.1.2Apr 22, 2026 Fixes:
- No longer overwrites player inv when using permission gui2.0.2-mc.26.1.2AbyssalLib 2.0.2-mc.26.1.2Apr 18, 2026 Fixed:
- Jitpack now uses JDK 252.0.1-mc26.1.2AbyssalLib 2.0.1-mc26.1.2Apr 18, 2026 New:
- Updated to 26.1.2 - added Dye component - added new special model types to RP API to match 26.1Changes:
- 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 API2.0.0-mc1.21.11AbyssalLib 2.0.0-mc1.21.11Apr 17, 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 inpaper-plugin.yml. - Dynamic Translations: AddedItemTranslationProviderandServerTranslatorglobal 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 alocatecommand for structures, which works exclusively in newly generated chunks. - Dynamic Statistics: Added dynamically generated tracking forentities_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 theStructureBlocksize limit to 1028 for X/Y/Z coordinates. - GUI Engine Overhaul: ReworkedItemMenuto 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 useNbtOpscodecs 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: FixedTranslationLoaderoverriding previously loaded locale files, and fixed a bug where failed translation strings were replaced by their raw keys instead of parsing correctly. - Packet Translation: FixedPacketTranslatorbreaking 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, addedkotlinx.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: AddedEnergyConductorfor cable-type nodes with simulation mode for insert/extract. Transfers now depend onBlockFace. Custom blocks must manually handleEnergyNetworkregistration/unregistration. - Library Migrations: Moved away fromItemBridge,BlockBridge, andIdentifier. UseBlockInfoand AdventureKeyinstead. Direct support for Nexo and ItemsAdder has been removed. - GUI API Adjustments: AddedGuiClickContextandGuiDragContextas 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). - RemovedBlockPileFeature,CaveVineFeature, andRandomPatchFeature. - RemovedDamageType.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)1.9.0-mc1.21.9Jan 29, 2026 Docs will be updated after v2 as v2 is already nearly done and the Wiki rewrite will take atleast 2-3 days
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 folderChanges:
- 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 registries1.8.0-mc1.21.9AbyssalLib 1.8.0-mc1.21.9Dec 28, 2025 Docs will now be updated on v2 and will hopefully be more clear
---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](https://github.com/darksoulq/AbyssalLib/pull/2) , Adding Player-aware tooltips and slot validation for Item#onClickInInventory (by [@ynovka](https://github.com/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](https://github.com/darksoulq/AbyssalLib/pull/2)) ---Removal:
- CustomRecipe class - RECIPE_CHOICES and RECIPE_TYPES registries - Removed Item#getStack()1.7.2-mc1.21.9AbyssalLib 1.7.2-mc1.21.9Dec 25, 2025 Fix:
- Kotlin classes no longer cause errors when used1.7.1-mc1.21.9AbyssalLib 1.7.1-mc1.21.9Dec 23, 2025 Previous version was an accidental bump of patch number and was meant to be 1.7.0, i apologize for the confusion.
---Fix:
- Item#onInventoryClick fires for hotbar swapped items now - Plugin Hooks now properly load1.6.8-mc1.21.9AbyssalLib 1.6.8-mc1.21.9Dec 22, 2025 New:
- Command/abyssallib reload packwhich resends all packs (including external packs) - Config#value method that takes in a Codec for serializing values. -PacketEvent#setPacketso 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 usingResourcePack#register-InventoryClickType(Bukkit ClickType duplicate) to avoid conflict with ClickType -Item#onClickInInventoryandItem#onInventoryTick(tick is untested and may be removed if performance is impacted too much) -ItemBridgeandBlockBridgehave been vastly improved. ---Changes:
- ItemStack Codec no longer forces YAML format fordata: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 properlyabyssallib.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)1.6.7-mc1.21.9AbyssalLib 1.6.7-mc1.21.9Dec 12, 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 removal1.6.6-mc1.21.9AbyssalLib 1.6.6-mc1.21.9Dec 11, 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
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}). ---id: minecraft:stick amount: 2 data: minecraft:unbreakable: "" minecraft:max_stack_size: 2Changes:
- Codec.either -> Codec.fallback - EitherCodec -> FallbackCodec ---Fix:
- Codec#list/collection now works as intended on FallbackCodec1.6.5-mc1.21.9AbyssalLib 1.6.5-mc1.21.9Dec 1, 2025 This is hopefully the last bug that was in CustomBlock API, only server owners need to update to this, there are no API changes
---FIxes:
- Only one BlockEntity ticking after chunk is reloaded (or server restarts)1.6.4-mc1.21.9AbyssalLib 1.6.4-mc1.21.9Nov 30, 2025 New:
-ListedLayers#reset()andPaginatedElements#reset()[Useful if layer hasnt been added to gui and is being handled by another layer) -Item#onSwapHand,Item#onSlotChange,Item#onDrop,Item#onPickup([#1](https://github.com/darksoulq/AbyssalLib/issues/1)) ---Changes:
-Item#onUsenow has a third argumentClickTypeshowing what type of click it was (left/Right) ([#1](https://github.com/darksoulq/AbyssalLib/issues/1)) ---Fixes:
-BlockInteractionEvent#getInteractionPointis now Nullable1.6.3-mc1.21.9AbyssalLib 1.6.3-mc1.21.9Nov 27, 2025 This is a major fix for both the block and entity systems
---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) ---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 database1.6.2-mc1.21.9AbyssalLib 1.6.2-mc1.21.9Nov 25, 2025 Fixes:
- Blocks properly get saved - BlockEntity no longer gets overwritten on new block placement1.6.1-mc1.21.9AbyssalLib 1.6.1-mc1.21.9Nov 24, 2025 CustomRecipe is deprecated and marked for removal as it served no real purpose.
---Fixes:
- Plugin Icon items no longer show in give cmd and Item Menu - Defaultplugin_iconis no longer a missing texture (no resourcepack reset needed) -BlockInteractionEventis now called and handled correctly ---Removal:
-CustomRecipe#getCodec(had no real use)1.6.0-mc1.21.9AbyssalLib 1.6.0-mc1.21.9Nov 23, 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 keyplugin.<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 andCodec#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 every single asset so you can load them directly from files (Be warned: when using these you CANNOT edit them via code, e.g. you cannot add more translation keys to a Lang loaded this way) - ResourcePack#unregister (does nothing when using RSPM; reloading RSPM works) ---Changes:
- Added back many constructors to DataComponents to fix component loading - BlockEntity now only serializes variables of typeProperty<>- BlockManager no longer usesTextUtil.GSONfor serialization/deserialization -AttributeModifier→ ItemAttributeModifier - Many constructors with easier-to-use versions for DataComponents - DataComponent constructor now accepts subclass Codecs (e.g.Codec<ToolComponent>instead ofCodec<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 fixed Entity Spawning ---Removal:
- Logging from SimpleEnergyContainer - WorldMeta1.5.0-mc1.21.8AbyssalLib 1.5.0-mc1.21.8Sep 16, 2025 Javadoc jar will not be published till i finish refactoring them (likely will be done quickly once i can use my pc)
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 portal1.4.0-mc1.21.7AbyssalLib 1.4.0-mc1.21.7Jul 27, 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 resourcepack1.3.6-mc1.21.7AbyssalLib 1.3.6-mc1.21.7Jul 27, 2025 New: - McMeta, PackMcMeta and Pack icon support in ResourcePack/Namespace1.3.5-mc1.21.7AbyssalLib 1.3.5-mc1.21.7Jul 26, 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.01.3.4-mc1.21.7AbyssalLib 1.3.4-mc1.21.7Jul 22, 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 - the newer config 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 static1.3.3-mc1.21.5AbyssalLib 1.3.3-mc1.21.5Jul 3, 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 properly1.3.2-mc1.21.5AbyssalLib 1.3.2-mc1.21.5Jul 2, 2025 New: - Block(Identifier, Material) constructor Changes: - PlayerAttributes renamed to EntityAttributes (can store attributes for any entity now) Fix: - Static getHandlerList in all custom events1.3.1-mc1.21.5AbyssalLib 1.3.1-mc1.21.5Jun 28, 2025 New: - Config optionfeatures.custom_block_breakingto 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))1.3.0-mc1.21.5AbyssalLib 1.3.0-mc1.21.5Jun 27, 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. ** Docs will be updated in july1.2.7-mc1.21.5AbyssalLib 1.2.7-mc1.21.5May 21, 2025 Changes: - Rewrote GUI API to support multi-player inventories (docs will be updated soon) Fixed: - GUI still ticking after closing1.2.6-mc1.21.5AbyssalLib 1.2.6-mc1.21.5May 19, 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 ItemStack1.2.5-mc1.21.5AbyssalLib 1.2.5-mc1.21.5May 18, 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 changes1.2.4-mc1.21.5AbyssalLib 1.2.4-mc1.21.5May 17, 2025 Changes: - Rewrote Particle API
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.3MSueta
Chunky
Pre-generates chunks, quickly and efficiently
20.8MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta