
事件通知
一个Hytale服务器插件,当服务器事件发生时,会向外部服务发送实时通知。当玩家加入、服务器启动/停止等事件发生时,通过ntfy(手机、桌面或网页)、Discord、Slack或自定义Webhook接收通知。
Hytale EventNotifications 插件
一个 Hytale 服务器插件,能在服务器事件发生时向外部服务发送实时通知。当玩家加入、服务器启动/停止等事件发生时,通过 ntfy(手机、桌面或网页)、Discord、Slack 或自定义 Webhook 获得通知。
支持的通知服务
- ntfy - 免费、开源推送通知(推荐)
- Discord - 支持富嵌入的 Webhook 通知
- Slack - 支持附件的 Webhook 通知
- Webhooks - 通用 HTTP Webhook,用于自定义集成
安装
- 从发布页下载最新的
EventNotifications.jar - 将 JAR 文件放入 Hytale 服务器的
mods文件夹 - 启动服务器一次以生成默认配置文件
- 编辑
config.json来配置你的通知目标 - 重启服务器
快速开始(ntfy)
获取通知的最快方式:
- 获取 ntfy:安装手机应用、桌面应用或使用 Web 应用
- 在应用中订阅一个主题(例如
my-hytale-server) - 在
config.json中,将顶层"enabled"设置为true - 将 ntfy 目标的
"enabled"设置为true,并把 URL 更新为https://ntfy.sh/my-hytale-server - 重启服务器 - 你现在就能收到通知了!
配置
配置文件位于 mods/Valhal_EventNotifications/config.json。
重要提示: 顶层的 "enabled" 必须设置为 true,插件才能发送任何通知。默认情况下,此项为 false。
如需包含所有选项的完整示例,请参阅 example-config.json。
基本结构
{
"enabled": true,
"targets": {
"ntfy": { ... },
"discord": { ... },
"slack": { ... },
"webhook": { ... }
}
}
ntfy 设置
ntfy 是一项免费的推送通知服务。你可以使用公共服务器或自行托管。
"ntfy": {
"type": "ntfy",
"enabled": true,
"url": "https://ntfy.sh/your-topic-name",
"events": {
"serverStart": {
"enabled": true,
"title": "{server} - Online",
"message": "The server is now online!",
"priority": "high",
"tags": "green_circle"
}
}
}
Discord 设置
- 在 Discord 频道中创建一个 Webhook(频道设置 > 集成 > Webhook)
- 复制 Webhook URL
"discord": {
"type": "discord",
"enabled": true,
"url": "https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN",
"discordUsername": "Hytale Server",
"discordUseEmbeds": true,
"events": {
"playerJoin": {
"enabled": true,
"title": "Player Joined",
"message": "**{player}** joined the server",
"color": "#5865F2"
}
}
}
Slack 设置
- 在 api.slack.com/apps 创建一个 Slack 应用
- 启用 "Incoming Webhooks" 并为你的频道创建一个 Webhook
- 复制 Webhook URL
"slack": {
"type": "slack",
"enabled": true,
"url": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"slackUseAttachments": true,
"events": {
"playerJoin": {
"enabled": true,
"title": "Player Joined",
"message": "*{player}* joined the server",
"color": "#5865F2"
}
}
}
Webhook 设置
用于与任何 HTTP 端点进行自定义集成:
"webhook": {
"type": "webhook",
"enabled": true,
"url": "https://your-server.com/webhook",
"contentType": "application/json",
"events": {
"serverStart": {
"enabled": true,
"title": "Server Online",
"message": "The server started"
}
}
}
身份验证
所有目标都支持可选的身份验证。将以下字段添加到任何目标配置中。
Bearer Token
适用于使用基于 Token 的身份验证的服务(例如带有可选的访问 Token 的 ntfy):
"bearerToken": "tk_your_token_here"
这会在每次请求中发送 Authorization: Bearer tk_your_token_here 头。
基本认证
适用于使用用户名/密码身份验证的服务:
"username": "your_username",
"password": "your_password"
这会在每次请求中发送 Authorization: Basic <base64> 头。
自定义 Headers
适用于需要自定义身份验证头的 Webhook:
"headers": {
"X-API-Key": "your-api-key",
"X-Custom-Header": "value"
}
支持的事件
| 事件 | 占位符 | 描述 |
|---|---|---|
serverStart |
{server} |
服务器启动完成 |
serverStop |
{server} |
服务器正在关闭 |
playerJoin |
{server}, {player} |
玩家连接 |
playerLeave |
{server}, {player} |
玩家断开连接 |
playerChat |
{server}, {player}, {message} |
玩家发送聊天消息(默认禁用) |
gameModeChange |
{server}, {gamemode} |
游戏模式变更 |
groupPermissionChange |
{server}, {group}, {action}, {permissions} |
玩家组权限更改 |
playerPermissionChange |
{server}, {player}, {action}, {group}, {permissions} |
玩家权限更改 |
注意: 聊天通知默认处于禁用状态,以避免在繁忙的服务器上产生通知骚扰。如果你希望接收聊天消息,请在配置中启用 playerChat。
事件配置选项
每个事件支持以下选项:
| 选项 | 描述 |
|---|---|
enabled |
是否为此事件发送通知 |
title |
通知标题(支持占位符) |
message |
通知正文(支持占位符) |
priority |
ntfy 优先级:min、low、default、high、urgent |
tags |
ntfy 表情标签(例如 green_circle、skull) |
color |
Discord/Slack 颜色,十六进制值(例如 #5865F2) |
目标配置选项
ntfy 选项
| 选项 | 默认值 | 描述 |
|---|---|---|
ntfyMarkdown |
true |
在消息中启用 Markdown 格式 |
ntfyDefaultPriority |
default |
所有事件的默认优先级(min、low、default、high、urgent) |
ntfyIcon |
- | 通知中显示图标的 URL |
Discord 选项
| 选项 | 默认值 | 描述 |
|---|---|---|
discordUsername |
{server} |
Discord 中显示的机器人用户名(默认为服务器名称) |
discordAvatarUrl |
- | 机器人头像图片的 URL |
discordUseEmbeds |
true |
使用富嵌入代替纯文本消息 |
Slack 选项
| 选项 | 默认值 | 描述 |
|---|---|---|
slackUsername |
{server} |
Slack 中显示的机器人用户名(默认为服务器名称) |
slackIconUrl |
- | 机器人图标图片的 URL |
slackIconEmoji |
- | 用作机器人图标的 Emoji(例如 :video_game:) |
slackUseAttachments |
true |
使用富附件代替纯文本消息 |
Webhook 选项
| 选项 | 默认值 | 描述 |
|---|---|---|
contentType |
application/json |
HTTP Content-Type 头 |
bodyTemplate |
- | 自定义正文模板(见下文) |
headers |
- | 自定义 HTTP 头,键值对形式 |
自定义正文模板
使用 bodyTemplate 发送自定义 JSON 负载,而不是默认格式:
"webhook": {
"type": "webhook",
"enabled": true,
"url": "https://your-server.com/webhook",
"bodyTemplate": "{\"event\": \"{eventType}\", \"text\": \"{message:json}\"}",
"events": { ... }
}
可用的模板占位符:{eventType}、{title}、{message}、{priority}、{tags},以及所有事件特定的占位符。使用 :json 后缀获取 JSON 转义后的值(例如 {message:json})。
多个目标
你可以同时启用多个目标。每个目标拥有独立的事件设置,因此你可以将不同的事件发送到不同的服务:
{
"targets": {
"ntfy": {
"enabled": true,
"events": {
"serverStart": { "enabled": true },
"playerChat": { "enabled": false }
}
},
"discord": {
"enabled": true,
"events": {
"serverStart": { "enabled": true },
"playerChat": { "enabled": true }
}
}
}
}
故障排除
无法发送通知?
- 检查目标是否已设置
enabled: true - 验证该目标中的事件是否已设置
enabled: true - 确保 URL 正确且从你的服务器可以访问
- 检查服务器日志中的错误信息
Discord 嵌入不显示?
- 确保
discordUseEmbeds设置为true - 验证 Webhook URL 是否完整且有效
致谢
本项目的构建使用了 Hytale-Example-Project 作为模板。
备注
注意:此插件与 ntfy.sh 无关联。
许可证
MIT 许可证
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。