欢迎板

欢迎板

模组包作者放入一个JSON文件,玩家首次加入时就能看到欢迎界面。无需其他模组。

欢迎界面

在你的整合包配置文件夹中放入一个 JSON 文件,每位玩家在首次加入时都会看到一个欢迎界面。无需 FancyMenu、无需 Better Compatibility Checker,也不需要其他任何模组。

这是给整合包作者用的,不是给玩家用的。模组会读取 config/welcome_board/welcome.json,并展示一个包含标题、正文文本、可选图片以及一行链接按钮的界面。每位玩家只会看到一次此界面,之后不再显示——除非你增加 revision 数字,那样它才会再显示一次。

仅客户端模组,没有服务端组件——将其放入整合包的客户端模组中即可,大功告成。

内容文件

{
  "revision": 1,
  "title": "欢迎来到示例整合包",
  "body": [
    "感谢下载。开始前有几件事需要了解:",
    "合成配方除维基上注明的内容外均未更改。",
    "如果遇到问题,请加入我们的 Discord 服务器。"
  ],
  "image": {
    "id": "welcome_board:textures/gui/logo.png",
    "anchor": "top",
    "width": 128,
    "height": 64
  },
  "buttons": [
    { "text": "维基百科", "url": "https://example.com/wiki", "anchor": "bottom_left" },
    { "text": "Discord", "url": "https://discord.gg/example", "anchor": "bottom_right" }
  ],
  "close_text": "知道了"
}
  • anchor 可接受 top、top_left、top_right、center、left、right、bottom、bottom_left、bottom_right。无法识别或缺失的值将回退为 center。
  • 对于按钮,只有锚点的水平部分起作用——top_left/left/bottom_left 都表示“左对齐”,top_right/right/bottom_right 都表示“右对齐”,其余值则居中。按钮总是位于面板底部单独的一行;其锚点的垂直部分会被忽略。
  • 每个字段都是可选的,并且独立地拥有默认值。缺少 title 的文件仍会显示标题为“欢迎”的界面;格式错误的 buttons 条目会被丢弃,其余部分仍会正常渲染。你在这里设置错误不会导致界面无法出现——整合包作者在聊天栏(通过 /welcomeboard preview,见下文)或日志中会看到哪些内容被跳过及其原因。
  • 按钮最多 8 个,正文文本最多 32 行,文件本身最大 64 KB;超出部分将被丢弃并记录警告日志,而不会破坏界面。实际上,在典型的面板宽度下,一行大约能容纳四个按钮——多余的按钮会从末尾被丢弃,所以请把重要的链接放在前面。

多页面

位于 config/welcome_board/ 中除 seen.json 之外的任何文件,都会作为独立的内容块被加载,并以文件名作为标识。welcome.json 和 patch_notes.json 可以共存,并且会被独立追踪——它们各自拥有独立的读取状态和独立的 revision 数字。

命令

/welcomeboard preview 会按需打开你自己的界面,使用 welcome.json 当前的配置,并且不会修改读取状态——你可以用它来在编辑文件时进行检查。解析器产生的任何警告(错误的 JSON、被丢弃的按钮、缺失的字段)会同时打印到你的聊天栏中,因此一个拼写错误会立即显现,而不会静默地不产生任何效果。

此命令在此版本中仅支持 NeoForge。在 Fabric 上,界面本身功能相同;只是缺少预览命令。

行为说明

  • 在加入世界后等待约一秒,然后检查另一个模组自己的首次加入界面(如 Origins 等)是否已经打开。如果是,它会再等待最多 3 秒让其关闭,如果仍未关闭,则会放弃本次会话并记录原因——它绝不与其他模组抢夺界面显示权。
  • 读取状态是按服务器/世界分别记录的,而不是按游戏实例:同一个整合包在两个不同的服务器上,会在每个服务器各显示一次欢迎界面。
  • 配置文件中有一个设置:enabled。

此版本不包含的功能

  • 无服务端权威内容推送(文件存在于每个客户端)
  • 单个界面内无多页面导航
  • 按钮不能执行命令——按钮只能打开 URL
  • 每个内容文件仅支持一张图片

安装到客户端。无依赖项,也无需在服务端安装任何东西。

保留所有权利。可免费收录于 CurseForge 和 Modrinth 的整合包中(包含商业化的整合包)——无需许可,无需署名。源代码已公开,你可以确切地了解其功能。

源代码与问题反馈:https://github.com/KURONAMI333/welcome-board