Better Chat

Customize chat colors, formatting, prefix and more

Total Downloads: 21,002 - First Release: Apr 21, 2015 - Last Update: Oct 2, 2017

4.98889/5, 90 likes
  1. LaserHydra
    Configuration File:
    Better Chat lets you change the name colors and prefixes as you want to.

    If you have this installed and you see somebody called [Plugin Developer] LaserHydra, thats me visiting your server.

    Easily edit your oxide/data/BetterChat.json file using the BetterChat Group Manager (Windows only):

    BetterChat Addons:

    Plugins which use BetterChat:

    All arguments inside [ ] are optional!
    [time] should be a formatted time. Ex. 60m for 60 minutes.
    | stands for 'or'.


    • /chat group add <group> create a new group
    • /chat group remove <group> remove a group
    • /chat group set <group> <setting> <value> change a group setting
    • /chat group list list all groups
    • /chat user add <player|steamid> <group> add a user to a group
    • /chat user remove <player|steamid> <group> remove a user from a group
    • /chat user groups <player|steamid> list groups of a user
    Console Commands:
    • chat group add <group> create a new group
    • chat group remove <group> remove a group
    • chat group set <group> <setting> <value> change a group setting
    • chat group list list all groups
    • chat user add <player|steamid> <group> add a user to a group
    • chat user remove <player|steamid> <group> remove a user from a group
    • chat user groups <player|steamid> list groups of a user
    • betterchat.admin for the /chat command
    Granting permissions:
    Use following CONSOLE commands to grant permissions
    • grant user <player> <permission> grant permission to player
    • grant group <group> <permission> grant permission to group
    Chat-/Console Formatting :
    • You can do a lot with the "Formatting" of a group. you can customize it with
      • {Title} = Group Title
      • {Username} = Player Name
      • {ID} = Player ID
      • {Message} = Message
      • {Date} = Date Stamp
      • {Time} = Time Stamp
      • {Group} = Primary Group
    ... but also just add words, letters, numbers, and symbols to it. You could just put the Title behind the name for example.

    Default Configfile:
    Code (Javascript):
        "Maximal Titles": 3
    Default Languagefile:
    Code (Javascript):

      "Group Already Exists": "Group '{group}' already exists.",
      "Group Does Not Exist": "Group '{group}' doesn't exist.",
      "Group Field Changed": "Changed {field} to {value} for group '{group}'.",
      "Invalid Field": "{field} is not a valid field. Type 'chat group set' to list all existing fields.",
      "Invalid Value": "'{value}' is not a correct value for field '{field}'! Should be a '{type}'.",
      "Player Already In Group": "{player} already is in group '{group}'.",
      "Added To Group": "{player} was added to group '{group}'.",
      "Player Not In Group": "{player} is not in group '{group}'.",
      "Removed From Group": "{player} was removed from group '{group}'."

    For Developers:

    • OnBetterChat(Dictionary<string, object> data)
      • The data dictionary is entirely mutable - Change and return data dictionary to override chat message data
      • Dictionary<string, object>
        • Player (IPlayer) - player sending the message
        • Text (string) - text sent to chat
        • Titles (List<string>) - all titles applied to message
        • PrimaryGroup (string) - name of players primary group
        • BlockedReceivers (List<string>) - list of userids which should not receive the message
        • Username
          • Color (string) - color of the username
          • Size (int) - font size of the username
        • Message
          • Color (string) - color of the sent text
          • Size (int) - font size of the sent text
        • Format
          • Chat (string) - format for chat output
          • Console (string) - format for console output

    API calls:
    • private bool API_AddGroup(string group)
    • private List<object> API_GetUserGroups(IPlayer player)
    • private void API_RegisterThirdPartyTitle(Plugin plugin, Func<IPlayer, string> titleGetter)
    • private string API_GetFormattedMessage(IPlayer player, string message, bool console = false)
    • private string API_GetFormattedUsername(IPlayer player)
    • private ChatGroup.SetFieldResult? API_SetGroupField(string group, string field, string value)
    • private bool API_GroupExists(string group)