DiscordWebhook

DiscordWebhook

仅使用Webhook在Discord中显示聊天和事件。支持多频道!

实用

一个 Hytale 插件,可使用 webhook 将游戏内事件链接到 Discord 频道。该插件会自动向您的 Discord 服务器发送玩家加入、离开、死亡、聊天消息以及服务器生命周期事件。


当前功能

  • 事件配置系统:每个事件类型都有独立的配置文件
  • 占位符系统:动态占位符,如 {player}{message}{deathCause}{time}
  • 时区支持:支持带时区控制的时间占位符(例如 {time-america/los_angeles}
  • 多 Webhook 频道:将不同的事件路由到不同的 Discord 频道
  • 消息自定义:完全控制消息格式(嵌入、纯文本或两者兼有)
  • 事件开关:启用或禁用单个事件
  • 更新检查:检查 Github 发布版本以获取更新,并在有更新时通知您
  • 热重载:无需重启服务器,使用 /dw-reload 即可重新加载配置
  • 默认事件模板:首次启动时,默认事件配置会自动从资源中复制

当前事件

  • 玩家加入事件:当玩家加入服务器时发送可自定义的通知
  • 玩家离开事件:当玩家离开服务器时发送可自定义的通知
  • 玩家死亡事件:当玩家在服务器中死亡时发送可自定义的通知
  • 玩家聊天:将所有玩家的聊天消息转发到 Discord,并可完全自定义
  • 服务器启动:当服务器启动时发送通知
  • 服务器关闭:当服务器关闭时发送通知

安装

  1. 发布页面下载最新版本
  2. DiscordWebhook-x.x.x.jar 文件放入 Hytale 服务器的 mods 文件夹中
  3. 启动服务器以生成配置文件
  4. 编辑 Jemsire_DiscordWebhook/WebhookConfig.json 文件并添加您的 Discord webhook URL
  5. (可选)在 Jemsire_DiscordWebhook/events/ 文件夹中自定义各个事件的配置
  6. 在游戏中输入 /dw-reload 热重载配置以启动插件

注意:默认事件配置将在首次启动时自动创建。您可以自定义它们或保持原样。


配置

首次启动后,配置文件将在您的 mods 文件夹中创建。该插件使用两级配置系统:

  1. WebhookConfig.json:主配置文件,包含 webhook URL 和频道
  2. events/:各个事件的配置文件

获取 Discord Webhook URL

  1. 打开您的 Discord 服务器设置
  2. 转到 集成Webhook
  3. 点击 新建 Webhook 或选择一个现有的 webhook
  4. 复制 webhook URL
  5. 将其粘贴到您的 WebhookConfig.json 文件中

主配置文件 (WebhookConfig.json)

主配置文件位于 Jemsire_DiscordWebhook/WebhookConfig.json

{
  "WebhookLink": "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL_HERE",
  "Version": 2,
  "UpdateCheck": true,
  "WebhookChannels": {
    "default": "https://discord.com/api/webhooks/YOUR_DEFAULT_WEBHOOK_URL",
    "staff": "https://discord.com/api/webhooks/YOUR_STAFF_WEBHOOK_URL"
  }
}

配置选项:

  • WebhookLink:默认 webhook URL(用作备用)
  • Version:配置版本(当前为 2)
  • UpdateCheck:启用/禁用自动更新检查
  • WebhookChannels:频道名称到 webhook URL 的映射(例如 "default"、"staff"、"admin")

事件配置文件

每个事件在 Jemsire_DiscordWebhook/events/ 中都有其自己的配置文件。默认配置会在首次启动时自动创建:

  • PlayerChat.json - 玩家聊天消息
  • PlayerConnect.json - 玩家连接事件
  • PlayerDisconnect.json - 玩家离开事件
  • PlayerDeath.json - 玩家死亡事件
  • Boot.json - 服务器启动事件
  • Shutdown.json - 服务器关闭事件

事件配置结构

{
  "Enabled": true,
  "WebhookChannel": "default",
  "MessageJson": "{\"content\": \"💬 **{player}**: {message}\"}"
}

配置选项:

  • Enabled:启用或禁用此事件(true/false)
  • WebhookChannel:要使用的 webhook 频道(必须与主配置中 WebhookChannels 的一个键匹配)
  • MessageJson:带有占位符的原始 Discord webhook JSON(见下文)

消息格式示例

纯文本消息:

{
  "Enabled": true,
  "WebhookChannel": "default",
  "MessageJson": "{\"content\": \"💬 **{player}**: {message}\"}"
}

嵌入消息:

{
  "Enabled": true,
  "WebhookChannel": "default",
  "MessageJson": "{\"embeds\": [{\"title\": \"📥 玩家加入\", \"description\": \"{player} 已进入世界!\", \"color\": 65280}]}"
}

组合(文本 + 嵌入):

{
  "Enabled": true,
  "WebhookChannel": "default",
  "MessageJson": "{\"content\": \"新玩家!\", \"embeds\": [{\"title\": \"玩家加入\", \"description\": \"{player} 加入了服务器\", \"color\": 65280}]}"
}

带时区的服务器事件:

{
  "Enabled": true,
  "WebhookChannel": "default",
  "MessageJson": "{\"embeds\": [{\"title\": \"🚀 服务器已启动\", \"description\": \"服务器于 {time-america/los_angeles} 启动\", \"color\": 3447003}]}"
}

可用占位符

占位符在运行时会被替换为实际值。在您的 JSON 字符串中使用 {placeholderName}

玩家占位符:

  • {player} - 玩家的用户名或显示名称(取决于上下文)
  • {playerUsername} - 玩家的用户名(别名)
  • {playerDisplayName} - 玩家的显示名称(别名)
  • {playerUuid} - 玩家的 UUID(如果可用)

聊天占位符:

  • {message} - 聊天消息内容
  • {content} - 聊天消息内容(别名)

死亡占位符:

  • {deathCause} - 格式化的死亡消息
  • {deathMessage} - 格式化的死亡消息(别名)
  • {deathMessageRaw} - 原始死亡消息(如果可用)

时间占位符:

  • {time} - 服务器默认时区的当前时间(格式:yyyy-MM-dd HH:mm:ss z
  • {time-<timezone>} - 指定时区的当前时间(例如 {time-america/los_angeles}

时区示例:

  • {time-america/los_angeles} - 太平洋时间(PST/PDT)
  • {time-america/new_york} - 东部时间(EST/EDT)
  • {time-america/chicago} - 中部时间(CST/CDT)
  • {time-america/denver} - 山地时间(MST/MDT)
  • {time-europe/london} - 英国时间(GMT/BST)
  • {time-europe/paris} - 欧洲中部时间(CET/CEST)
  • {time-asia/tokyo} - 日本标准时间(JST)
  • {time-australia/sydney} - 澳大利亚东部时间(AEST/AEDT)
  • {time-utc} - 协调世界时(UTC)

时区说明:

  • 时区名称不区分大小写(例如,AMERICA/LOS_ANGELESamerica/los_angeles 效果相同)
  • 可以使用任何有效的 Java 时区 ID(请参阅 IANA 时区数据库
  • 如果指定的时区无效,系统将默认使用 UTC 并在控制台记录警告
  • 时间格式包含时区缩写(例如 "2026-01-25 10:30:45 PST")

注意:某些占位符在某些事件中不起作用。占位符会自动进行 JSON 转义,因此特殊字符不会破坏您的 webhook 负载。

命令

  • /dw-reload - 无需重启服务器即可重新加载插件配置
    • 权限discordwebhook.reload
    • 使用:仅在配置发生更改时重新加载

本项目是开源的:

欢迎贡献或将其改编为您自己的系统!查看 Github

想获取我所有项目的更新?

加入 Discord!立即加入!