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