催化剂

催化剂

性能无妥协。

早期插件

Catalyst Banner

Hytale Version Java Version License Downloads

安装特性使用社区贡献


❓ Catalyst 是什么?

  • 它是面向客户端和服务器的终极 即插即用、提升性能 模组,在不影响游戏玩法的前提下获得更高性能。

📝 为什么选择 Catalyst?

  1. Catalyst 只优化性能。它不会修改:
    • 任何游戏机制
    • 视觉效果
    • 或行为
  2. 优化会全局自动应用。
  3. 所有优化都可以通过游戏内的 GUI 在运行时切换和调整,无需重启。
  4. 设计为与其他模组、Early Plugins 和 Hyxin Mixin 框架协同工作。

🔧 工作原理

Catalyst 使用 ASM 字节码操作,在 Hytale 类被 JVM 加载时直接将优化注入其中。

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Hytale Server  │ ──▶│    Catalyst     │ ──▶│ Optimized Code  │
│                 │     │                 │     │   (Bytecode)    │
└─────────────────┘     └─────────────────┘     └─────────────────┘

这种方法提供:

  1. 零运行时开销 — 优化在加载时直接嵌入字节码
  2. 无需修改 JAR 文件 — 无需修改游戏文件即可生效
  3. 完全可逆 — 只需删除插件即可恢复原始行为
  4. 线程安全切换 — 所有配置字段都是 volatile 的,确保运行时更改安全:无漏洞

📥 安装

对于服务器所有者

  1. 下载 来自 Release 页面 的最新 JAR 文件
  2. 放置 到你的 early-plugins/ 文件夹:
平台 路径
Windows C:\Users\YourUsername\AppData\Roaming\Hytale\UserData\early-plugins
Linux (Flatpak) ~/.var/app/com.hypixel.HytaleLauncher/data/Hytale/UserData/early-plugins/
macOS ~/Library/Application Support/Hytale/UserData/early-plugins/
  1. 启动 你的服务器或单人世界

⚠️ 重要提示:Catalyst 需要同时放置在 early-plugins/mods/ 文件夹中。Early Plugin 需要在服务器启动前加载以拦截类加载,而 Mod 则用于命令功能和 UI 显示。


📊 性能结果

基准测试数据即将推出

区块生成性能

基准测试数据即将推出

┌────────────────────────────────────────────────────────────┐
│  Vanilla:   ████████████████████████████████████  100%     │
│  Catalyst:  ██████████████████████████            ~70%     │
└────────────────────────────────────────────────────────────┘

实体 Tick 性能

基准测试数据即将推出

光照传播性能

基准测试数据即将推出

测试环境:

  • CPU:你的 CPU 型号
  • RAM:你的 RAM 容量
  • Hytale 版本:2026.01.17
  • Java:OpenJDK 25

✨ 特性

Catalyst 提供了一整套服务端优化方案,所有配置均可运行时调整:

运行时优化

设置 描述 默认值
实体视距 实体同步距离的可配置倍率 32 区块/块
区块加载速率 控制每 Tick 发送的区块数量以平衡加载速度 vs TPS 4 区块/Tick

寻路

设置 描述 默认值
最大路径长度 路径中的最大节点数 200
开放节点限制 A* 算法开放集大小限制 80
总节点限制 每次寻路的最大访问节点数 400

区块生成

设置 描述 默认值
线程池大小 用于区块生成的工作线程数 CPU 核心数
缓存大小 生成器、洞穴和预制结构缓存大小 50k / 5k / 50
线程优先级 工作线程优先级 5 (正常)

光照

设置 描述 默认值
跳过空白区域 对没有光照数据的固体空气区域跳过光照传播 关闭

视觉效果

设置 描述 默认值
粒子效果 切换服务端粒子效果 开启
动画 切换服务端 NPC 动画 开启

缓存

设置 描述 默认值
方块区域缓存 缓存最后访问的 BlockSection 以用于 Y 轴迭代模式 关闭
方块类型缓存 按方块 ID 缓存 BlockType 查找 关闭
本地区块缓存 光照期间用于区块访问的 2 槽 LRU 缓存 关闭

高级优化

