Oxidizium

Oxidizium

用Rust语言重写Minecraft的部分内容

Oxidizium - 将 Ferris 注入你的服务器!🦀


概述

此 Fabric 模组将 Minecraft Java 版中的部分方法替换为原生的 Rust 等价实现。 每个 Rust 函数都经过内部测试工具的验证,确保其在功能上与原版 Minecraft 完全一致。 该模组旨在用于服务端,但也可在客户端使用(会有轻微渲染问题)。

目前,此模组将以下 Java 类替换为 Rust:

  • MathHelper

未来计划替换更多类,但初期将主要处理底层类。


兼容性

截至目前,Oxidizium 与大多数模组高度兼容,并与 Lithium 有特殊兼容性。 欢迎提交您自己的 Rust 原生代码的拉取请求!


后端

Oxidizium 默认附带 3 个后端:Panama、Nalim 和 Membrane。后端将包含在 jar 包和模组名称中。 每个后端略有不同,请阅读以下说明:

Project Panama

Project Panama 是 Java 22+ 的一项特性,支持低延迟的原生代码执行。适用于从 1.14.3 到现代 MC 的任何 Minecraft 版本。

使用方法

使用 Project Panama 必须安装 Java 22 或更高版本! 推荐使用以下 JVM 参数,但在 Java 25 及以下版本中 目前 并非必需: --enable-preview --enable-native-access=ALL-UNNAMED 使用更新的 Java 版本可能比 Java 22 更能提升性能。为了获得最佳性能,建议使用 GraalVM,但请注意 GraalVM 有可能(尽管可能性极小)导致模组失效。如果您希望完全稳妥,请使用 Temurin 等发行版。

Nalim

Nalim 是一个第三方库,能够在执行原生代码时实现接近原生的延迟。对于快速(leaf)调用,其速度大约是 Project Panama 的 3 倍,根据 Nalim 说明文档,在 JDK 19 上比 FFM 之前的 Panama 快约 50 倍。

Nalim 因 Loom 的 JEP 444 使 JVMCI nmethod 入口屏障对每个 GC 都成为强制要求,因此在 Java 21+ 上历史上曾出现问题。 Oxidizium 内置了一个 由 FurryMileon 修补的 Nalim jar 包,它在尾调用之后生成一个"无操作"屏障序列,使 JVMCI 验证通过且不产生任何运行时开销——屏障字节为死代码(放置在 jmp rax / br x9 之后)。

使用方法

运行 Nalim 必须使用以下 JVM 参数:-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI

Membrane

Membrane 的工作原理类似 Nalim,但效果可能不如 Nalim(基准测试即将推出)。它是一个 实验性 后端,不建议在生产环境中使用。 与 Nalim 一样,它过去要求 Java 20 及以下版本,但感谢内置的 由 QPCrummer 修补的 Membrane jar 包,它能在使用 Java 21 和 25 的所有 Minecraft 版本中完美运行!

使用方法

运行 Membrane 必须使用与 Nalim 相同的以下 JVM 参数:-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI 推荐但暂时非必需的 JVM 参数:-XX:+EnableDynamicAgentLoading