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!
介绍
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.6and1.21.11 - Year-based drop versions such as
24.1,25.4, and26.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
| Module | Artifact | Purpose |
| — | — | — |
| bootstrap | me.croabeast.vnc:VNC | Final aggregate jar with VNC, core, and the provider implementations. |
| core | me.croabeast.vnc:core | Common parser, provider contract, mapping tables, conversion schemes, protocol lookup, and generic runtime snapshots. |
| bukkit | me.croabeast.vnc:bukkit | Internal Bukkit/Paper provider and ViaVersion-backed player protocol lookup. |
| mod:fabric | me.croabeast.vnc:fabric | Fabric loader runtime version bridge. |
| mod:quilt | me.croabeast.vnc:quilt | Quilt loader runtime version bridge. |
| mod:forge | me.croabeast.vnc:forge | Forge runtime version bridge. |
| mod:neoforge | me.croabeast.vnc:neoforge | NeoForge runtime version bridge compiled as Java 8 bytecode. |
| mod:sponge | me.croabeast.vnc:sponge | Sponge runtime version bridge. |
| mod:liteloader | me.croabeast.vnc:liteloader | Legacy LiteLoader bridge. |
| proxy:bungee | me.croabeast.vnc:bungee | BungeeCord proxy version bridge. |
| proxy:velocity | me.croabeast.vnc:velocity | Velocity 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 withThrowable/linkage protection - The NeoForge module targets NeoForge
21.1.230, compiles Maven-style withsource/target 1.8, and only resolves at runtime when Java21+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.
常见问题
Version Numbering Converter 支持哪些 Minecraft 版本?
Version Numbering Converter 支持 Minecraft Java 版 1.0–26.2,共 111 个版本,可用的加载器:Bukkit / Fabric / Folia / Forge / NeoForge / Paper / Purpur / Quilt / Spigot / Sponge / Velocity。下载时注意选择和你游戏版本一致的文件。
Version Numbering Converter 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Bukkit / Fabric / Folia / Forge / NeoForge / Paper / Purpur / Quilt / Spigot / Sponge / Velocity,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端 / 服务端。
CroaBeast 的其他作品
查看全部 →[NEW] PvP Font
Almost every Accented and Some of NonLatin
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!










评论
登录后评论和评分