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: 2
Changes:
- Codec.either -> Codec.fallback
- EitherCodec -> FallbackCodec
Fix:
- Codec#list/collection now works as intended on FallbackCodec
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)
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)
Changes:
Item#onUsenow has a third argumentClickTypeshowing what type of click it was (left/Right) (#1)
Fixes:
BlockInteractionEvent#getInteractionPointis now Nullable
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 database
Fixes:
- Blocks properly get saved
- BlockEntity no longer gets overwritten on new block placement
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
- Default
plugin_iconis no longer a missing texture (no resourcepack reset needed) BlockInteractionEventis now called and handled correctly
Removal:
CustomRecipe#getCodec(had no real use)
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 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 type
Property<> - BlockManager no longer uses
TextUtil.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
- WorldMeta
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 portal
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
New:
- McMeta, PackMcMeta and Pack icon support in ResourcePack/Namespace
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
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 static
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
New:
- Block(Identifier, Material) constructor
Changes:
- PlayerAttributes renamed to EntityAttributes (can store attributes for any entity now)
Fix:
- Static getHandlerList in all custom events
New:
- Config option
features.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))
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 july
Changes:
- Rewrote GUI API to support multi-player inventories (docs will be updated soon)
Fixed:
- GUI still ticking after closing
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
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
Changes:
- Rewrote Particle API



