菜单信息页面

菜单信息页面

使用原生Hytale风格UI、JSON配置、图片、章节和交互按钮创建精美的游戏内指南、教程和信息页面。

实用

📖 MenuInfoPages

MenuInfoPages 是一个适用于 Hytale 服务器的轻量级信息页面和菜单系统。 使用简单的 JSON 文件创建游戏内的指南、规则、教程、帮助页面、服务器信息、公告和交互式菜单。 每个页面都有自己的命令,并且可以包含格式化文本、图片、区块、操作按钮、玩家或控制台命令,以及可选自动打开行为。 无需编写 Java 代码。


✨ 功能特性

✔ 原生 Hytale 风格界面
✔ 简单 JSON 页面配置
✔ 每个页面对应一个玩家命令
✔ 富文本格式
✔ 最多 5 张顶部图片,自动居中并均匀分布
✔ 最多 5 个内容区块,每个区块可含一张可选图片
✔ 最多 5 个底部操作按钮
✔ 本地和远程 PNG 图片
✔ 玩家和控制台命令执行
{player}{uuid} 占位符
✔ 主要、次要和危险按钮样式
✔ 可选的命令延迟和页面关闭行为
✔ 一次性、始终和可关闭的自动打开模式
✔ 本地化 不再显示 选项,支持区域语言回退
✔ 可选的世界和实例过滤
/infopages reload
/infopages newpage <名称> <命令>
✔ 内置示例页面和自动更新的 README 文档


🚀 安装与创建页面

MenuInfoPages.jar 放入服务器的 mods 文件夹,并启动服务器一次。 MenuInfoPages 会创建:

mods/MenuInfoPages/
├── pages/
├── images/
├── reload.yml
└── README.txt

mods/MenuInfoPages/pages/ 内的每个 .json 文件都代表一个独立页面。 示例:

{
  "command": "rules",
  "title": "服务器规则",
  "intro": "请在游戏前阅读规则。",
  "images": [],
  "sections": [],
  "buttons": [],
  "footer": "玩得开心!"
}

这会创建:

  • /rules
  • 文件名和命令不必相同。 你也可以直接从服务器创建一个页面:
  • /infopages newpage <名称> <命令>
  • 示例:/infopages newpage rules rules
  • 这会创建 rules.json 并立即注册 /rules。 内置的示例页面可以通过以下命令打开:
  • /guide
  • 生成的 example.json 演示了主要配置选项。

重要提示: 示例页面已启用自动打开功能,以便新用户可以立即看到该功能的效果。测试完毕后,在启用另一个页面的自动打开功能之前,将其 autoOpen.enabled 值设置为 false。 现有的页面 JSON 文件永远不会被自动覆盖,因此你的自定义更改会被保留。

  • 生成的 README.txt 会在插件更新时自动更新。
  • 更多配置细节和示例,请参阅 mods/MenuInfoPages/README.txt

🖼️ 图片与区块

将本地 PNG 图片放入:

  • mods/MenuInfoPages/images/ 示例:
mods/MenuInfoPages/images/logo.png

然后仅使用文件名引用它们:

"images": [
  "logo.png"
]

你也可以使用直接的 HTTP/HTTPS PNG URL:

"images": [
  "https://example.com/banner.png"
]

图片支持:

  • 不支持远程 JPG/JPEG 图片
  • 一个页面最多可以显示5 张顶部图片
  • 可见的顶部图片会自动居中并均匀分布在可用空间中。 页面还可以包含最多5 个区块,每个区块包含标题、文本和一张可选图片:
"sections": [
  {
    "title": "开始",
    "text": "前往出生区域开始你的冒险。"
  },
  {
    "title": "经济",
    "text": "在游戏中赚取金钱,并在服务器商店中消费。",
    "image": "economy.png"
  }
]

区块图片:

  • 每个区块最多一张可选图片。
  • 支持本地 PNG 文件名和远程 PNG URL。

🔘 按钮与命令

每个页面支持最多5 个底部操作按钮。 示例:

