File Details
HyChatter-1.0.7.jar
- R
- Mar 15, 2026
- 188.14 KB
- 136
- Early Access
File Name
HyChatter-1.0.7.jar
Supported Versions
- Early Access
[1.0.7]
Added
New
/hcUI
The channel panel opened by/hc(or/hychatter) has been fully redesigned. Tabs (Chat, My channels, Moderation), channel list, Manage view, and compose area are all part of the new interface.Moderation tab in
/hcUI
New tab visible to OP or players withhychatter.moderation. Shows read-only status (moderation on/off, censor, spam, links, mute, limits). Blocked words count is displayed; editModeration.json5for the word list.Editable moderation in UI
From the Moderation tab you can now change settings without editing the file:- Toggles (save immediately): Moderation master switch, Censor, Spam protection, Link filter.
- Values (click “Save values”): Spam cooldown (ms), Mute default (seconds), Max message length (0 = unlimited).
- Changes are written to
mods/HyChatter/Moderation.json5and the censor cache is rebuilt. Blocked words are still edited only in the JSON5 file.
Manage view: member list with Kick and @
When managing a custom channel, a Members section lists up to 8 members with:- Player name (and “(owner)” for the owner).
- Kick button (owner only; cannot kick self or owner).
- @ button — closes the UI and shows a toast: “Type @Username in chat to mention them.”
Custom channel names with colors
When creating or renaming a custom channel (UI or commands), you can use:- Legacy codes:
&5,&a, etc. (e.g.&5TEXTCHANNEL). - Hex:
&#RRGGBB(e.g.&#FF5555RED). - Lookup is by canonical name (stripped of codes, lowercased), so
&5TEXTand&aTEXTresolve to the same channel. Names are shown in color in the UI and in chat. Blocked-word checks use the stripped name. Max raw length 64 characters; plain part still 1–24 chars matching[A-Za-z0-9_-].
- Legacy codes:
Cached player names for display
HyChatterPlugin.getCachedPlayerName(UUID)returns a display name for offline members (from join/leave cache), used in the manage member list and elsewhere.HyDiscordX compatibility
Optional integration with HyDiscordX (Discord ↔ Hytale bridge). Config:hyDiscordXCompatEnabled,hyDiscordXBridgeChannels. Reflection-based bridge; no hard dependency.New commands and permissions
- Commands:
/hc(or/hychatter) with subcommands:ui(open channel panel),chatdefault/dc,gchat/g/gc,rchat/r/rc/lc,pchat/p/pc,swap,mute,unmute,reload,msg/whisper/w,reply/re/rr, andchwithcreate,invite,leave,rename,kick,transfer,list,serverlist. - Permissions:
hychatter.command(base for/hc,ui,help,say);hychatter.moderation(access Moderation tab; OP also has access);hychatter.command.chatdefault,hychatter.command.gchat,hychatter.command.rchat,hychatter.command.pchat,hychatter.command.swap,hychatter.command.mute,hychatter.command.unmute,hychatter.command.reload,hychatter.command.msg,hychatter.command.reply,hychatter.command.chaton,hychatter.command.chatoff;hychatter.command.ch.create,hychatter.command.ch.invite,hychatter.command.ch.leave,hychatter.command.ch.rename,hychatter.command.ch.kick,hychatter.command.ch.transfer,hychatter.command.ch.list,hychatter.command.ch.serverlist. Optional bypass:hychatter.moderation.bypass(andhychatter.moderation.bypass.*) inModeration.json5to exempt players from moderation.
- Commands:
Changed
Escape for
<3and angle brackets
Player text escaping no longer uses full-width</>(which often rendered as?in-game). It now uses single angle quotation marks‹/›(U+2039, U+203A) so “<3” displays as “‹3” instead of “?3”, and tag injection is still prevented.LuckPerms prefix / tag with hex in fallback
When using the fallback path (no Mini Chat Formatter) with TinyMessage, the LuckPerms prefix and channel tag are now run throughlegacyToMini()before being inserted. Gradient-style prefixes (e.g.6BBE5WȥCD5o...) render correctly instead of showing literal&#...in chat. Same for custom channel and whisper prefix/tag.“Send to” label shows colored channel name
The “Send to X:” label in the Chat tab now usesRichTextUtil.renderAuto()so custom channel names with&/&#codes display in color (e.g. orange TESTAA) instead of literal “&6TESTAA&r”.Vanilla option removed from UI
The Vanilla channel button has been removed from the Chat tab. Only Global, Region, and Party are shown. When the player is in default game chat, the header shows “Active: Default” instead of “Active: Vanilla”.Owner and Back indicators
- Custom channel owner indicator in the channel list is now an ASCII
*instead of the Unicode star ★, so it no longer appears as “?” in some fonts. - The Manage view “Back” button label is now “< Back” instead of “← Back” so it renders correctly.
- Custom channel owner indicator in the channel list is now an ASCII
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.
Performance
Mention regex
Replaced repeatedPattern.compile("@([A-Za-z0-9_-]{2,32})")in mention handling with a single staticMENTION_PATTERN.Censor / URL parsing
§ color stripping and URL host extraction now use static patterns instead of compiling on each call.Player default chat saves
Player default chat is now saved with a 2-second debounce; config reload still flushes pending saves.Name → player lookup
Cache (lowercase name → PlayerRef, UUID → name) updated on connect/disconnect;findOnlinePlayerByName()uses cache first.GLOBAL chat list
For GLOBAL channel, code usesUniverse.get().getPlayers()directly when only iterating.CustomChannelManager locking
Finer-grained locking:createDeleteLockfor create/rename/delete; per-channel lock for membership operations.