File Details
HyChatter-1.0.6.jar
- B
- Feb 27, 2026
- 134.53 KB
- 22
- Early Access
File Name
HyChatter-1.0.6.jar
Supported Versions
- Early Access
Fixed
- moderateInbound()
Removed erroneous logic that cleared and reloaded per-player default chat from disk every time inbound (e.g. cross-server) messages were moderated when the censor word cache was empty. Inbound moderation now only rebuilds the moderation cache when needed and censors the message; it no longer touches player default chat state.
Performance
-
Mention regex
Replaced repeatedPattern.compile("@([A-Za-z0-9_-]{2,32})")in mention handling (ping, highlight, confirm) with a single staticMENTION_PATTERN. Avoids compiling the same regex many times per message when mentions are enabled. -
Censor / URL parsing
- § color stripping in
buildCensorReplacement()now uses a staticSECTION_SIGN_COLOR_PATTERNinstead ofreplaceAll(...)compiling a new pattern per censored match. - URL host extraction in
extractHost()now uses a staticURL_HOST_PATTERNinstead of compiling on each call.
- § color stripping in
-
Player default chat saves
Player default chat (/hychatter chatdefault) is now saved with a 2-second debounce (same pattern as mute persistence). Rapid changes no longer trigger a disk write on every change; config reload still flushes pending saves before reloading. -
Name → player lookup
Added a cache (lowercase name →PlayerRef, UUID → name) updated on player connect/disconnect and populated for already-online players on startup.findOnlinePlayerByName()uses the cache first (O(1)) and only scans when needed. Reduces cost of @mentions and commands that resolve players by name. -
GLOBAL chat list
For GLOBAL channel, the player list is no longer copied into a newArrayList; the code usesUniverse.get().getPlayers()directly when only iterating, avoiding an extra allocation per message. -
CustomChannelManager locking
Replaced a single globalsynchronizedlock with finer-grained locking: acreateDeleteLockfor create/rename/delete (anddeleteAllOwnedBy), and per-channelsynchronized(ch)for addMember, removeMember, invite, acceptInvite, requestJoin, approveRequest, leave, and transferOwner. Reduces contention when multiple custom channels are used at once.
Added
-
HyDiscordX compatibility
Optional integration with HyDiscordX (Discord ↔ Hytale bridge). When HyDiscordX is installed and compatibility is enabled, messages on selected channels can be relayed to the Discord chat bridge.- Config (
HyChatter.json5): hyDiscordXCompatEnabled(default:true) — turn relay to Discord on or off.hyDiscordXBridgeChannels(default:["GLOBAL"]) — which channels to relay ("GLOBAL","REGION","PARTY"). By default only global chat is sent to Discord.- Implementation: Reflection-based bridge (
HyDiscordXBridge) so HyChatter runs with or without HyDiscordX; no hard dependency. Calls HyDiscordX’s webhook chat path to send player name and message (with&/§color codes stripped) to the configured Discord channel. - Wiki: HyDiscordX Wiki
- Config (
Format loosely follows Keep a Changelog.