HyAnnouncer Plugin Tutorial: Automated Announcements for Your Hytale Server
Set up automated announcements on your Hytale server with HyAnnouncer. Chat messages, titles, welcome messages, join/leave broadcasts, and scheduled actions.
HyAnnouncer lets you set up automated announcements on your Hytale server. You can display messages in chat, as center-screen titles, or as popup notifications. It also handles welcome messages and custom join/leave broadcasts.
Installation
- Download HyAnnouncer from CurseForge
- Drop the JAR file into your server's
modsfolder - Restart the server
- Configuration files appear in the
tins_HyAnnouncerdirectory
How It Works
The plugin uses rotation mode by default. You set one global interval (say, 60 seconds), and it cycles through your announcements one at a time. No overlapping messages, no complicated timing setup.
There are seven config files:
| File | Purpose |
|---|---|
config.json |
Debug toggle |
chat-announcements.json |
Chat messages |
title-announcements.json |
Center-screen titles |
notify-announcements.json |
Popup notifications |
welcome-message.json |
Messages for joining players |
join-leave-announcements.json |
Join/leave broadcasts |
scheduled-actions.json |
Cron-based or timed triggers |
Basic Chat Announcement Setup
Open chat-announcements.json. Here is a working example:
{
"Enabled": true,
"Interval": 60,
"RandomOrder": true,
"Prefix": "&6[Server] &r",
"RequirePlayers": false,
"Announcements": [
{
"Id": "welcome",
"Priority": 0,
"Enabled": true,
"Worlds": [],
"Permission": "",
"Lines": [
"&aThere are &e%total_players% &aplayers online."
],
"Link": "",
"Sound": ""
},
{
"Id": "discord",
"Priority": 0,
"Enabled": true,
"Worlds": [],
"Permission": "",
"Lines": [
"&9Join our Discord for updates!"
],
"Link": "https://discord.gg/yourserver",
"Sound": ""
}
]
}
The Interval is in seconds. With RandomOrder set to true, announcements display in random order. Set it to false if you want them sequential, in which case higher Priority numbers go first.
Leave Worlds empty to broadcast everywhere, or specify world names like ["spawn", "hub"] to limit where the message appears. The Permission field works the same way for restricting who sees the message.
Title Announcements
Title announcements show text in the center of the screen. The setup is similar to chat announcements, but you get subtitle options:
{
"Id": "event",
"Priority": 0,
"Enabled": true,
"Worlds": [],
"Permission": "",
"Lines": [
"&a&lDouble XP Weekend!"
],
"Subtitle": "&eEnds Sunday at midnight",
"ShowSubtitle": true,
"Animate": false,
"Sound": "SFX_Rope_Break"
}
If you skip the Subtitle field, the second line in Lines becomes the subtitle automatically.
Welcome Messages
Edit welcome-message.json to greet players when they join:
{
"Enabled": true,
"Worlds": [],
"Permission": "",
"Target": "CHAT",
"Link": "https://discord.gg/yourserver",
"Lines": [
"&aWelcome &e%player% &ato the server!",
"&7Type /help to get started."
]
}
Target can be CHAT, TITLE, or BOTH. When you set a Link, the entire message becomes clickable.
Custom Join and Leave Messages
The join-leave-announcements.json file lets you replace the default server messages:
{
"Enabled": true,
"JoinEnabled": true,
"LeaveEnabled": true,
"JoinTarget": "CHAT",
"LeaveTarget": "CHAT",
"JoinScope": "SERVER",
"JoinMessage": [
"&a+ &7%joiner% joined &8(&e%total_players% online&8)"
],
"LeaveMessage": [
"&c- &7%leaver% left &8(&e%total_players% online&8)"
]
}
JoinScope can be SERVER (everyone sees it) or PLAYER (only the joining player sees it).
Scheduled Actions
For announcements at specific times, use scheduled-actions.json. You can use cron expressions or simple duration strings:
{
"Enabled": true,
"UseUtc": false,
"Actions": [
{
"Id": "daily_reminder",
"Type": "chat",
"Schedule": "0 12 * * *",
"Enabled": true,
"Sound": ""
},
{
"Id": "frequent_tip",
"Type": "title",
"Schedule": "5m",
"Enabled": true,
"Sound": "SFX_Rope_Break"
}
]
}
The first example runs daily at noon. The second runs every 5 minutes. Duration options: 10s (seconds), 5m (minutes), 1h (hours), 2d (days).
Any announcement ID listed here gets pulled out of normal rotation and only triggers at its scheduled time.
Useful Placeholders
| Placeholder | Description |
|---|---|
%player% |
Recipient's name |
%joiner% |
Joining player (join messages only) |
%leaver% |
Leaving player (leave messages only) |
%total_players% / %online% |
Players online |
%world% |
Current world name |
%server_uptime% |
Formatted uptime |
%random_int:1:100% |
Random number between 1 and 100 |
%random_choice:Yes|No|Maybe% |
Picks one option randomly |
Colour Codes
Standard Minecraft colour codes work with the & symbol:
&agreen,&baqua,&cred,&dpink,&eyellow,&fwhite&0-&9for darker shades&lbold,&oitalic,&rreset
For hex colours, use &#FF5500 or {#FF5500} format.
Essential Commands
| Command | Description |
|---|---|
/ha reload |
Apply config changes without restarting |
/ha list |
See all announcements and their status |
/ha test |
Send all announcements immediately |
/ha broadcast [id] |
Manually trigger one announcement |
/ha gui |
Open the web-based management interface |
/ha startsys [chat|title|notify|all] |
Start announcement systems |
/ha stopsys [chat|title|notify|all] |
Stop announcement systems |
Quick Tips
Set RequirePlayers to true if you do not want announcements firing on an empty server.
Use the Priority field when RandomOrder is false. Higher numbers display first.
Multi-line messages work by adding more entries to the Lines array. Each entry becomes a separate line.
The Sound field defaults to SFX_Rope_Break for titles and notifications. Set it to an empty string to disable sounds, or check the plugin's sound list for alternatives.
After any config edit, run /ha reload. No server restart needed.
Written by Hyvote Team
