# 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` to `ResourceLocation` for saving entity identifiers
* Allows multiple mods to use the Variant Loader without name conflicts
* Replaced `getVariantName()` and `setVariantName()` default interface methods (which relied on unstable casting to `IVariantAccessor`)
* New generic interface: `IVariantEntity<T>`
* Entities now implement `IVariantEntity<YourClass>` and override `getEntity()` to return `this`
```java
@Override
public @NotNull YourEntityClass getEntity() {
return this;
}
```
* This change improves type safety and eliminates the need to implement `get/setVariantName()` manually
## 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
Optional dependencies
Just Enough Items (JEI)
Any compatible version
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }