Requires Hytale 0.5.6+ (Java 25). Build with JDK 25 toolchain via Gradle.
### Added
- Granular permissions: Replaced OP-only command access withhyannouncer.command.*permission nodes. OP (*) still grants full access.
-hyannouncer.command.use—/ha info,/ha list
-hyannouncer.command.reload—/ha reload
-hyannouncer.command.broadcast—/ha broadcast,/ha test
-hyannouncer.command.send—/ha send,/ha sendplayer
-hyannouncer.command.gui—/ha gui
-hyannouncer.command.control—/ha start,/ha stop,/ha startsys,/ha stopsys
-hyannouncer.adminorhyannouncer.*— full HyAnnouncer access
### Changed
- Hytale 0.5.6 / Java 25: Bumped
ServerVersion, Java toolchain, and build docs for hytale-downloader layout.- API: Replaced removed
Player.getDisplayName()withPlayerRef.getUsername()viaPlayerHelper.getUsername().- GUI command:
/ha guimigrated fromAbstractAsyncCommandtoAbstractPlayerCommandbecausePlayerno longer implementsCommandSenderin Update 5.- Version display: Startup log and
/ha infonow read version from plugin manifest instead of hardcoded string.- Build:
build.gradlesupportslocal.propertiesandHYTALE_HOME/HYTALE_SERVER_JARenv vars for locatingHytaleServer.jar.- Documentation: Updated commands, permissions, troubleshooting, and CurseForge descriptions for 1.1.7.
### Fixed
- Announcement permissions: Config
Permissionfields on chat/title/notify/welcome announcements now use the real Hytale permission system viaPlayerHelper.- Leave-world messages: Default white "player left world" chat is now suppressed when join-leave is enabled, using
RemovedPlayerFromWorldEvent.setBroadcastLeaveMessage(false)(mirrors join suppression onAddPlayerToWorldEvent).
### Fixed
- Reload: Config reload failures now log the config file path and full cause (e.g. invalid JSON, codec error) so you can fix the file and retry
/ha reload.- Reload: When one config fails to load, only that config is kept; other configs still reload. Managers are only reloaded when their config loads successfully (e.g. disabling title and reloading no longer leaves titles running if title config had been broken).
- Blank lines: Empty or whitespace-only lines in join/leave messages and in chat announcements are no longer sent, preventing stray blank lines in chat.
- Join/leave title: Primary and secondary title lines are taken from the first and second non-blank lines; blank lines no longer produce empty titles.
### Changed
- Documentation: Troubleshooting now includes "Default Hytale Leave Message Still Appears" (API limitation) and expanded "Configuration Not Reloading" with log path/cause and per-config reload behavior.
- Code: Comment in leave handler updated for future
setBroadcastLeaveMessageuse if Hytale adds it.
Using fresh configs will be good for everyone!
Structures and usages changed.
### 1. Scheduled Actions System
- Added cron-based scheduling with support for 5-field cron expressions
- Added simple mode with duration strings (10s, 5m, 1h, 2d)
- Created ScheduledActionsConfig for scheduled-actions.json
- Created ScheduledActionManager to handle cron and duration-based scheduling
- Announcements in scheduled-actions are automatically excluded from rotation
- Support for multiple schedules per announcement ID
- Validation and error handling with GUI warnings for invalid actions
- Default examples: scheduled_title1 (5m) and scheduled_daily_title (daily at noon)
### 2. Sound System
- Chat announcements: default empty
- Created SoundUtil for playing sounds to players
- Added Sound field to all announcement configs:
- Title announcements: default "SFX_Rope_Break"
- Notification announcements: default "SFX_Rope_Break"
- Integrated sound playback into all announcement types
- Scheduled actions can override announcement sounds
### 3. Advanced Lag Protection
- Added minimum gap protection (1.5 seconds) to all announcement managers
- Smart skip logic prevents announcement bursts during server lag
- Global coordination across all announcement types
### 4. GUI Enhancements
- Created ScheduledActionsGui with full management interface
- Added "Scheduled Actions" button to main index (row 1, next to Join-Leave)
- Updated announcement GUIs to show "Scheduled" status for scheduled announcements
- Scheduled announcements display schedule instead of interval
- Start/Stop buttons hidden for scheduled announcements
- Added orange "Scheduled" status label to all announcement entry UIs
### Interactive GUI System
- Complete web-based GUI (
/ha gui) for managing announcements- Welcome/Join-Leave message configuration panels
- Chat, Title, and Notification announcement management
- Start/stop controls and enable/disable toggles
- Manual message sending interface
- Wiki page with commands and placeholders
### Advanced Placeholders
%random_int:min:max%- Random integers%random_choice:a|b|c%- Random selection%server_uptime%- Server uptime%datetime%,%day%,%timezone%- Date/time placeholders%online%- Alias for%total_players%
### System Control Commands
/ha startsys [chat|title|notify|joinleave|all]- Start announcement systems/ha stopsys [chat|title|notify|joinleave|all]- Stop announcement systems/ha start <id>- Start specific announcement/ha stop <id>- Stop specific announcement
### Manual Send Commands
/ha send [chat|title|notification] <message>- Send to all players/ha sendplayer [chat|title|notification] <player> <message>- Send to specific player
### Enhanced Status Command
- Improved
/ha listwith system status, announcement counts, intervals, and config paths- Shows running/stopped status for systems and individual announcements
# LOTS OF MORE...
Wisit wiki for more: https://tinsware.github.io/wiki/docs/hytale/mods/hyannouncer
fix join/leave announcement placeholders and add %leaver% placeholder support (make join message %joiner% and leave message %leaver%)
(update join leave config with that new placeholders)
