ChatStack

Finds which chat mod is silencing the others, and hands the chat line back to the one you want

ChatStack

Find out which chat mod is silencing the others — and give the line back

Install two chat mods on a Hytale server and sometimes both work, sometimes only one does. No error, no warning, nothing in the log — the ranks prefix simply stops appearing, or the level badge does, and there is no way to tell which mod took the chat or why

ChatStack is the reason that stops happening


The problem, precisely

Hytale gives every chat message one formatter slot:

public class PlayerChatEvent {
   private PlayerChatEvent.Formatter formatter;   // one slot
   public void setFormatter(Formatter f) { ... }  // last writer replaces
}

Every chat mod has to claim that slot to do its job — and what happens with two of them depends entirely on how each was written:

  • A mod that captures the formatter it finds and calls it leaves the others intact. Both show up
  • A mod that ignores it silently erases everything beneath. One of them is dead weight

Nothing in the API distinguishes the two. From the outside, a working stack and a broken one look identical: one mod is on top, and you cannot see whether it kept the rest. There are more than ten published Hytale chat mods, and no way to know which pairs survive together

What ChatStack does

1. It tells you who is fighting, and who actually reaches players

/chatstack status lists every mod that claimed the chat formatter this session, named by its jar file, and says whether each one keeps what it found or replaces it:

ChatStack  -  12 chat message(s) seen
[outermost] Azeys:PrefixesPlus   claimed 12, keeps what it found
[nested]    com.hytale:HyChat    claimed 12, replaces what it found
All 2 mods reach players: each one calls the formatter below it

and when one of them is eating the others, it says so by name:

[outermost] SomeChatMod          claimed 12, replaces what it found
[nested]    Azeys:PrefixesPlus   claimed 12, never runs
Azeys:PrefixesPlus never reaches players: SomeChatMod discards the formatter
it finds instead of calling it
Use /chatstack owner Azeys:PrefixesPlus to give it the chat line instead.

That information does not exist anywhere else today — not in the log, not in game

2. It lets you choose

/chatstack owner <mod> decides which mod owns the chat line, per server, in game or in config. No more "whichever loaded last". auto hands it back


How it works, honestly

ChatStack registers the same observation at six points across the chat dispatch, so a mod that claims the slot between two of them is caught by the later one. Between every pair of claims it leaves a marker that renders exactly what the formatter beneath it renders and notes that it was called. A marker being reached means precisely one thing — that mod called what it found — and that single fact is what the whole report is built from

It adds no calls to anyone's code. Each marker delegates exactly once, so every mod's formatter runs exactly as often as it would if ChatStack were not installed. Nothing is called with test input; nothing is invoked twice

It cannot break chat. Every probe is wrapped: a failure logs once and leaves the event untouched. A mod that only watches has no business taking a server's chat down with it

Its one honest limit: two mods that claim the slot between the same two probes are reported as one, because nothing of ChatStack's ran in between. In practice mods register at the named priorities, which is exactly where the probes sit


Install

Drop the jar in [GameFolder]/UserData/Mods/ (singleplayer) or [ServerFolder]/Mods/ (dedicated server). That is all

One jar. No dependencies. No early plugin, no bytecode patching, no launcher replacement. ChatStack uses nothing but Hytale's public plugin API

Requirements

Hytale 0.6.3 or later. Server-side only — players install nothing

Compatibility

ChatStack does not replace your chat mods, and it does not ask you to. It sits behind them and reports. Remove it and every mod behaves exactly as it did before

It works with mods released before it existed, and with mods released after it that never hear of it


What comes next

Reporting the conflict is the half that can be done with certainty. The other half — merging two mods' decorations into one line so both appear at once — is designed and prototyped, and will ship once it can be done without ever guessing. Taking a formatter apart means calling another mod's code with test input, and that is not something to switch on casually or by default

If you want it, say so on this page: it moves up the list

The ChatStack Team

profile avatar
  • 2
    Followers
  • 7
    Projects
  • 21.7K
    Downloads

More from TraktoolView all