Tags
Creators
Details
2.1.3
Compatibility
Changes
Refactor: Modernize for Java 25 & Fix Velocity Proxy Deadlocks (v2.1.3)
๐ Description
This PR focuses on updating the core infrastructure to align with the bleeding-edge Minecraft 26.1.2 / Java 25 ecosystem. It also contains a critical fix for a cross-server data deadlock issue that occurred when switching servers on our proxy network.
๐ Bug Fixes
- Velocity Server Switch Deadlocks: Resolved a critical cross-server data lock issue where the proxy failed to gracefully intercept server transfers and release player SQL locks prior to routing.
- Annotation Processor Mitigation: The root cause of the proxy deadlock was traced back to our Java 25 / Maven Annotation Processors suppressing proxy integration endpoints during compilation. By explicitly passing the
@PluginVelocity API annotation directly into the compiler arguments array, we've successfully recovered the generation of thevelocity-plugin.jsoninitialization file. The proxy component now initializes and intercepts transfers cleanly. - Structural Null Safety: Resolved BungeeCord and Velocity
ByteArrayDataOutput.writeUTFstructural inference problems around UUID String boundaries to ensure strict conformance toGuavaexpectations.
๐ Modernization & Technical Debt
- API Standardization:
- Updated
paper-apito26.1.2.build.7-alpha. - Updated
velocity-apito3.5.0-SNAPSHOT(Build #592). - Updated
item-nbt-apito2.15.7. - Updated testing dependencies (
mockito) to5.23.0.
- Updated
- Legacy Refactors:
- Migrated health sync properties to utilize
Attribute.MAX_HEALTH, fully deprecating the legacyGENERIC_prefix requirements targeting modern APIs. - Restructured
PlayerQuitEventlogic in our flow suites to adopt modernComponentadventure text system, erasing legacy string deprecations natively. - Upgraded internal plugin message events to correctly route their legacy event parameters, accommodating proxy-transfer flags natively.
- Migrated health sync properties to utilize
๐ก Zero-Suppression Defensive Null Safety
- Phased out
@SuppressWarningsfor null validation loops across the entire bridge logic constraint map, replacing them with mechanically enforcedjava.util.Objects.requireNonNullvalidation layers cleanly. - Safely rewired ambiguous core Bukkit states (
getLocation,advancementIterator,getCommand) to aggressively trap and seal implicit analyzer NPE leakages directly inside the event pipeline.
๐ Build Pipeline Adjustments
- Upgraded compiler compliance matrix to strictly target Java 25 (
<release>25</release>). - Bumped
maven-shade-pluginnatively to3.6.2, and injected cutting-edgeorg.ow2.asm9.9.1dependencies to successfully resolve shade failures against Java 25's new major bytecode signatures.
๐งช Testing & Verification
- [x] Verified compilation integrity on Java 25.
- [x] Live tested on proxy environment (
Velocity 3.5.0handling twoPaperMC 26.1.2instances). - [x] Tested rapid server hopping back-and-forth between instances.
- [x] Verified perfect synchronization across Health, Inventory, and complex NBT data during immediate server switches with zero proxy timeouts or deadlocks.
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:oYE8njDp:L2358XfX"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:oYE8njDp:L2358XfX"
}

