Tags
Creators
Details
1.2.1
Compatibility
Changes
Multi-Platform Runtime Support
Major runtime rework: VNC now detects the platform it is running on instead of assuming Bukkit, and the library is split into modules so the version API can be used without Bukkit on the classpath.
Added
- Added runtime support for Fabric, Quilt, Forge, NeoForge, Sponge, LiteLoader, BungeeCord and Velocity, alongside the existing Bukkit/Paper support.
- Added a module split:
corecarries the parser, mapping tables, schemes and protocol lookup with no platform dependency, andbootstrapcarries the detection plus every provider. - Added
VNC.getProvider(),VNC.getProviderOrNull(),VNC.hasRuntime()andVNC.platform()to inspect the detected runtime. - Added
VNC.SERVER_RAW_VERSION, which returns the version string exactly as the platform reports it. - Added
VNC.javaVersion(),VNC.parseMinecraftVersion(),VNC.requireMinecraftVersion()andVNC.toLegacyServerVersion(). - Added comparison overloads that take a
MinecraftVersiondirectly, soisAtLeast,isBefore,isBetweenandcomparecan be used without a running server.
Changed
- The consumer jar is now produced by the
bootstrapmodule;coreand the platform modules are published separately for projects that only need part of it. - VNC no longer fails when it runs on an unsupported platform. The server constants fall back to empty values and
getProviderOrNull()returnsnull. - Removed
VNC.player(Player). Player protocol resolution through ViaVersion is now internal to the Bukkit provider. - Removed
VNC.SERVER_FORK. - Removed the numeric
isAtLeast(int)andisAtLeast(int, int)overloads. Use the string form, which handles patch-sensitive boundaries like1.20.5correctly. - Velocity does not expose one backend Minecraft version, so its provider needs the
minecraft.versionsystem property to answer version questions. - The NeoForge module targets NeoForge
21.1.230and only resolves at runtime when Java 21 or newer is present.
Notes / Recommendations
- Every module is still compiled as Java 8 bytecode.
- Depend on the
bootstrapartifact for runtime detection. The provider implementations inside the platform modules are not public and should not be called directly. - If you were calling
VNC.player(...), move that lookup into your own plugin, or use PrismaticAPI 2.0.0, which resolves and caches the same information. - Optional platform APIs stay
compileOnly, so a missing loader never breaks startup.
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:uxOkzaAO:yMFtwGe8"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:uxOkzaAO:yMFtwGe8"
}

