亚历克的径向菜单![测试版]

亚历克的径向菜单![测试版]

Hytale 的独立径向菜单框架模组。

图书馆

Alec 的径向菜单

Hytale 的独立径向菜单框架模组。

V1 范围

  • 资产驱动的径向菜单,位于 Server/RadialMenu/Menus/*.json
  • 菜单标识为资产键(文件/路径键)。RadialMenuConfig 没有 Id 字段。
  • 物品交互入口点:Type: "RadialMenuInteraction"
  • API 入口点:RadialMenuApi
  • 内置的选项操作类型:
    • ExecuteCommand
    • InvokeRegisteredAction
  • 执行模式:
    • SelectAndArm(菜单点击仅选择;通过 ExecuteSelected 执行)
    • SelectAndRun(菜单点击立即执行并更新选择)

RadialMenuConfig 字段

  • Enabled(默认 true
  • ItemIds[](菜单可根据手持物品 ID 自动解析)
  • ExecutionMode(默认 SelectAndArm
  • DefaultOptionId(可选)
  • Options[](必需,1..8)
  • Visual(可选,默认为向量模式)

Visual 字段

  • RenderModeVector(默认)或 Texture
  • Geometry
    • OuterDiameterPx
    • InnerDiameterPx
    • LabelRadiusPx
    • CenterDiameterPx
  • BorderThicknessPx
  • Label.FontSize
  • States
    • DefaultHoverPressedSelectedDisabled
    • 每个状态支持 FillColorTextColorBorderColor
  • TextureSet
    • PresetLegacyDefault
    • Prefix(使用相同命名规则的自定义纹理集路径)

选项类型

  • ExecuteCommand
    • Id,可选的 Label/LabelKeyCommand,可选的 VisualOverride
  • InvokeRegisteredAction
    • Id,可选的 Label/LabelKeyActionId,可选的 Payload,可选的 VisualOverride

VisualOverride 字段(选项)

  • LabelFontSize(可选)
  • States(可选的部分状态/颜色覆盖)

交互用法

RadialMenuInteraction 支持:

  • MenuId(可选的菜单键覆盖)
  • CommandIdOpenMenuExecuteSelected
  • ExecutionMode(可选的每绑定模式覆盖)

包含示例物品:

  • Server/Item/Items/Commands/Alec_Radial_Menu_Example.json

API 用法

从另一个模组中调用:

RadialMenuApi api = RadialMenuMod.getApiInstance();
if (api != null) {
    AutoCloseable registration = api.registerActionHandler("Example.Ping", context -> {
        // 自定义操作逻辑
        return true;
    });

    // 可选直接控制:
    // api.openMenu(player, "menus/example");
    // api.executeSelected(player, "menus/example");
}

构建

.\mvnw.cmd test
.\mvnw.cmd package

Maven 配置文件

# 构建 + 安装 jar 到 Server/mods 和 UserData/Mods
.\mvnw.cmd -Pinstall-plugin package

# 构建 + 安装 + 启动 Hytale 服务器
.\mvnw.cmd -Prun-server package

# 使用预发布安装路径(可与上述配置文件组合使用)
.\mvnw.cmd -Dprerelease=true -Pinstall-plugin package