Chat Manager
A plugin for Unturned servers that enhances chat appearance with customizable colors, icons, and text formatting.

Features
Server Customization:
- Change default server message color for ALL plugin messages
- Set custom server icon
- Enable rich text formatting for ALL plugin translations and messages
- Create text replacements (useful for XML compatibility)
Player Customization:
- Change default player message color
- Set custom player icons
- Enable rich text formatting for player messages
Chat Formatting:
- Customize chat message structure
- Display player group prefixes and suffixes with colors
- Add special indicators for different chat modes (Global, Area, Group)
- Show multiple prefixes/suffixes from permission groups
Per-Player Formats:
- Give individual players their own custom chat format, matched by SteamID
- Stored in a separate
PlayerFormats.jsonfile so the main config stays clean - Manage at runtime with the
/chatformatcommand (admin & RCON) — ideal for donation stores
Configuration Options
Server and Player Appearance
EnableDefaultServerColor: Turn on/off custom server message colorDefaultServerColor: Color name for server messages (e.g., "yellow")EnableDefaultPlayersColor: Turn on/off custom player message colorDefaultPlayersColor: Color name for player messages (e.g., "white")EnableGlobalServerRichText: Allow formatting tags in ALL server and plugin messagesEnablePlayersRichText: Allow formatting tags in player messages
Icons
EnableDefaultServerIconUrl: Use a default icon for server messagesOverrideServerIconUrl: Force the default icon even if another one existsDefaultServerIconUrl: URL to the server icon imageEnableDefaultPlayersIconUrl: Use a default icon for player messagesOverridePlayersIconUrl: Force the default player iconDefaultPlayersIconUrl: URL to the default player icon image
Message Formatting
DisableRocketWrapMessage: Prevent RocketMod from wrapping messagesServerTextReplaces: Convert text in server messages (useful for XML compatibility where you can use[[instead of<since XML escapes angle brackets)EnableChatFormat: Turn on custom chat message formatting (IMPORTANT: Must be set to true for all chat formatting options below to work)ChatFormat: Template for message structure using variables:{CHAT_MODE}: Indicates message type (global, area, group){PREFIXES}: Player group prefixes{PLAYER_NAME}: Player's name{SUFFIXES}: Player group suffixes{MESSAGE}: The actual message content
Per-player overrides loaded from PlayerFormats.json are also applied automatically whenever EnableChatFormat is true — see Per-Player Chat Formats.
Chat Mode Indicators
Note: These settings only work when EnableChatFormat is set to true
ChatModePrefixes: Text to show before messages in different chat modes:Global: For global chatArea: For local area chat (default: "[A] ")Group: For group chat (default: "[G] ")
Group Prefixes and Suffixes
Note: All options below require EnableChatFormat to be set to true to work
EnablePrefixes: Show group prefixes for playersDisplayMultiplePrefixes: Show all prefixes if player is in multiple groupsPrefixesFormat: How prefixes appear (default: "[{PREFIXES}]")PrefixFormat: Format for each prefix (default: "{color={COLOR}}{PREFIX}{/color}")EnableSuffixes: Show group suffixes for playersDisplayMultipleSuffixes: Show all suffixes if player is in multiple groupsIncludeParentGroups: Include prefixes/suffixes from parent groupsSuffixesFormat: How suffixes appear (default: "[{SUFFIXES}]")SuffixFormat: Format for each suffix (default: "{color={COLOR}}{SUFFIX}{/color}")
Example Configuration
<?xml version="1.0" encoding="utf-8"?>
<ChatManagerConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnableDefaultServerColor>true</EnableDefaultServerColor>
<DefaultServerColor>yellow</DefaultServerColor>
<EnableDefaultPlayersColor>false</EnableDefaultPlayersColor>
<DefaultPlayersColor>white</DefaultPlayersColor>
<EnableGlobalServerRichText>true</EnableGlobalServerRichText>
<EnablePlayersRichText>false</EnablePlayersRichText>
<EnableDefaultServerIconUrl>true</EnableDefaultServerIconUrl>
<OverrideServerIconUrl>false</OverrideServerIconUrl>
<DefaultServerIconUrl>https://i.imgur.com/AakRtbb.png</DefaultServerIconUrl>
<EnableDefaultPlayersIconUrl>false</EnableDefaultPlayersIconUrl>
<OverridePlayersIconUrl>false</OverridePlayersIconUrl>
<DefaultPlayersIconUrl>https://i.imgur.com/lLTpjL2.png</DefaultPlayersIconUrl>
<DisableRocketWrapMessage>true</DisableRocketWrapMessage>
<ServerTextReplaces>
<TextReplace OldValue="[[" NewValue="<" />
<TextReplace OldValue="]]" NewValue=">" />
</ServerTextReplaces>
<!-- Set to TRUE to enable chat formatting options below -->
<EnableChatFormat>false</EnableChatFormat>
<ChatFormat>{CHAT_MODE}{PREFIXES}{PLAYER_NAME}{SUFFIXES}: {MESSAGE}</ChatFormat>
<ChatModePrefixes>
<Global />
<Area>[A] </Area>
<Group>[G] </Group>
</ChatModePrefixes>
<EnablePrefixes>true</EnablePrefixes>
<DisplayMultiplePrefixes>true</DisplayMultiplePrefixes>
<PrefixesFormat>[{PREFIXES}] </PrefixesFormat>
<PrefixFormat>{color={COLOR}}{PREFIX}{/color}</PrefixFormat>
<EnableSuffixes>true</EnableSuffixes>
<DisplayMultipleSuffixes>true</DisplayMultipleSuffixes>
<IncludeParentGroups>true</IncludeParentGroups>
<SuffixesFormat> [{SUFFIXES}]</SuffixesFormat>
<SuffixFormat>{color={COLOR}}{SUFFIX}{/color}</SuffixFormat>
</ChatManagerConfiguration>
Chat Formatting and Permissions Example
For the chat formatting features to work with group prefixes and suffixes, you need to configure your permission groups properly. Here's an example of how to set up your Permissions.config.xml file with groups that have prefixes, suffixes, and colors:
<?xml version="1.0" encoding="utf-8"?>
<RocketPermissions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DefaultGroup>default</DefaultGroup>
<Groups>
<Group>
<Id>default</Id>
<DisplayName>Player</DisplayName>
<Prefix>PLAYER</Prefix>
<Suffix>P</Suffix>
<Color>white</Color>
<Priority>100</Priority>
<Permissions>
<!-- Permissions here -->
</Permissions>
</Group>
<Group>
<Id>vip</Id>
<DisplayName>VIP</DisplayName>
<Prefix>VIP</Prefix>
<Suffix>V</Suffix>
<Color>yellow</Color>
<ParentGroup>default</ParentGroup>
<Priority>50</Priority>
<Permissions>
<!-- VIP Permissions here -->
</Permissions>
</Group>
<Group>
<Id>admin</Id>
<DisplayName>Admin</DisplayName>
<Prefix>ADMIN</Prefix>
<Suffix>A</Suffix>
<Color>red</Color>
<Priority>1</Priority>
<Permissions>
<!-- Admin Permissions here -->
</Permissions>
</Group>
</Groups>
</RocketPermissions>
With the above permission configuration and Chat Manager's chat formatting enabled, here's how chat messages would appear:
- Default player: [PLAYER] PlayerName [P]: Hello everyone!
- VIP player: [VIP] PlayerName [V]: Hello everyone!
- Admin: [ADMIN] PlayerName [A]: Hello everyone!
- Player with all ranks and
DisplayMultiplePrefixesenabled: [ADMIN, VIP, PLAYER] PlayerName [A, V, P]: Hello everyone!
Each prefix and suffix will be colored according to the group's color setting. When a player belongs to multiple groups, the prefixes and suffixes will be ordered by the Priority value of each group (lower numbers display first). The example above shows multiple prefixes and suffixes ordered by priority (Admin: 1, VIP: 50, Default: 100).
Per-Player Chat Formats
On top of group-based formatting, you can give an individual player their own chat format that overrides the global ChatFormat. This is perfect for owners, content creators, or donation perks — a custom personal tag a player buys from your store.
Per-player formats live in their own file — Rocket/Plugins/ChatManager/PlayerFormats.json — so they never clutter the main config. There's no separate switch to flip: they're applied automatically whenever EnableChatFormat is true, and if the file has no matching entry, nothing changes. When the file is first created it contains a single inert sample entry (PlayerId 0 with no name) that matches nobody — it's just there to show the format, so feel free to edit or delete it.
File format
PlayerFormats.json is a list of entries. Each entry matches a player by their SteamID (PlayerId) and supplies a Format using the same placeholders as ChatFormat. The optional PlayerName field is just a label so you can tell whose SteamID an entry belongs to:
[
{
"PlayerId": 76561198149484559,
"PlayerName": "Wicked Death",
"Format": "{CHAT_MODE}{color=#000000}[Wicked Death]{/color} {b}{PLAYER_NAME}{/b}: {MESSAGE}"
},
{
"PlayerId": 76561198000000000,
"PlayerName": "SomeStreamer",
"Format": "{CHAT_MODE}{color=#9146ff}[Twitch]{/color} {PLAYER_NAME}: {MESSAGE}"
}
]
PlayerId— the player's SteamID64. This is the only match key.PlayerName— optional label/comment so you can tell whose SteamID an entry belongs to. It is not used for matching (names are easy to change and copy, which would be spoofable). When you set a format with the command for an online player, their name is filled in here automatically.Format— the template. Supports every placeholderChatFormatdoes ({PLAYER_NAME},{MESSAGE},{CHAT_MODE},{PREFIXES},{SUFFIXES},{COLOR}) plus rich-text tags written with braces ({color=#33c1ff},{b},{/b}). Include{PREFIXES}/{SUFFIXES}if you still want the player's group ranks to show; leave them out for a clean standalone tag.
A player's entry replaces their whole template, so you stay in full control of whether ranks, chat-mode indicators, etc. appear.
Managing formats with commands
Instead of editing the file by hand, you can manage formats at runtime with the /chatformat command:
| Command | Description |
|---|---|
/chatformat set <player\|steamId> <format> |
Set a player's format |
/chatformat clear <player\|steamId> |
Remove a player's format |
/chatformat reload |
Reload PlayerFormats.json from disk |
- Alias:
/cformat. Permission:chatformat. - The command is admin / console only — it is not meant for player self-service. It works from RCON, so donation stores (Tebex, PayNow, etc.) can grant a format the moment a player buys it.
<player>can be the name of an online player or a raw SteamID64. Use the SteamID for offline players (e.g. a store granting a perk while the buyer isn't connected) — the format is saved and applies the next time they chat.- When a perk lapses, run
/chatformat clear <steamId>to remove it.
Example a store might run on purchase:
chatformat set 76561198149484559 {CHAT_MODE}{color=#ffd700}[Gold]{/color} {b}{PLAYER_NAME}{/b}: {MESSAGE}
Editing the file while the server is running
PlayerFormats.json is both hand-editable and command-managed. The commands re-read the file before writing, so they won't overwrite edits you've already saved. However, if you keep the file open in an editor and a command runs before you save, saving afterwards can overwrite that command's change. To stay safe: use the commands, or edit the file and run /chatformat reload — and avoid leaving it open in an editor on a live server while donation commands may fire.
Troubleshooting
- If chat formatting doesn't work even when
EnableChatFormatis set totrue, this plugin may be conflicting with other chat plugins. Try disabling other chat/formatting plugins to identify conflicts. - Make sure your permission group prefixes and suffixes are properly configured in your permissions configuration.