
HyCraft 跨平台联机
让 Minecraft 玩家连接您的 Hytale 服务器!
HyCraft
HyCraft 是一个 Hytale 服务器插件,用作协议桥,允许 Minecraft Java 版 (1.21.11) 客户端直接连接到 Hytale 服务器。
其工作原理是在 Hytale 服务器进程中启动一个并行的 TCP 服务器。它拦截传入的 Minecraft 数据包,实时将其转换为 Hytale 的内部协议,并转发给游戏引擎。这使得 Minecraft 玩家无需任何客户端修改即可加入 Hytale 世界。
⚠️ 早期开发状态
该项目目前处于 早期开发 阶段。功能不完整,预计存在错误,并且 API 可能会发生变化。
测试服务器:
mytale.online(默认 MC 端口 25565,默认 Hytale 端口 5520)
功能
- 协议转换: 在 Minecraft 1.21.11(协议 774)和 Hytale 之间进行实时转换。
- 身份验证: 通过
sessionserver.mojang.com提供完整的 Mojang 身份验证支持(在线模式)。 - 世界渲染:
- 动态区块转换(Hytale 区块 → Minecraft 区块)。
- 方块调色板映射。
- 生物群系转换。
- 实体同步:
- 实体生成、移动和旋转。
- 元数据同步(名称、生命值、装备)。
- 动画转换(挥动、受伤、死亡)。
- 交互:
- 方块破坏和放置逻辑。
- PVP 和 PvE 战斗系统(计算伤害、击退和冷却)。
- 复杂交互处理(连锁、充能交互)。
- 物品栏:
- 快捷栏和物品栏同步。
- 物品映射(Hytale 物品 → Minecraft 等效物品)。
……更多功能即将推出!
安装
前提条件
- 一个 Hytale 服务器实例。
- Java 25。
设置
- 下载或构建最新的
HyCraft-1.0-SNAPSHOT.jar版本。 - 进入你的 Hytale 服务器目录。
- 将 jar 文件放入
mods/文件夹。 - 启动 Hytale 服务器。
- HyCraft 将在端口
25565(可配置)上启动一个 Minecraft 监听器。
HyCraft Mixins(可选)
HyCraft Mixins 是一个可选模块,它使用 Hyxin 将 Mixin 补丁应用到 Hytale 服务器内部。这使得能够实现常规插件 API 无法实现的更深层次集成,例如拦截交互链和玩家档案查找。
工作原理
Hytale 在服务器完全启动之前加载早期插件,这允许 Hyxin 在加载时转换服务器类。HyCraft Mixins 挂接到此过程,以修改特定的服务器行为,如交互处理和玩家档案解析。
由于 Hytale 的 TransformingClassLoader 存在类加载器限制,mixin 注入的代码无法直接引用插件环境中的类。因此,HyCraft Mixins 通过 System.getProperties() 桥使用 MethodHandle 在运行时调用钩子与核心插件通信。这与 OrbisGuard 等其他 Hytale mixin 插件使用的方法相同。
要求
- 在
earlyplugins/文件夹中的 Hyxin jar。 - 在
mods/文件夹中的 HyCraft 核心插件(必需的依赖项)。
设置
- 下载或构建
Hyxin.jar并将其放入服务器earlyplugins/文件夹。 - 下载 或构建
HyCraft-Mixins.jar并将其放入服务器earlyplugins/文件夹。 - 确保像往常一样在
mods/中安装了核心HyCraft插件。 - 启动服务器。你应该会在控制台中看到
HyCraft mixins loaded!。
类加载器限制
Hytale 的 TransformingClassLoader 仅委托给平台类加载器(JDK 类),并且不会回退到早期插件类所在的应用程序类加载器。这意味着 mixin 注入的代码无法使用 CallbackInfo.cancel()、CallbackInfoReturnable.setReturnValue() 或直接引用任何早期插件类。所有跨类加载器的通信都必须通过 JVM 全局机制(如 System.getProperties())进行。这是已知的 Hytale 平台限制,而非 Hyxin 或 Mixin 的错误。
LuckPerms 支持
HyCraft 在 Minecraft 玩家用户名前添加配置的 player_prefix(默认为 "."),导致用户名变为 .PlayerName。LuckPerms 默认认为这些用户名无效,从而阻止诸如 /lp user .PlayerName 之类的命令正常工作。
要解决此问题,请打开你的 Luckperms/config.yml 并设置:
allow-invalid-usernames: true
这允许 LuckPerms 正确识别和管理带有前缀的玩家名称。
配置
首次运行时,配置文件将在 mods/HyCraft/main.json 生成。
| 选项 | 描述 | 默认值 |
|---|---|---|
port |
Minecraft 服务器将监听的 TCP 端口。 | 25565 |
player_prefix |
添加到通过 Minecraft 连接的玩家用户名前的字符串。 | "." |
item_notification |
接收物品时,动作栏消息的格式。 | ... |
log_debug |
启用详细调试日志以诊断问题。 | false |
server_icon |
MC 服务器图标文件的路径,相对于 HyCraft 目录(必须是 64x64 PNG)。 | icon.png |
从源代码构建
此项目需要 Java 25 来构建。
克隆仓库:
git clone https://github.com/EdwardBelt/HyCraft.git cd HyCraft使用 Gradle 构建:
# Linux/macOS ./gradlew shadowJar # Windows gradlew.bat shadowJar编译后的工件将位于
core/build/libs/。
贡献
欢迎并高度赞赏所有贡献。请随时提出问题、建议功能或提交拉取请求。
许可证
根据 MIT 许可证分发。有关更多信息,请参阅 LICENSE。
联系方式
- Discord:
@edwardbelt - 社区: HyCraft Discord
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。