{
  "text": "出生点",
  "command": "spawn",
  "runAs": "player",
  "close": true,
  "delayMs": 250,
  "style": "primary"
}

按钮选项:

  • 可用样式: primary • secondary • danger
  • 命令可以以以下身份运行: player • console 控制台命令可以使用:
  • {player} — 玩家名称
  • {uuid} — 玩家 UUID 示例:
{
  "text": "领取奖励",
  "command": "reward give {player}",
  "runAs": "console",
  "close": true,
  "style": "primary"
}

其他行为:

  • 命令开头的 / 是可选的。
  • 按钮可以配置延迟。
  • 按钮可以在执行后关闭页面。
  • 按钮也可以仅关闭页面而不执行命令。 示例:
{
  "text": "关闭",
  "close": true,
  "style": "secondary"
}

🚪 自动打开页面

当玩家进入配置的世界或实例时,页面可以自动打开。 示例:

"autoOpen": {
  "enabled": true,
  "mode": "dismissible",
  "version": 1,
  "worlds": [],
  "delayMs": 1500
}

可用模式:

  • once • 每个玩家和页面版本只显示一次页面。
  • always • 只要满足配置的条件就会打开。
  • dismissible • 自动打开并允许玩家选择 不再显示。 语言行为:
  • 关闭选项会根据玩家的客户端语言自动本地化。
  • 支持区域回退,例如 it-CH → it-ITde-CH → de-DEfr-CA → fr-FR
  • 不支持的语言会回退到英语。 页面版本:
  • 页面配置中的 version 字段是内容版本值。
  • 当需要让玩家再次收到更新的 oncedismissible 页面时,请增加此值。 世界过滤:
  • worlds 设置可以将自动打开功能限制在特定世界或实例中。
  • 同一个世界只能启用一个自动打开页面。
  • 如果两个页面为同一个世界启用了自动打开功能,则两个页面都不会自动打开。
  • 如果 worlds 为空,则自动打开页面是全局的,因此只能启用一个全局自动打开页面。

🔄 重载页面与图片

编辑页面文件后,使用:

  • /infopages reload 大多数配置更改无需重启服务器即可生效:
  • 标题和文本
  • 区块
  • 按钮
  • 命令
  • 自动打开设置
  • 添加或移除的页面 重载安全性:
  • JSON 文件在重载前会经过验证。
  • 如果检测到无效页面,当前有效配置将继续保留。 图片重载行为由以下文件控制:
  • mods/MenuInfoPages/reload.yml 推荐的正式环境设置:
reload-images: false

使用此设置:

  • 常规页面配置仍会立即重载。
  • 新增或更改的图片将在下次服务器重启后生效。 在积极创建页面时,你还可以选择使用:
reload-images: true

使用实时图片重载:

  • 本地和远程 PNG 更改可以通过 /infopages reload 应用。
  • 实时图片重载是实验性但可用的
  • 实时图片更新后,已连接的玩家可能会暂时看到不正确或缺失的 UI/HUD 纹理。
  • 重新连接即可恢复正常的界面。

🔐 管理员命令与权限

/infopages reload

  • 无需重启服务器即可重载页面 JSON 文件和配置。
  • 权限:newt.infopages.reload /infopages newpage <名称> <命令>
  • 创建新的 JSON 页面模板并立即注册其页面命令。
  • 权限:newt.infopages.newpage 页面命令:
  • 每个配置的页面都会根据其 JSON 文件中的 command 字段获得自己的玩家命令。

✅ 兼容性

服务端 • 原生 Hytale 风格 UI • 独立 JSON 页面 • 玩家和控制台命令执行 • 多人游戏就绪 • 无永久 HUD 覆盖


AI 披露

ChatGPT 协助制作了封面图、Logo 图、文档、代码清理建议和一般性审查。

  • 所有实现、测试、配置选择、编辑和发布决定均由我手动审查。

⭐ MenuInfoPages Full

对于需要更多功能的服务器,还提供更高级的 MenuInfoPages Full 版本。