广播系统

广播系统

一个轻量级的Hytale插件,可发送可配置的自动和手动聊天与标题公告,以及加入消息,支持传统和颜色代码以及占位符。

实用

1.1 版本将是目前的最终版本。我更倾向于拥有一个可靠且无错误的插件,而不是一个包含多种方法但存在错误或卡顿的插件

 

正在寻找一种简单的方式来展示服务器提示、规则、Discord 链接或公告吗?BroadcastSystem 提供了 两个独立的自动公告系统(聊天 + 标题),此外还有加入消息、手动命令、& 颜色代码、占位符和一个清晰的 JSON 配置文件。

 

功能特性

  • 聊天公告(支持多行)
  • 标题公告(事件标题 / 屏幕中央的“大标题”)

它还包含:

  • 手动公告命令
  • 加入消息(对加入者的私密消息 + 对全体的公开消息)
  • ✅ Minecraft 风格的 & 颜色代码
  • ✅ 占位符,如 %player%%joiner%
  • ✅ 简单的 JSON 配置文件config.json

功能特性

1) 两个独立的公告系统

每个系统都有自己的设置:

  • 启用/禁用
  • 间隔(秒)
  • 随机模式(洗牌)或轮询顺序

因此你可以设置:

  • 聊天公告每 120秒 一次
  • 标题公告每 300秒 一次
  • 或者完全禁用一个系统。

2) 共享公告池,每条公告可配置目标

你可以在 "announcements" 中定义公告,并通过以下方式选择它们发送的目标:

  • "targets": ["CHAT"]
  • "targets": ["TITLE"]

每条公告可以包含:

  • "chat" 内容(多行文本块)
  • "title" 内容
  • "subtitle" 内容(可选)

3) 加入消息(可选)

两个专用的加入消息部分:

  • joinSelf:仅发送给加入的玩家
  • joinServer:广播给所有在线玩家

两者都支持:

  • 聊天和/或标题目标
  • 多行文本块
  • 占位符
  • 可选禁用原版加入消息

4) 文本格式化

传统颜色代码

支持类似 Minecraft 的代码:

  • 颜色:&0&9&a&f
  • 格式:&l(粗体),&o(斜体),&r(重置)
  • 同时支持 &§

多行文本块

对于聊天消息(以及加入聊天),你可以使用:

"chat": "----\nLine 1\nLine 2\n----"

或者简单地使用 \n 换行符。

5) 占位符

  • %player%
    替换为接收消息的玩家名称
  • %joiner%
    替换为加入服务器的玩家名称(仅对加入消息有效)。
  • %world%
    替换为接收消息玩家当前所在的世界(尽力而为:根据 API 可用性显示名称/ID/UUID)。
  • %players_online%
    替换为当前在线的玩家数量
  • %online%%players_online% 的别名)
    同上,更短的名称。
  • %server_uptime%
    替换为服务器/插件运行时间(自插件启动以来的时间),格式如下:
    12m 05s3h 12m 09s2d 04h 01m 33s
  • %time%
    当前服务器本地时间HH:mm:ss
    示例:21:43:10
  • %date%
    当前服务器本地日期yyyy-MM-dd
    示例:2026-01-15
  • %datetime%
    当前服务器本地日期 + 时间yyyy-MM-dd HH:mm:ss
    示例:2026-01-15 21:43:10
  • %day%
    当前星期几(大写):MONDAYTUESDAY 等。
  • %timezone%
    当前服务器系统时区 ID(示例:Europe/Paris

随机整数

  • %random_int:min:max%
    生成一个介于 minmax 之间(包含边界)的随机整数
    示例:

    • %random_int:1:100%42
    • %random_int:-5:5%-1
    • %random_int:10:10%10

随机选择

  • %random_choice:a|b|c%
    从一个由 | 分隔的列表中随机选择一项
    示例:

    • %random_choice:阅读 /rules|加入 Discord|使用 /help%
    • %random_choice:你好|嗨|嘿%

支持在选项内使用占位符,例如:

  • %random_choice:在线人数: %online%|世界: %world%|时间: %time%%

命令

主命令:/hb

/bs reload

重新加载 config.json 并重启公告调度器。

/bs status

显示当前状态:

  • 聊天/标题系统是否启用
  • 间隔时间
  • 公告池大小
  • 配置文件路径

/bs now [chat|title|both]

立即从配置的公告池中发送一条公告。

示例:

  • /bs now
  • /bs now chat
  • /bs now title

/bs start [chat|title|both]

开始广播。

示例:

  • /bs start
  • /bs start chat

/bs stop [chat|title|both]

停止广播。

示例:

  • /bs stop
  • /bs stop title

/bs send chat <message...>

向所有玩家发送一条手动聊天公告。

示例:

  • /bs send chat &aHello world!

/bs send title <message...>

向所有玩家发送一条手动标题公告。
支持使用 \n 强制换行显示多行标题。

示例:

  • /bs send title &e服务器重启\n&7倒计时 5 分钟

权限

管理员权限(完全控制)

- broadcast_system.admin
允许:

  • reload
  • status
  • start/stop
  • now

发送权限(仅限手动广播)

- broadcast_system.send
允许:

  • /hb send chat ...
  • /hb send title ...

管理员回退

如果你的服务器使用角色权限,插件也允许:

  • role.operator

配置

插件会创建:

  • mods/Yanisssch_BroadcastSystem/config.json

关键部分:

  • chat
  • title
  • joinSelf
  • joinServer
  • announcements

重要提示

  • 如果 "showSubtitle": false,即使提供了副标题也会被隐藏。
  • 如果副标题为空,则会使用 title.defaultSubtitle(当启用时)。
  • 如果加入配置中的 disableDefaultJoinMessage 为 true,原版加入广播将被禁用。
  • 不要为标题使用颜色代码,这不起作用……
  • 不要为公告使用 BOTH 目标(正在修复与此目标相关的问题)
  • 编辑配置文件时要小心,请保留备份以防出错,逗号和花括号非常重要,不要在聊天或标题内容中使用双引号,这可能会破坏配置文件本身 ;)
  • 花时间测试插件并阅读整个配置文件
  • 另外,这个插件是我为 Hytale 制作的第一个插件,我仍在学习 API,所以如果你发现任何错误,请随时在 Discord 上告诉我 "Yanisssch_Sori"

