Hyinit | Mixin 引导程序

Hyinit | Mixin 引导程序

Hytale 中的无限制 Mixin 环境 | 与 Hyxin 的兼容性

早期插件

支持 Discord 服务器

⚠️ 警告: Hyinit 并非标准早期插件!请仔细阅读说明。

🚀 Hyinit

Hyinit 是一个用于 Hytale 的无限制 Mixin 环境引导程序。

你使用 Hyinit 替代 HytaleServer.jar 运行,它会在服务器启动前引导 Mixin。这为你的模组提供了 Mixin 和 MixinExtras 的完整功能集,允许它们引用任意服务器类,并能转换早期插件自身无法触及的类。

它也与 Hyxin 向后兼容。

✅ 安装

Hyinit 并非标准早期插件。请不要将其放入 earlyplugins 文件夹。相反,使用 Hyinit-0.2.1.jar 替代 HytaleServer.jar 启动,并确保两个 JAR 文件位于同一目录下

如果你通常这样启动服务器:

  java -Xms10G -Xmx10G -jar HytaleServer.jar --assets=../Assets.zip

请改为通过 Hyinit 启动:

  java -Xms10G -Xmx10G -jar Hyinit-0.2.1.jar --assets=../Assets.zip

Hyinit 会自动找到 HytaleServer.jar。若要指向特定的服务器 JAR,请传递 --server-jar=<路径>。若要从额外目录加载早期插件,请传递 --early-plugins=<目录1,目录2>

现在,将依赖于 Hyinit Mixin 环境的模组 JAR 安装到 earlyplugins 文件夹中。

❓ 为什么不直接用早期插件?

标准早期插件由服务器加载,此时类加载已经开始。这个沙箱限制了哪些 Mixin 功能可用以及你能触及哪些类。

Hyinit 则取而代之进行引导:

  其他 Mixin 引导程序 Hyinit
启动模式 标准早期插件 implements ClassTransformer 替换启动器;拥有自己的类加载器
类加载 委托给服务器现有的加载器 自身定义类,控制整个图
@Accessor / @Invoker / 接口注入 不可用 支持,通过 transformer.generateClass() 生成合成类
单个 JAR = Mixins 运行时插件 不支持 支持
Hyxin 清单格式 原生 为兼容性而读取

📖 开发者信息

Hyinit 的环境允许所有标准的 Mixin 和 MixinExtras 功能。要注册 Mixin 配置,请将其添加到模组的 manifest.json 中:

  {
    "Mixins": [
      "yourmodid.mixins.json"
    ]
  }

将包含 Mixin 的模组放入 earlyplugins 文件夹。配置在启动时读取,之后加载的类会被转换。

单 JAR 模组

一个 earlyplugins 的 JAR 可以同时作为 Mixin 提供者和运行时插件。在单个 manifest.json 中声明 MainMixins

  {
    "Main": "yourmodid.YourPlugin",
    "Mixins": [
      "yourmodid.mixins.json"
    ]
  }

Hyinit 应用 Mixin,服务器从同一个 JAR 加载 Main。无需拆分为 earlyplugins/mods/

Hyxin 兼容性

使用 Hyxin 格式的 manifest.json 也会被读取:

  {
    "Hyxin": {
      "Configs": [
        "yourmodid.mixins.json"
      ]
    }
  }