HeroChat
A simple and customizable chat plugin for Hytale servers.
Features
- [x] Infinite configurable channels
- [x] Proximity channels
- [x] Private chat with other players
- [x] Focus on a specific channel or private chat
- [x] Mute a channel as a player to avoid unwanted chat spam
- [x] Colors, gradients & formatting with bold, italic and monospaced
- [x] Customizable player nicknames with permissions to limit usage of colors and style
- [x] Support for Minecraft color codes(e.g.
&a,&l, etc.) - [x] Chat spy, see all messages on all channels from the server
- [x] Custom UI for players to easily manage their chat settings
- [x] Custom UI for server admins to customize the plugin with ease
- [x] Permissions to let the players use colors & style on chat messages
- [x] Custom components to allow for reusable placeholders and better organization
- [x] Multiple spam checks including repeated messages & capslock spam
- [x] Chat cooldown configurable per channel
- [x] Chat auto-mod with support for regex
- [x] Players can ignore other players
- [x] Support for PlaceholderAPI everywhere in the plugin
- [ ] Player mention system
- [ ] Discord integration & sync
- [ ] URL filter to prevent ads on chat
- [ ] Chat logging to see a player/server history of chat messages
Commands
/chat- Opens the chat customization menu;/chat settings- Opens the user settings menu;/chat spy- Toggle chat spy;/ignore <player>- Ignore a player, hiding their messages;/unignore <player>- Unignore a player, showing their messages again;/tell <player>- Change the default chat to this private channel;/tell <player> <message>- Sends a private message;/nickname set <nickname>- Changes your nickname;/nickname clear- Clears your nickname;/<channel-id>- Change the default chat to this channel;/<channel-id> <message>- Sends a message in a specific channel
Permissions
herochat.commands.chat- Permission for player to use the/chatcommandherochat.commands.nickname- Permission for player to use the/nicknamecommandherochat.commands.nickname.set- Permission for player to use the/nickname setcommandherochat.commands.nickname.clear- Permission for player to use the/nickname clearcommandherochat.commands.ignore- Permission for player to use the/ignorecommandherochat.commands.unignore- Permission for player to use the/unignorecommandherochat.nickname.style.colors- Permission to use colors on the nicknameherochat.nickname.style.rainbow- Permission to use rainbow on the nicknameherochat.nickname.style.gradient- Permission to use gradient on the nicknameherochat.nickname.style.bold- Permission to use bold on the nicknameherochat.nickname.style.italic- Permission to use italic on the nicknameherochat.nickname.style.monospaced- Permission to use monospaced on the nicknameherochat.chat.mute-channels- Permission for player to mute channelsherochat.chat.style.colors- Permission to use colors on the chatherochat.chat.style.rainbow- Permission to use rainbow on the chatherochat.chat.style.gradient- Permission to use gradient on the chatherochat.chat.style.bold- Permission to use bold on the chatherochat.chat.style.italic- Permission to use italic on the chatherochat.chat.style.monospaced- Permission to use monospaced on the chatherochat.chat.message.colors-Deprecated - Will be removed soon!Permission for player to use colors on chatherochat.chat.message.formatting-Deprecated - Will be removed soon!Permission for player to use formatting tags on chatherochat.chat.message-color- Permission for player to change the default message color on chatherochat.bypass.cooldown- Permission to bypass the cooldown checksherochat.bypass.spam- Permission to bypass the spam checksherochat.bypass.capslock- Permission to bypass the capslock spam checksherochat.bypass.automod- Permission to bypass the auto-modherochat.admin.spy- Permission to enable chat spyherochat.admin.settings- Permission to open the admin settings menu
Config
You can create as many chat components as you want and need. You can also create components available only on a
specific channel. A channel ID is its file name.
Global config
{
"DefaultChat": "global",
"enableMinecraftColors": false, // Enable &a, &4, etc colors as in minecraft
"NicknameMaxLength": 16,
"Components": {
"prefix": {
"Text": "{#555555}[{#55FFFF-#FF55FF}HeroChat{#555555}] "
},
"component_with_permission": {
"Text": "{#00AAAA}[Admin]",
"Permission": "tag.admin" // Optional
}
}
}
Private channel config
{
"Name": "Whisper",
"Commands": [
"tell",
"w",
"whisper"
],
"SenderFormat": "Message to {target_username}{#555555}{bold}> {#aaa}{message}",
"ReceiverFormat": "Message from {player_username}{#555555}{bold}> {#AAAAAA}{message}",
"Permission": "chat.tell", // Optional
"CapslockFilter": {
"enabled": true,
"percentage": 50,
"minLength": 5
},
"Cooldowns": {
"chat.member": 1000, // Cooldown in miliseconds
"chat.vip": 300,
"chat.admin": 0
},
"Components": {}
}
Channel config
{
"Name": "Local",
"Commands": [
"l",
"local"
],
"Format": "{color}[Local] {#DDDDDD}{player_username}{#555555}{bold}> {color}{message}",
"Permission": "chat.local", // Optional
"Distance": 60, // Optional
"CrossWorld": false, // Optional
"CapslockFilter": {}, // Optional - defaults to disabled
"Cooldowns": {},
"Components": {
"color": {
"Text": "{#FFFF55}"
}
}
}
Auto-Mod Config
{
"Enabled": true,
"DefaultBlockMessage": "&cYour message contains forbidden content.",
"Rules": [
{
// Words to block/replace
"Patterns": [ "badword", "word" ],
// If not set, the message is BLOCKED and the player receives the BlockMessage
// or the DefaultBlockMessage if not set.
// If set (e.g., "***"), the pattern is replaced by this.
"Replacement": "***"
},
{
"Patterns": [ "\\b(?:\\d{1,3}\\.){3}\\d{1,3}\\b" ],
// Tell the plugin this is a regex pattern
"IsRegex": true,
"BlockMessage": "&cPlease do not share IP addresses!"
},
{
"Patterns": [ "\\b(https?://|www\\.)\\S+\\b" ],
"IsRegex": true,
"BlockMessage": "&cPlease do not advertise!"
}
]
}
Messages Config
{
"ChannelNoPermission": "{prefix}{#FF5555}You do not have permission to send messages in this channel.",
"ChannelNotFound": "{prefix}{#FF5555}Channel not found.",
"ChannelJoined": "{prefix}{#AAAAAA}You are now talking in {#FFFFFF}{channel}{#AAAAAA}.",
"ChannelDisabled": "{prefix}{#FF5555}You have disabled this channel. Enable it again to be able to talk here.",
"ChatNoRecipients": "{prefix}{#FF5555}No one hears you.",
"ChatCooldown": "{prefix}{#FF5555}Please wait before sending another message.",
"ChatSpamWarning": "{prefix}{#FF5555}Please do not spam.",
"ChatCapslockWarning": "{prefix}{#FF5555}Please do not abuse capslock!"
"IgnoreSelf": "{prefix}{#FF5555}You cannot ignore yourself.",
"IgnoreSuccess": "{prefix}{#AAAAAA}You ignored {#FFFFFF}{player}{#AAAAAA}.",
"IgnoreAlready": "{prefix}{#FF5555}You already ignored {#FFFFFF}{player}{#FF5555}.",
"UnignoreSelf": "{prefix}{#FF5555}You cannot unignore yourself.",
"UnignoreSuccess": "{prefix}{#AAAAAA}You unignored {#FFFFFF}{player}{#AAAAAA}.",
"UnignoreNotIgnored": "{prefix}{#FF5555}{#FFFFFF}{player}{#FF5555} is not ignored.",
"PrivateChatStarted": "{prefix}{#AAAAAA}You are now in a private conversation with {#FFFFFF}{target}{#AAAAAA}.",
"PrivateChatPlayerNotFound": "{prefix}{#FF5555}The player is not online.",
"PrivateChatSelf": "{prefix}{#FF5555}You cannot start a private conversation with yourself.",
"PrivateChatNotActive": "{prefix}{#FF5555}You are not in a private conversation.",
"SpyNoPermission": "{prefix}{#FF5555}You do not have permission to use chat spy.",
"SpyToggle": "{prefix}{#AAAAAA}Chat spy has been {status}{#AAAAAA}.",
"NicknameNoPermission": "{prefix}{#FF5555}You do not have permission to change your nickname.",
"NicknameTooLong": "{prefix}{#FF5555}Nickname is too long.",
"NicknameContainsSpaces": "{prefix}{#FF5555}Your nickname can not contain spaces.",
"NicknameSet": "{prefix}{#AAAAAA}Your nickname has been set to {#FFFFFF}{nickname}{#AAAAAA}.",
"NicknameReset": "{prefix}{#AAAAAA}Your nickname has been reset.",
"MenuNickname": "Nickname",
"MenuFocusedChannel": "Focused Channel",
"MenuMutedChannels": "Muted Channels",
"MenuMessageColor": "Message Color",
"MenuSpyMode": "Spy Mode",
"MenuSaveButton": "Save",
"MenuCancelButton": "Close",
"MenuSuccessNotificationTitle": "Settings Saved",
"MenuSuccessNotificationDescription": "Your settings were successfully saved!"
}
Available placeholders
If you are using PlaceholderAPI in your server you can use all of its placeholders,
but using the format {placeholder}.
Default placeholders available:
{message}- The message to be sent by the player{player_username}- The player username{player_nickname}- The player nickname if set, or else defaults to the player username
Formatting placeholders
{#ffffff}- Hex color{#ffffff-#aaffaa}- Gradient text color{rainbow}- Raibow text color{bold}{italic}{monospaced}
Plugin Compatibility
LuckPerms
To use this plugin with LuckPerms you must disable chat formatting on the LuckPerms config:
chat-formatter:
enabled: false # <== Change this to false
message-format: "<prefix><username><suffix>: <message>"
Screenshots






