### Additions
- Added `.override("someMethod()", callback)` to `event.createCustom()` entities, letting scripts override supported Java entity methods directly.
- `.override()` works with public and protected vanilla or modded entity methods when they are safe to override.
- Added dynamic override context values like `context.entity`, `context.args`, `context.get("arg0")`, `context.arg0`, and `context.arg1`.
- Added named override arguments from Parchment mappings when available, so `customBuilder.override()` callbacks can use names like `context.partialTicks` while still keeping `arg0`, `arg1`, etc. as fallback
- Added `context.superCall()` for dynamic overrides, including `context.superCall(...args)` to call the original method with replacement arguments.
- Added `EntityJSUtils.superCall()` for supported builder and modify callbacks where a `context` object may not be available.
- Added `EntityJSUtils.getCallbackInfo()` for `modifyEntity` callbacks.
- Added callback control helpers on supported contexts: `context.cancel()`, `context.setReturnValue(value)`, `context.returnValue()`, and `context.superCall()`.
- Added `setRenderer(context => ...)` to `event.createCustom()` for custom renderer factories.
- Added `setRendererClass(...)` to `event.createCustom()` for using an existing renderer class.
- Added `setModel(context => ...)` to `event.createCustom()` for custom model factories.
- Added support for `event.createCustom()` with non-living entities.
- Added support for rendering custom non-living entities with GeckoLib or existing renderer classes.
- Added `playStepSound`, `playMuffledStepSound`, and `playCombinationStepSounds` to EntityJS entity builders.
- Added `playStepSound`, `playMuffledStepSound`, and `playCombinationStepSounds` to `EntityJSEvents.modifyEntity()`.
- Added fallback overrides for methods often needed on final entity classes: `playSwimSound`, `doWaterSplashEffect`, `processFlappingMovement`, and `canBeHitByProjectile`.
### ProbeJS / Typing Improvements
- Added better ProbeJS support for `event.createCustom()` builders.
- Added ProbeJS suggestions for `.override()` method keys.
- Added typed override contexts, so `context.entity` matches the custom entity class when possible.
- Added typed `setRendererClass("")` string suggestions of viable renderer class strings
- `setRendererClass("")` now suggests real renderer classes that can actually load and pass EntityJS renderer checks.
- `setRendererClass("some.class.Name")` still accepts custom strings even when they are not in the suggestion list.
- Improved dedicated server safety for ProbeJS typing generation so client-only renderer classes are not loaded on servers.
- Replaced `const` with `let` in some ProbeJS typing examples
### Changes
- Removed `setModelClass(...)`. Most Minecraft model classes need constructor arguments, so scripts should use `setModel(context => new MyModel(...))` instead.
- `setRendererClass(...)` is now the class-based shortcut for existing renderer classes.
- `setModel(...)` is now the correct model API for custom models.
- Changed `canThrow` default to `true` in `ProjectileItemBuilder`.
### Improvements
- Improved busy callback performance by caching faster Rhino callback invocation paths when using any EntityJS script facing callback. (30% performance increase profiled on over 500k test iterations)
- Expanded cached callback handling across GeckoLib, AI behavior helpers, spawn placement predicates, vanilla goals, setup callbacks, and modify callbacks.
- Added callback argument initialization so common entity arguments are ready before server-side logic runs.
- Added callback profiling tools for debugging callback setup, JS calls, super calls, return conversion, and context creation.
- Changed most boolean callbacks to use EntityJS’s new `BooleanCallback` interface.
- Improved wrapped custom entity behavior by defaulting synced values to the original entity values.
### Fixes
- Fixed Forge remapping issues caused by methods using `remap = true` incorrectly.
- Fixed `PiglinEntityJS` not wiring `isConverting` and `finishConversion`.
- Fixed custom and tameable entity builders missing default movement speed values.
- Fixed `ProjectileAnimatableJS` and `ProjectileEntityJS` world-save errors when summoned without an item.
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" }