File Details
HyChatter-1.0.8.jar
- R
- Apr 5, 2026
- 260.92 KB
- 36
- Early Access
File Name
HyChatter-1.0.8.jar
Supported Versions
- Early Access
[1.0.8]
Added
Native Discord bridge
Built-in bidirectional Discord ↔ Hytale relay. No third-party mod required.
Config (
mods/HyChatter/DiscordBridge.json5):enabled,botToken,channelId— enable the bridge and connect a bot.toDiscordFormat— format for in-game messages sent to Discord. Placeholders:{name},{message}.toDiscordForwardedFormat— format for cross-server forwarded messages. Adds{server}.toHytaleFormat— format for Discord messages shown in-game. Supports&color codes.notificationChannelId— separate Discord channel for join/leave/death events.notifyJoin,notifyLeave,notifyDeath— toggle each notification type.notifyJoinFormat,notifyLeaveFormat,notifyDeathFormat— notification text (emoji-friendly).notifyForwardedJoinFormat,notifyForwardedLeaveFormat— formats for events forwarded from spoke servers.debug— verbose logging for bridge troubleshooting.
Discord custom emojis (e.g.
<:skull:123456>) are converted to:skull:text in-game. Standard Unicode emoji codepoints are converted to:unicode_name:usingCharacter.getName(). Both prevent??artifacts that occur when Hytale cannot render emoji characters.Channel HUD overlay
A persistent pill bar visible on-screen shows the player's active channel and keyboard shortcuts at all times.- Pills: Global (CTRL+2), Region (CTRL+3), Party (CTRL+4), Custom #1 (CTRL+5), Custom #2 (CTRL+6).
- Party pill is hidden automatically when PartyPro is not installed.
- Custom channel pills appear only when the player is a member of one or two custom channels; label shows a short tag derived from the channel name.
- Active pill is highlighted; inactive pills are dimmed.
- To disable: set
channelHudEnabled: falseinmods/HyChatter/HyChatter.json5, then run/hc reload. The overlay will not be shown to any player.
MultipleHUD compatibility (
MultipleHudCompat)
HyChatter's channel HUD now integrates cleanly on servers running MultipleHUD.- MultipleHUD is detected at runtime via reflection — no hard dependency, no compile-time coupling.
- When present, HyChatter registers via
MultipleHUD.setCustomHud()so its overlay is merged into MultipleHUD's combined HUD document alongside other mods (PartyPro, EndlessLeveling, etc.). - When absent, HyChatter falls back to
player.getHudManager().setCustomHud()(standard Hytale path). - Previously, HyChatter's standalone HUD displaced MultipleHUD's merged document, causing other mods' update calls (e.g.
#Ping1,#InfoMobLevelPrefix) to fail with "Selected element in CustomUI command was not found" and crash the client.
Fixed
Security
Discord mention injection blocked
Player names and message content relayed from Hytale to Discord are now sanitized before posting.@everyone,@here, and role pings (<@&id>) are replaced with[mention]. Without this, any player could trigger a mass ping in a Discord server simply by typing@everyonein global chat. Two sanitization levels are applied: strict (names, server names — also strips user mentions) and safe (message body — preserves resolved@Usernamepings while blocking mass-ping patterns).Constant-time secret comparison in cross-server forwarder
The shared-secret check on incoming peer connections now usesMessageDigest.isEqual()instead ofString.equals().String.equals()short-circuits on the first mismatched byte, leaking timing information that an attacker could use to brute-force the secret incrementally.MessageDigest.isEqual()always compares all bytes in constant time.Discord channel ID validation
Channel and guild IDs supplied inDiscordBridge.json5are validated against the Discord snowflake format (^\d{17,20}$) before being used in API requests, rejecting malformed config values early.
Performance
- Discord bridge regex patterns compiled once
All regular expressions used inDiscordBridge(color code stripping, mention detection, custom emoji parsing,@Usernamescanning) are now compiled once asstatic final Patternfields instead of being compiled on every message. On busy servers relaying high chat volume this eliminates repeatedPattern.compile()overhead per message.
Fixed
Channel HUD crash on servers with MultipleHUD
HyChatter previously calledhud.show()directly, sending a second standalone HUD packet to the client and displacing MultipleHUD's merged document. This caused "Failed to apply Custom HUD commands" or "Selected element not found" crashes for PartyPro and EndlessLeveling. The fix routes all HUD registration throughMultipleHudCompat, which never callsshow()directly —HudManager.setCustomHud()andMultipleHUD.setCustomHud()both callshow()internally as part of their merge flow.Party pill hint showing wrong shortcut
#PillPartyHintinChannelHud.uishowedCTRL+3(Region's shortcut) instead of the correctCTRL+4.Stale error message in HUD retry log
The catch block inscheduleHudOpenWithRetrylogged"setCustomHud failed"aftersetCustomHudhad already been removed from that path. Now logs"Failed to open channel HUD for ...".