HUD路由器

HUD路由器

允许多个模组同时显示其HUD。作为MultipleHUD的即插即用替代品,具有完全向后兼容性。为开发者提供简单API,玩家无需配置。

实用

HUDRouter

HUDRouter 是作为 MultipleHUD 的现代替代方案而创建的,其设计重点在于更清晰的架构、更便捷的可扩展性以及完全的向后兼容性。

它的作用

Hytale 只允许每个玩家拥有一个自定义 HUD。如果您有多个模组都想要显示它们自己的 HUD(例如 AscendRPG、BetterMap、EasyHunger),则只有最后一个模组的 HUD 会生效。HUDRouter 将它们全部合并到一个 HUD 中,这样每个模组都可以同时显示其界面。

安装方法

  1. 从 Releases 下载 HUDRouter-X.X.X.jar
  2. 将其放入您的 UserData/Mods/ 文件夹中
  3. 移除 MultipleHUD-x.x.x.jar(如果您有的话)
  4. 完成 - 无需配置,所有现有模组将自动正常工作

面向开发者

现有的 MultipleHUD 模组

无需修改代码。HUDRouter 包含一个兼容层 - 所有 MultipleHUD.getInstance().setCustomHud() 调用都会自动正常工作。

新模组(反射 - 推荐方式)

所有 API 方法均为 静态 方法。无需编译时依赖:

try {
    Class<?> router = Class.forName("com.hudrouter.HudRouterPlugin");
    Method setHud = router.getMethod("setChannelHud",
        Player.class, PlayerRef.class, String.class, CustomUIHud.class);
    setHud.invoke(null, player, playerRef, "MyMod", myHud);
} catch (ClassNotFoundException e) {
    // HUDRouter 未安装 - 回退方案
    player.getHudManager().setCustomHud(playerRef, myHud);
}

可用的静态方法

// 注册 / 更新
HudRouterPlugin.setChannelHud(player, playerRef, "MyMod", myHud);
HudRouterPlugin.setChannelHud(player, playerRef, "MyMod", myHud, 10); // 带优先级

// 移除
HudRouterPlugin.removeChannelHud(player, "MyMod");

// 查询
HudRouterPlugin.getActiveChannels(player);
HudRouterPlugin.hasChannel(player, "MyMod");
HudRouterPlugin.getChannelCount(player);

可选清单条目

{
  "OptionalDependencies": {
    "com.hudrouter:HUDRouter": "*"
  }
}

贡献 / 源代码

完整源代码可在 GitHub 上获取:

https://github.com/Alien4042x/Hytale-HUDRouter-Mod

如果您想改进路由器、修复错误或扩展功能,欢迎提交 Issue 或 Pull Request。