示例配置

{
  "_comment": "BroadcastSystem config.json - 示例。颜色代码(仅适用于聊天 - 不适用于标题!):&a, &6, &l, &r... 占位符:%player% = 接收者,%joiner% = 加入的玩家。'\n' 块仅允许聊天使用多行文本,标题不行!",
  "_help_targets": "JoinSelf 和 JoinServer 的目标可以是:[\"CHAT\"], [\"TITLE\"],公告的目标可以是 [\"BOTH\"](或 [\"CHAT\",\"TITLE\"])。",

  "chat": {
    "_comment": "聊天中的自动公告。",
    "enabled": true,
    "intervalSeconds": 120,
    "shuffle": false,
    "prefix": "&6&l[信息]&r "
  },

  "title": {
    "_comment": "作为中心标题(EventTitle)的自动公告。",
    "enabled": true,
    "intervalSeconds": 300,
    "shuffle": false,
    "showSubtitle": true,
    "defaultSubtitle": "&e公告",
    "animate": true
  },

  "joinSelf": {
    "_comment": "仅发送给加入玩家的消息(私密)。",
    "enabled": true,
    "disableDefaultJoinMessage": true,
    "targets": ["BOTH"],
    "chat": "----\n&a嗨 &f%player%&a!\n&7欢迎!请阅读 &f/rules&7 :)\n----",
    "title": "欢迎 %player% 来到服务器名称!",
    "subtitle": "玩得开心 ;)",

    "_example_title": {
      "_comment": "替代示例:显示标题而不是聊天",
      "enabled": false,
      "disableDefaultJoinMessage": true,
      "targets": ["TITLE"],
      "title": "欢迎",
      "subtitle": "&7规则:&f/rules"
    },

    "_example_chat": {
      "_comment": "替代示例:显示聊天而不是标题",
      "enabled": false,
      "disableDefaultJoinMessage": true,
      "targets": ["CHAT"],
      "chat": "----\n&a嗨 &f%player%&a!\n&7欢迎!请阅读 &f/rules&7 :)\n----"
    }
  },

  "joinServer": {
    "_comment": "当有人加入时发送给所有人的消息。",
    "enabled": true,
    "disableDefaultJoinMessage": true,
    "targets": ["CHAT"],
    "chat": "----\n&6&l[JOIN]&r &e%joiner% &a加入了服务器!\n----",

    "_example_both": {
      "_comment": "替代示例:同时发送聊天 + 标题。",
      "enabled": false,
      "disableDefaultJoinMessage": true,
      "targets": ["BOTH"],
      "chat": "----\n&6&l[JOIN]&r &e%joiner% &a加入了服务器!\n----",
      "title": "&a新玩家!",
      "subtitle": "&e%joiner%"
    }
  },

  "_comment": "对于公告,目标不要使用 BOTH(目前正在修复此部分的问题)",
  "announcements": [
    {
      "_comment": "示例 1:聊天多行公告(使用 ----\n 块)。",
      "targets": ["CHAT"],
      "chat": "----\n&b欢迎 &f%player%&b!\n&7请务必阅读 &f/rules&7 :)\n----"
    },

    {
      "_comment": "示例 2:标题公告。",
      "targets": ["TITLE"],
      "title": "欢迎",
      "subtitle": "玩得开心!"
    },

    {
      "_comment": "示例 3:无副标题的标题公告。",
      "targets": ["TITLE"],
      "title": "需要帮助?",
      "subtitle": ""
    },

    {
      "_comment": "示例 4:聊天 Discord 公告。",
      "targets": ["CHAT"],
      "chat": "----\n&bDiscord:&ddiscord.gg/....\n&7快来打招呼吧!\n----"
    }

  ]
}

使用场景

  • 服务器提示 / 规则提醒
  • Discord 链接轮播
  • 活动公告
  • 欢迎消息

安装步骤

  • 下载 .jar 文件
  • 将其放入服务器文件中的 mods 文件夹
  • 重启服务器
  • 检查位于 /mods/Yanisssch_BroadcastSystem 的配置文件
  • 重启服务器或执行 /hbs reload 命令
  • 查看效果
  • 搞定 ;)

支持

你只能通过 Discord 联系我:Yanisssch_Sori(我可能需要 6 到 12 小时才能回复)