Skip to content

Version Numbering Converter

Do you hate the new Apple-like version numbering system? Same! Do you like it? Don't care! Do you care about the version numbering and how to convert old versions to its new version or viceversa? This project is for you!

FabricNeoForgeForgeQuilt
Loaders
FabricNeoForgeForgeQuilt
Downloads on Modrinth
1.7K
Followers on Modrinth
4
versions
12
Updated
August 5, 2026Aug 5
Published
in 2025
This is a library — other mods need it, and it adds nothing to the game by itself

At a glance

A library: other mods need it
Runs on Fabric, NeoForge, Forge and Quilt
For Minecraft 1.0–26.2
Works on either side — install it in the game, on the server, or both
Latest version — 1.2.1 from August 5, 2026
License GPL-3.0-or-later — free
Where it's needed
In gameoptionalOn serveroptional

Works both in the game and on the server — install where you need it

Game versions1.0–26.2

1

2

3

4

5

6

7+8

9

10

11

Spoiler

VNC (Version Numbering Converter)

Version Numbering Converter (VNC) is a Java 8 library for working with Minecraft versions across both numbering families:

  • Classic Java-style versions such as 1.20.6 and 1.21.11
  • Year-based drop versions such as 24.1, 25.4, and 26.1.1

The project is split so the common API can be used from any Java project without Bukkit on the classpath. Platform-specific runtime helpers live in separate modules and are selected through the bootstrap provider.

Modules

ModuleArtifactPurpose
bootstrapme.croabeast.vnc:VNCFinal aggregate jar with VNC, core, and the provider implementations.
coreme.croabeast.vnc:coreCommon parser, provider contract, mapping tables, conversion schemes, protocol lookup, and generic runtime snapshots.
bukkitme.croabeast.vnc:bukkitInternal Bukkit/Paper provider and ViaVersion-backed player protocol lookup.
mod:fabricme.croabeast.vnc:fabricFabric loader runtime version bridge.
mod:quiltme.croabeast.vnc:quiltQuilt loader runtime version bridge.
mod:forgeme.croabeast.vnc:forgeForge runtime version bridge.
mod:neoforgeme.croabeast.vnc:neoforgeNeoForge runtime version bridge compiled as Java 8 bytecode.
mod:spongeme.croabeast.vnc:spongeSponge runtime version bridge.
mod:liteloaderme.croabeast.vnc:liteloaderLegacy LiteLoader bridge.
proxy:bungeeme.croabeast.vnc:bungeeBungeeCord proxy version bridge.
proxy:velocityme.croabeast.vnc:velocityVelocity proxy bridge for a supplied backend/support Minecraft version.

Core API

MinecraftVersion classic = MinecraftVersion.parse("1.21.11");
MinecraftVersion drop = MinecraftVersion.parse("26.1");

classic.getVersion();         // "1.21.11"
classic.getProtocol();        // 774
classic.supportsHex();        // true

drop.getVersion();            // "26.1"
drop.getProtocol();           // 775
String dropName = VersionScheme.MOJANG.toDrop("1.20.3");       // "23.2"
String classicName = VersionScheme.MOJANG.toClassic("25.2.2"); // "1.21.8"

boolean modernRegistry = Versioning.isAtLeast(MinecraftVersion.parse("1.20.6"), "1.20.5");
int comparison = VNC.compare(MinecraftVersion.parse("26.1"), "1.21.11");

Platform Runtime API

Use bootstrap when you want VNC to detect the runtime provider:

VNCProvider provider = VNC.getProvider();

String platform = provider.getPlatform();
String classic = provider.getClassicVersion();
String drop = provider.getDropVersion();
int protocol = provider.getProtocol();
boolean modernRegistry = provider.isAtLeast("1.20.5");

VNC still exposes convenience methods for the detected provider:

MinecraftVersion server = VNC.SERVER_MINECRAFT_VERSION;
double legacy = VNC.SERVER_VERSION;
boolean modernRegistry = VNC.isAtLeast("1.20.5");

When the runtime may not have a supported provider, use the nullable accessor:

VNCProvider provider = VNC.getProviderOrNull();
if (provider != null && provider.isAtLeast("1.20.5")) {
    // use modern behavior
}

Platform modules contain package-private provider implementations. Consumers should depend on bootstrap for runtime detection instead of calling loader-specific classes directly.

Velocity does not expose one global backend Minecraft version. Its provider is still detected from the Velocity API, but version methods need a minecraft.version system property.

Requirements

  • Java 8 bytecode for every module
  • Gradle 9.4.1 wrapper for local builds
  • Optional platform APIs are compileOnly; platform modules use direct APIs and guard runtime detection with Throwable/linkage protection
  • The NeoForge module targets NeoForge 21.1.230, compiles Maven-style with source/target 1.8, and only resolves at runtime when Java 21+ and NeoForge are present

Build

./gradlew clean build

The final consumer jar is generated by the bootstrap module:

bootstrap/build/libs/VNC-${version}.jar

Maven repository publishing is handled only by .github/workflows/publish.yml.

FAQ

How to install Version Numbering Converter?

Install Fabric for your Minecraft version, download Version Numbering Converter for the same version and loader, put the file into the mods folder and launch the game with the loader profile.

Which Minecraft versions does Version Numbering Converter support?

Version Numbering Converter has builds for Minecraft 1.0–26.2.

Is Version Numbering Converter needed on the server?

Works on either side — install it in the game, on the server, or both

License and source
GNU General Public License v3.0 or laterfree to use and share; changes to the mod itself must be published under the same license
Original — Modrinth↗Files unchanged, verified with SHA-512Is this your mod? For rights holders

The site uses cookies: the necessary ones for sign-in and the theme, plus the Yandex Metrica and LiveInternet visit counters — they show us how the site is used. We have no advertising cookies. More