设置 描述 默认值
方块实体休眠 跳过对未更改的空闲方块实体进行 Tick 更新 关闭
属性重计算节流 降低实体属性重计算的频率 关闭
方块更新批处理 跟踪并批处理方块更新通知 关闭
洪水填充限制 防止复杂地形生成时出现延迟峰值 关闭
寻路池 使用节点对象池减少 GC 压力 关闭

🖥️ 使用

游戏内设置

使用以下命令打开设置菜单:

/catalyst menu

设置 GUI - 常规选项卡 截图即将推出

设置 GUI - 高级选项卡 截图即将推出

设置 GUI - 搜索功能 截图即将推出

GUI 特点:

  • 选项卡界面 — 常规、光照、寻路、视觉和高级选项卡
  • 实时滑块 — 调整值并即时查看变化
  • 搜索功能 — 快速查找任何设置
  • 一键重置 — 单击按钮恢复所有默认值

设置会自动保存到 mods/com.criticalrange_Catalyst/catalyst.json

命令

命令 描述
/catalyst 打开设置 GUI
/catalyst status 显示当前优化状态
/catalyst reload 从文件重新加载配置

⚙️ 配置

Catalyst 将其配置存储为 JSON 格式:

mods/com.criticalrange_Catalyst/catalyst.json

你可以直接编辑此文件,然后使用 /catalyst reload 应用更改,无需重启。

示例配置

{
  "entityDistanceEnabled": false,
  "entityViewMultiplier": 32,
  "chunkRateEnabled": false,
  "chunksPerTick": 4,
  "pathfindingEnabled": false,
  "maxPathLength": 200,
  "openNodesLimit": 80,
  "totalNodesLimit": 400,
  "chunkPoolSizeEnabled": false,
  "chunkPoolSize": 8,
  "chunkCacheSizeEnabled": false,
  "generatorCacheSize": 50000,
  "caveCacheSize": 5000,
  "prefabCacheSize": 50,
  "chunkThreadPriorityEnabled": false,
  "chunkThreadPriority": 5,
  "lightSkipEmptyEnabled": false,
  "particlesEnabled": true,
  "animationsEnabled": true,
  "blockSectionCacheEnabled": false,
  "blockTypeCacheEnabled": false,
  "blockTypeCacheSize": 256,
  "localChunkCacheEnabled": false,
  "blockEntitySleepEnabled": false,
  "blockEntitySleepInterval": 20,
  "statRecalcThrottleEnabled": false,
  "statRecalcInterval": 5,
  "blockUpdateBatchingEnabled": false,
  "blockUpdateBatchSize": 64,
  "floodFillLimitEnabled": false,
  "floodFillMaxIterations": 5000,
  "pathfindingPoolEnabled": false,
  "pathfindingPoolSize": 512
}

✅ 兼容性

要求 版本
Hytale 2026.01.17+
Java 25+
Hyxin 兼容 ✓
其他 Early Plugins 兼容 ✓

已知限制

  • Catalyst 必须放置在 early-plugins/ 文件夹,而不是 mods/
  • 某些优化默认关闭以确保稳定性
  • 实验性功能在生产环境使用前应先进行测试

💬 社区

平台 链接
Discord 即将推出
问题反馈 报告 Bug
讨论 功能请求与创意

🙇 获取帮助

如需技术支持(包括安装问题和崩溃),请:

  1. 查看下面的 常见问题
  2. 搜索 现有问题
  3. 加入我们的 Discord 服务器获取实时帮助

📬 报告问题

发现 Bug?请 提交 Issue 并包含:

  • Hytale 版本
  • Catalyst 版本
  • 重现步骤
  • 错误日志(如果适用)

❓ 常见问题

Catalyst 会影响游戏玩法吗?

不会。Catalyst 仅优化性能——它不会改变任何游戏机制、视觉效果或行为。你的游戏体验将与原始 Hytale 完全相同。

在生产服务器上使用安全吗?

Catalyst 是一个实验性的引导程序。虽然我们努力保证稳定性,但我们建议:

  • 首先在非生产世界进行测试
  • 保持定期备份
  • 在启用高级优化之前使用默认设置

我可以将其与其他模组一起使用吗?

