Links
Tags
Creators
Details
Licensed LGPL-3.0-or-later
Published 5 months ago
Updated last week
All versions
2.1.0
Release
Legacy API 2.1.02 weeks ago 8
Compatibility
Minecraft: Java Edition
1.7.x
1.6.4
1.6.1–1.6.2
1.5.x
1.4.4–1.4.7
1.4.2
1.3.x
Platform
NilLoader
Supported environments
Client and server
Changes
[2.1.0] - 2026-08-05
Added
- Added project-local Maven publishing to
./mavenviapublishProjectLocal; publications are OpenPGP-signed with the user's normal GnuPG /gpg-agentsetup. - Added inherited event-listener discovery, typed-listener unregistration, and event-bus clearing APIs.
- Added cooldown remaining-time queries and expired-player cleanup.
- Added NIO client/server state inspection (
isRunning,isConnected, connection snapshots/counts) and server bound-port lookup. - Added default listener hooks for unknown packet IDs and exhausted client reconnect attempts without breaking existing listener implementations.
- Added packet-registry inspection helpers (
isRegistered,size,clear). - Added lifecycle controls/state for the automatic Minecraft network bridge, including explicit
stop()and automatic recovery after reconnect exhaustion. - Added regression tests for KDL, cooldown concurrency, and packet codec/registry behavior.
Changed
- Normal
buildno longer forces loader decompilation;decompileLoaderremains an explicit developer task. - KDL scalar output now uses KDL 2 forms (
#true,#false,#null,#inf,#-inf,#nan). - KDL parsing now accepts common KDL 2 numeric forms, raw strings, quoted property keys, dotted identifiers, nested block comments, and slash-dash node/entry suppression while retaining legacy boolean/null compatibility.
- Event registration is de-duplicated, scans inherited subscriber methods, and preserves deterministic registration order for equal-priority handlers.
- Network listener callback failures are isolated from the selector loop; packet serialization failures no longer disconnect healthy peers.
- Network constructor and packet-registry inputs are validated early with clearer errors.
Fixed
- Fixed
TargetFinderreturning a nearby player that failed the requestedminDotaim threshold and fixed target ranking to prefer alignment with distance as the tie-breaker. - Fixed
CooldownTracker.tryUseGlobal/tryUsePlayerrace conditions so a cooldown window cannot be consumed concurrently by multiple callers. - Fixed entrypoint phase re-entrancy during the pre-dispatch event by installing the active-phase guard before posting the event.
- Fixed NIO server duplicate disconnect callbacks and stale connection entries.
- Fixed NIO client reconnect attempts terminating permanently when opening a replacement channel throws immediately or when a non-blocking connect completes immediately.
- Fixed KDL writer/parser round-trip failures for quoted property keys and KDL 2 scalar values.
- Fixed zero/invalid look-vector and negative-range edge cases in
TargetFinder. - Fixed
ReflectHelper.invokecontradicting its documented null-to-primitive-default behavior. - Fixed automatic network bridge getting stuck with a dead client after reconnect exhaustion.
- Fixed local SRG mapping reads using platform-default encoding and added clearer version validation.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:bEmV8Hhn:Q0Rglsi4"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:bEmV8Hhn:Q0Rglsi4"
}

