2.3.1
Warning:
- This is a major update with extensive changes. While everything has been tested privately, the sheer size means bugs may still occur. Please report any issues on GitHub or message
@me_alam
on Discord. - The version will remain minor until stability and feature completeness are confirmed.
Added
- Added more Annotations!
- Added more Logic to the
PlatformHelper
isPhysicalClient
&getGameDir
- Added More Network Sending Utils
sendToAllPlayersTrackingEntity
&sendToAllPlayersTrackingBlock
- Created the
@WillBeDeprecated
Annotation- Unlike Deprecated, which communicates that an element is already discouraged for use, this annotation signals an early notice that the element may be deprecated in the future. The element is still fully supported and no active deprecation or removal work has begun. Use this to communicate upcoming API changes and allow users to prepare.
Added a Complete Bedrock Model/Animation/Texture Loader!
- Introduced a Bedrock Loader that supports Bedrock models, animations, and textures. No need for Blockbench plugins.
- Supports Geckolib assets, while also promoting direct use of Bedrock-format resources.
- Features DataDriven Animation Controllers, Enabling datapack and resource pack creators to inject custom animations and immersive behaviors.
- Rendering is powered by a new Context System, cleaning up rendering logic for maintainability and flexibility.
Added Full MoLang Support!
- Integrated a MoLang engine with built-in support for MoLang queries and expressions.
- Developers can easily extend MoLang with custom queries, allowing for advanced animation logic and entity behaviors.
Note: The Wiki is currently a work in progress and will be expanded gradually to cover all aspects of this major update.
Changed
ResourceCache
now has anClient
andServer
side!
Bug Fixes
- Fixed an Language Missing Issue.
- Fixed the Translation issues in the Console Logging.
- Fixed some Minor Parameter Naming.
- Fixed some incorrect Annotations.
Deleted
- Deleted Deprecated Markdown Code from
2.2.0
- Deleted the
JSONParser
2.3.0
Added
- Added a New Version Warning screen!
- Do you release your mods as Alphas/Snapshots, feel free to use this new system and warn your users about it!!!
- More Info on: Wiki
Changed
getRandomVariant()
will never returnnull
anymore!- Completely Rewrote the
PityRandom
to allow for every type of class(T) in stead of only Doubles. (Still Experimental)
Bug Fixes
- Fixed PacketsRegistry from randomly deciding to crash without any reason.
2.2.0
Requires NeoForge: 21.1.181
or higher
Added
- Annotated every method in the codebase with relevant annotations (
@NotNull
,@Nullable
,@Experimental
,@Internal
,@OverrideOnly
) - Developers can now manually exclude custom mods in the
LoadedModsEvent
- Moved
ReloadHandler
to the common package for shared access
Changed
- All dependencies updated to latest versions
- Set "Thank You" event priority to lowest (NeoForge only)
Variant Loader
-
Fully rewritten and modernized the Variant Loader
-
Introduced performance improvements like smarter caching and new utility methods
-
Switched from
String
toResourceLocation
for saving entity identifiers- Allows multiple mods to use the Variant Loader without name conflicts
-
Replaced
getVariantName()
andsetVariantName()
default interface methods (which relied on unstable casting toIVariantAccessor
)- New generic interface:
IVariantEntity<T>
- Entities now implement
IVariantEntity<YourClass>
and overridegetEntity()
to returnthis
@Override public @NotNull YourEntityClass getEntity() { return this; }
- This change improves type safety and eliminates the need to implement
get/setVariantName()
manually
- New generic interface:
Fixed
- Fixed crash when Scheduler failed to load without Variant Loader
- Made blue logging text lighter and easier to read
- Logging now works correctly when enabled in config
- Corrected a language inconsistency in the "Mods Loaded" message
- "Thank You" message now shows after loading is complete
- Resolved conflict where Minecraft reported a duplicate packet registration
2.1.0
Added
Datapack Driven Brewing Stand Recipe's
- Added a way for Users to add new Recipes to Minecrafts Brewing Stand using Datapacks!
- Provided Build in JEI Support into Vanilla Brewing Stand Recipes
- Remained Compatible with hardcoded Recipes!
Bug Fixes
- Rejoining a Fabric World doesnt crash due to Configs anymore
This version brings Breaking Changes.
Updating might make your mod incompatible with previous versions of the Library.
2.0.0
Added
Variant Loader
- Added a fallback variant parameter to getParameterDataFromVariant, allowing shared data to be centralized in a single JSON instead of duplicating it per variant.
- Reworked the entire Loading system to have the Events on the Library side and allow Developers to just inject the path and entities.
- Instead of handling everything themself.
- All Developers can now remove their
ReloadHandler
since it became redundant and has been replaced with a way cleaner and more optimized system. - For more details, visit the Wiki.
onReload
has been modified toonDatapackSync
.
Logging
- Added a new
/log
command accessible to users with a permission level of 3 or higher (/op
).- This command opens an in-game menu displaying console logs, allowing developers to monitor output directly without needing terminal access.
- Supports log levels with color-coded formatting for easier readability.
isLoggingEnabled
has been moved to a server sided config.- All Logging is now translatable through Minecrafts Component System!
- Added a ton more ways to Log stuff to match the
slf4j
system.
Network Handler
- Introduced a streamlined network registration system.
- Simplifies the use of custom packets by automatically handling registration internally via BlueLib.
- Packet definitions and handlers are now separated into two distinct classes for better structure and maintainability.
- For more details, visit the Wiki.
Packets
Variant Data Synchronization
AllDataPacket
– Sends aMap<String, JsonObject>
containing all variant data from the server to the client.ParameterDataPacket
– Sends specific parameter data for a given variant as aJsonElement
.VariantsPacket
– Sends aSet<String>
representing all available variant identifiers for an entity. ⚠️ These packets are not registered by default; they must be registered on the S2C side, with the handler provided as a lambda defining the logic to execute when the packet is received.⚠️
Changed
onReload
has been modified toonDatapackSync
.
Bug Fixes
- Cleaned up all of the Logging we had in place.
Deleted
- Removed
IVariantEntityBase
since it has become redundant!