可以!Catalyst 设计为与以下内容兼容:

  • 其他 Early Plugins
  • Hyxin(Hytale 的 Mixin 框架)
  • mods/ 文件夹中的常规 Hytale 模组

为什么 Catalyst 需要同时放置在 early-plugins 和 mods 中?

Catalyst 使用字节码转换,必须在类加载之前进行。early-plugins/ 文件夹由 Hytale 的引导进程加载,允许 Catalyst 在类加载到 JVM 时拦截和修改它们。mods/ 文件夹由游戏加载,允许 Catalyst 作为模组使用。这是一种变通方法,因为 Hytale 没有提供在不使用模组的情况下加载命令和 UI 的方法。

如何知道 Catalyst 是否在工作?

在游戏中运行 /catalyst status 查看所有优化的当前状态。在启动过程中,你应该还会在服务器控制台中看到 [Catalyst] 消息。

我可以禁用特定优化吗?

可以!每个优化都可以单独切换,通过以下方式:

  • 游戏内 GUI (/catalyst)
  • 配置文件 (catalyst.json)
  • 命令(编辑配置后使用 /catalyst reload

🛠️ 针对开发者

从源码构建

# 克隆仓库
git clone https://github.com/CriticalRange/Catalyst.git
cd Catalyst

# 构建 JAR
./gradlew build

# 启动加载了模组的服务器
./gradlew runServer

# 通过官方启动器启动客户端
./gradlew runClient

构建产物可在 build/libs/ 目录下找到。

创建自定义转换器

继承 BaseTransformer 并通过 META-INF/services 注册:

public class MyTransformer extends BaseTransformer {
    @Override
    protected boolean shouldTransform(String className) {
        return className.equals("com.hypixel.hytale.some.TargetClass");
    }

    @Override
    protected ClassVisitor createClassVisitor(ClassWriter cw, String className) {
        return new MyClassVisitor(cw);
    }

    @Override
    public String getName() {
        return "MyTransformer";
    }
}

所有配置字段都是 volatile 的,以确保线程安全的运行时切换。

项目结构

Catalyst/
├── src/main/java/com/criticalrange/
│   ├── Catalyst.java              # 主插件类
│   ├── CatalystConfig.java        # 配置字段
│   ├── CatalystConfigFile.java    # JSON 持久化
│   ├── transformer/               # 字节码转换器
│   │   ├── BaseTransformer.java
│   │   ├── EntityDistanceTransformer.java
│   │   ├── ChunkRateTransformer.java
│   │   └── ...
│   └── util/
│       └── CatalystSettingsGui.java
└── src/main/resources/
    ├── META-INF/services/         # 转换器注册
    └── Common/UI/Custom/Pages/    # GUI 定义

目录结构 (运行时)

~/.var/app/com.hypixel.HytaleLauncher/data/Hytale/
└── install/
    ├── early-plugins/              # Catalyst JAR 放置于此
    ├── mods/
    │   └── com.criticalrange_Catalyst/
    │       └── catalyst.json       # 配置文件
    └── release/package/game/latest/
        ├── Server/HytaleServer.jar
        └── Assets.zip

🌟 贡献与支持开发

欢迎贡献!以下是你可以提供帮助的方式:

  1. 报告 Bug — 发现问题?提交 Bug 报告
  2. 建议功能 — 有想法?开启讨论
  3. 提交 PR — 欢迎代码贡献!
  4. 改进文档 — 帮助使文档更好
  5. 为仓库加星 — 表达你的支持!

在提交 PR 之前,请:

  1. Fork 该仓库
  2. 创建一个功能分支 (git checkout -b feature/amazing-feature)
  3. 提交你的更改 (git commit -m 'Add amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开一个 Pull Request

🙏 鸣谢

  • CriticalRange — 首席开发者
  • ASM Team — 字节码操作库
  • Hypixel Studios — 创造了这款令人惊叹的游戏
  • 所有贡献者 — 每个帮助改进 Catalyst 的人

📜 许可证

Catalyst 采用 MIT 许可证 授权 —— 你可以对此代码进行任何操作,只需保留版权声明。

查看 LICENSE 获取完整的许可证文本。


为 Hytale 社区用 ❤️ 制作