EventNotifications
A Hytale server plugin that sends real-time notifications to external services when server events occur. Get notified via ntfy (phone, desktop, or web), Discord, Slack, or custom webhooks when players join, the server starts/stops, and more.
Описание
Уведомления о событиях Hytale Плагин
А. Плагин сервера Hytale, который отправляет уведомления в реальном времени внешним службам, когда происходят события на сервере. Получите уведомление через ntfy (телефон, рабочий стол или веб), Discord, Slack или пользовательские веб-хуки, когда игроки присоединяются, сервер запускается / останавливается и многое другое.
Поддерживаемые службы уведомлений
- ntfy - Бесплатные push-уведомления с открытым исходным кодом (рекомендуется)
- раздор Уведомления Webhook с богатыми вставками
- Слак Уведомления Webhook с вложениями
- Вебхуки Общие веб-хуки HTTP для пользовательских интеграций
установка
- Скачать последнюю
Уведомления о событии. банкуиз выпусков - Поместите JAR в сервер Hytale
модпапка - Запустите сервер один раз, чтобы создать конфигурацию по умолчанию
- Редактировать
config.jsonЧтобы настроить ваши цели уведомлений - Перезагрузить сервер
Быстрый старт (ntfy)
Самый быстрый способ получения уведомлений:
- Давай! ntfy: установить мобильное приложение, настольное приложение или использовать веб-приложение
- В приложении подпишитесь на тему (например,
мой-хиталь-сервер) - в
config.jsonустановленный«Включено»: истиннона высшем уровне - Установите мишень ntfy
«Включено»: истинноОбновление URL дляhttps://ntfy.sh/my-hytale-server - Перезагрузите сервер - теперь вы будете получать уведомления!
конфигурация
Конфигурационный файл находится в mods/Valhal_EventУведомления/config.json.
Важно: Высший уровень "включено" должны быть установлены истинный плагин для отправки любых уведомлений. По умолчанию это ложный.
Для полного примера со всеми вариантами см. example-config.json.
Основная структура
{
"Включено": правда,
"цели": {
"ntfy": {...},
"раздор": {...},
"слабый": {...},
"вебхук": {...}
?
?
Настройка ntfy
ntfy Это бесплатный сервис push-уведомлений. Вы можете использовать публичный сервер или самохостинг.
"НТФИ": {
"тип": "ntfy",
"Включено": правда,
"урл":"rel="noopener nofollow" target="_blank">https://ntfy.sh/your-topicname",
"События": {
Сервер Старт: {
"Включено": правда,
"титул": "{сервер} - Онлайн",
"Послание": "Сервер теперь онлайн!",
"приоритет": "высокий",
"tags": "green_circle"
?
?
?
Настройка диссонанса
- Создайте веб-хук в своем канале Discord (Настройки каналов > Интеграции > Веб-хуки)
- Скопировать webhook URL
"раздор": {
"тип": "разлад",
"Включено": правда,
"урл":"rel="noopener nofollow" target="_blank">https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN",
"discordUsername": "Hytale Server",
"discordUseEmbeds": правда,
"События": {
"Игрок присоединяется": {
"Включено": правда,
Оригинальное название: Player Joined
"сообщение": "**{player}** присоединился к серверу",
"цвет": "#5865F2"
?
?
?
Настройка Slack
- Создайте приложение Slack в api.slack.com/apps
- Включите «Входящие веб-хуки» и создайте веб-хук для своего канала
- Скопировать webhook URL
"Слак": {
"тип": "слабый",
"Включено": правда,
"урл":"rel="noopener nofollow" target="_blank">https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"slackUseAttachments": правда,
"События": {
"Игрок присоединяется": {
"Включено": правда,
Оригинальное название: Player Joined
"сообщение": "*{player}* присоединился к серверу",
"цвет": "#5865F2"
?
?
?
Настройка Webhook
Для пользовательской интеграции с любой конечной точкой HTTP:
"вебхук": {
"тип": "вебхук",
"Включено": правда,
"урл":"rel="noopener nofollow" target="_blank">https://your-server.com/webhook",
"contentType": "application/json",
"События": {
Сервер Старт: {
"Включено": правда,
«Заголовок»: «Сервер Онлайн»,
«Сообщение»: «Сервер запущен»
?
?
?
аутентификация
Все цели поддерживают дополнительную аутентификацию. Добавьте эти поля в любую целевую конфигурацию.
Токен-носитель
Для сервисов, использующих токены на основе auth (например, ntfy с токенами доступа (опционально)):
"bearerToken": "tk_your_token_here"
Это посылает Разрешение: Bearer tk_your_token_here Заголовок с каждым запросом.
Основной аут
Для служб, использующих аутентификацию имени пользователя / пароля:
"имя пользователя": "ваш_имя пользователя",
«пароль»: «your_password»
Это посылает Разрешение: Базовый <base64> Заголовок с каждым запросом.
Пользовательские заголовки
Для веб-хуков, которым нужны пользовательские заголовки аутентификации:
"заголовки": {
"X-API-Key": "your-api-key",
"X-Custom-Header": "ценность"
?
Поддерживаемые события
| Событие | держатели мест | Описание |
|---|---|---|
Сервер Старт |
{сервер} |
Сервер закончил работу |
Сервер Стоп |
{сервер} |
Сервер отключается |
игрок |
{сервер}, {игрок} |
Игрок подключен |
Игрок уходит |
{сервер}, {игрок} |
Игрок отключен |
игрок Чат |
{сервер}, {игрок}, {сообщение} |
Игрок отправил сообщение в чате (отключено по умолчанию) |
Обсуждение ModeChange |
{сервер}, {gamemode} |
Изменился режим игры |
Групповое разрешение Изменения |
{сервер}, {группа}, {действие}, {разрешение} |
Групповые разрешения изменены |
Игрок PermissionChange |
{сервер}, {игрок}, {действие}, {группа}, {разрешение} |
Разрешения игроков изменены |
Примечание: Уведомления в чате по умолчанию отключены, чтобы избежать спама на загруженных серверах. допускать игрок Чат Если вы хотите получать сообщения в чате.
Варианты конфигурации событий
Каждое мероприятие поддерживает эти варианты:
| Вариант | Описание |
|---|---|
включенный |
Отправлять ли уведомления на это мероприятие |
титул |
Название уведомления (поддерживает заполнителей) |
сообщение |
Уведомительный орган (поддерживает заполнителей) |
приоритет |
Приоритет NTFY: мин., низкий, по умолчанию, высокий, срочно |
метки |
ntfy emoji tags (например, Зеленый - круг, череп) |
цвет |
Разногласия/отсутствие цвета в виде шести (например, #5865F2) |
Опции целевой конфигурации
ntfy варианты
| Вариант | по умолчанию | Описание |
|---|---|---|
ntfyMarkdown |
истинный |
Включите форматирование разметки в сообщениях |
ntfyDefaultПриоритет |
по умолчанию |
Приоритет по умолчанию для всех событиймин., низкий, по умолчанию, высокий, срочно) |
ntfyIcon |
- | URL для изображения значка, показанного в уведомлениях |
Диссонные варианты
| Вариант | по умолчанию | Описание |
|---|---|---|
имя диссонанса |
{сервер} |
Имя пользователя Bot, отображаемое в Discord (по умолчанию для имени сервера) |
Дискография Avatar Урл |
- | URL для изображения аватара бота |
раздор Использование Embeds |
истинный |
Используйте богатые вставки вместо простых сообщений |
Опции Slack
| Вариант | по умолчанию | Описание |
|---|---|---|
slackUsername |
{сервер} |
Имя пользователя Bot, отображаемое в Slack (по умолчанию имя сервера) |
слэкикон Урл |
- | URL для изображения значка бота |
slackIconEmoji |
- | Emoji для использования в качестве значка бота (например, :video_game:) |
slackUseAttachments |
истинный |
Используйте богатые вложения вместо простых сообщений |
Варианты Webhook
| Вариант | по умолчанию | Описание |
|---|---|---|
содержание Тип |
приложение/json |
Заголовок HTTP Content-Type |
телосложение |
- | Пользовательский шаблон тела (см. ниже) |
заголовки |
- | Настраиваемые HTTP-заголовки как пары ключевых значений |
Обычный шаблон тела
Использовать телосложение для отправки пользовательской полезной нагрузки JSON вместо формата по умолчанию:
"вебхук": {
"тип": "вебхук",
"Включено": правда,
"урл":"rel="noopener nofollow" target="_blank">https://your-server.com/webhook",
"bodyTemplate": "{\"event\": \"{eventType}\", \"text\": \"{message:json}\"},
"События": {...}
?
Доступные шаблонные заполнители: {Тип события}, {титул}, {сообщение}, Приоритет, {теги}, а также все конкретные места проведения мероприятия. Использовать Джейсон суффикс для значений, избегающих JSON (например, {сообщение:json}).
Несколько целей
Вы можете использовать несколько целей одновременно. Каждая цель имеет независимые настройки событий, поэтому вы можете отправлять различные события в разные службы:
{
"цели": {
"ntfy": {
"Включено": правда,
"События": {
"ServerStart": { "включено": истинно},
"playerChat": {"enabled": false }
?
?
"раздор": {
"Включено": правда,
"События": {
"ServerStart": { "включено": истинно},
"playerChat": {"enabled": true }
?
?
?
?
устранение неполадок
Уведомления не отправляются?
- Убедитесь, что цель
Разрешено: истинно - Проверьте, является ли событие
Разрешено: истиннов пределах этой цели - Убедитесь, что URL правильный и доступен с вашего сервера.
- Проверьте журналы сервера на наличие сообщений об ошибках
Разногласия не показываются?
- Убедись.
раздор Использование Embedsэтоистинный - Убедитесь, что URL веб-хука является полным и действительным.
Признания
Этот проект был построен с использованием Проект Hytale-Example как шаблон.
Заметки
Примечание: Этот плагин не связан с ntfy. рубить
Лицензия
МТИ Лицензия
Показать оригинальное описание (English)
Hytale EventNotifications Plugin
A Hytale server plugin that sends real-time notifications to external services when server events occur. Get notified via ntfy (phone, desktop, or web), Discord, Slack, or custom webhooks when players join, the server starts/stops, and more.
Supported Notification Services
- ntfy - Free, open-source push notifications (recommended)
- Discord - Webhook notifications with rich embeds
- Slack - Webhook notifications with attachments
- Webhooks - Generic HTTP webhooks for custom integrations
Installation
- Download the latest
EventNotifications.jarfrom releases - Place the JAR in your Hytale server's
modsfolder - Start the server once to generate the default config
- Edit
config.jsonto configure your notification targets - Restart the server
Quick Start (ntfy)
The fastest way to get notifications:
- Get ntfy: install the mobile app, desktop app, or use the web app
- In the app, subscribe to a topic (e.g.,
my-hytale-server) - In
config.json, set"enabled": trueat the top level - Set the ntfy target to
"enabled": trueand update the URL tohttps://ntfy.sh/my-hytale-server - Restart the server - you'll now receive notifications!
Configuration
The config file is located at mods/Valhal_EventNotifications/config.json.
Important: The top-level "enabled" must be set to true for the plugin to send any notifications. By default, this is false.
For a complete example with all options, see example-config.json.
Basic Structure
{
"enabled": true,
"targets": {
"ntfy": { ... },
"discord": { ... },
"slack": { ... },
"webhook": { ... }
}
}
ntfy Setup
ntfy is a free push notification service. You can use the public server or self-host.
"ntfy": {
"type": "ntfy",
"enabled": true,
"url": "" rel="noopener nofollow" target="_blank">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 Setup
- Create a webhook in your Discord channel (Channel Settings > Integrations > Webhooks)
- Copy the webhook URL
"discord": {
"type": "discord",
"enabled": true,
"url": "" rel="noopener nofollow" target="_blank">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 Setup
- Create a Slack app at api.slack.com/apps
- Enable "Incoming Webhooks" and create a webhook for your channel
- Copy the webhook URL
"slack": {
"type": "slack",
"enabled": true,
"url": "" rel="noopener nofollow" target="_blank">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 Setup
For custom integrations with any HTTP endpoint:
"webhook": {
"type": "webhook",
"enabled": true,
"url": "" rel="noopener nofollow" target="_blank">https://your-server.com/webhook",
"contentType": "application/json",
"events": {
"serverStart": {
"enabled": true,
"title": "Server Online",
"message": "The server started"
}
}
}
Authentication
All targets support optional authentication. Add these fields to any target configuration.
Bearer Token
For services that use token-based auth (like ntfy with access tokens (optional)):
"bearerToken": "tk_your_token_here"
This sends an Authorization: Bearer tk_your_token_here header with each request.
Basic Auth
For services that use username/password authentication:
"username": "your_username",
"password": "your_password"
This sends an Authorization: Basic <base64> header with each request.
Custom Headers
For webhooks that need custom authentication headers:
"headers": {
"X-API-Key": "your-api-key",
"X-Custom-Header": "value"
}
Supported Events
| Event | Placeholders | Description |
|---|---|---|
serverStart |
{server} |
Server finished starting |
serverStop |
{server} |
Server is shutting down |
playerJoin |
{server}, {player} |
Player connected |
playerLeave |
{server}, {player} |
Player disconnected |
playerChat |
{server}, {player}, {message} |
Player sent a chat message (disabled by default) |
gameModeChange |
{server}, {gamemode} |
Game mode changed |
groupPermissionChange |
{server}, {group}, {action}, {permissions} |
Group permissions modified |
playerPermissionChange |
{server}, {player}, {action}, {group}, {permissions} |
Player permissions modified |
Note: Chat notifications are disabled by default to avoid notification spam on busy servers. Enable playerChat in your config if you want to receive chat messages.
Event Configuration Options
Each event supports these options:
| Option | Description |
|---|---|
enabled |
Whether to send notifications for this event |
title |
Notification title (supports placeholders) |
message |
Notification body (supports placeholders) |
priority |
ntfy priority: min, low, default, high, urgent |
tags |
ntfy emoji tags (e.g., green_circle, skull) |
color |
Discord/Slack color as hex (e.g., #5865F2) |
Target Configuration Options
ntfy Options
| Option | Default | Description |
|---|---|---|
ntfyMarkdown |
true |
Enable markdown formatting in messages |
ntfyDefaultPriority |
default |
Default priority for all events (min, low, default, high, urgent) |
ntfyIcon |
- | URL to icon image shown in notifications |
Discord Options
| Option | Default | Description |
|---|---|---|
discordUsername |
{server} |
Bot username shown in Discord (defaults to server name) |
discordAvatarUrl |
- | URL to bot avatar image |
discordUseEmbeds |
true |
Use rich embeds instead of plain messages |
Slack Options
| Option | Default | Description |
|---|---|---|
slackUsername |
{server} |
Bot username shown in Slack (defaults to server name) |
slackIconUrl |
- | URL to bot icon image |
slackIconEmoji |
- | Emoji to use as bot icon (e.g., :video_game:) |
slackUseAttachments |
true |
Use rich attachments instead of plain messages |
Webhook Options
| Option | Default | Description |
|---|---|---|
contentType |
application/json |
HTTP Content-Type header |
bodyTemplate |
- | Custom body template (see below) |
headers |
- | Custom HTTP headers as key-value pairs |
Custom Body Template
Use bodyTemplate to send a custom JSON payload instead of the default format:
"webhook": {
"type": "webhook",
"enabled": true,
"url": "" rel="noopener nofollow" target="_blank">https://your-server.com/webhook",
"bodyTemplate": "{\"event\": \"{eventType}\", \"text\": \"{message:json}\"}",
"events": { ... }
}
Available template placeholders: {eventType}, {title}, {message}, {priority}, {tags}, plus all event-specific placeholders. Use :json suffix for JSON-escaped values (e.g., {message:json}).
Multiple Targets
You can enable multiple targets simultaneously. Each target has independent event settings, so you can send different events to different services:
{
"targets": {
"ntfy": {
"enabled": true,
"events": {
"serverStart": { "enabled": true },
"playerChat": { "enabled": false }
}
},
"discord": {
"enabled": true,
"events": {
"serverStart": { "enabled": true },
"playerChat": { "enabled": true }
}
}
}
}
Troubleshooting
Notifications not sending?
- Check that the target is
enabled: true - Verify the event is
enabled: truewithin that target - Ensure the URL is correct and accessible from your server
- Check server logs for error messages
Discord embeds not showing?
- Make sure
discordUseEmbedsistrue - Verify webhook URL is complete and valid
Acknowledgments
This project was built using Hytale-Example-Project as a template.
Notes
Note: This plugin is not affiliated with ntfy.sh
License
MIT License