Chat 
| Module info | |
|---|---|
| Configuration | chat.yml | 
| Manager | ChatManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module controls the server's chat. It is composed of several sub-modules and it needs to be enabled to make them work.
| Sub-modules Formatted chat Chat channels Antispam Player ping Private messages Player ignore Hover info Instant emojis Staff chat Chat log  | 
Default configuration (chat.yml in Bukkit 1.13+)
chat:
  enabled: true
  event:
    override: true
    priority: HIGH
  format: '&7«&f{prefix}{tag_name_color}{player}{suffix}&7» &f'
  recognized-tlds:
  - com
  - net
  - org
  - me
  - io
  - edu
  - gov
  - int
  - info
  - pro
  - xyz
  - gg
  - dev
  - link
  - eu
  - it
  - de
  - fr
  - es
  - br
  - jp
  - ru
  - uk
  - co.uk
  placeholder-types:
  - PLAYER
  formatted-chat:
    enabled: true
    send-anyway: true
  channels:
    enabled: false
    reading-notification-enabled: true
    spy:
      on-join-enabled: true
      format: '&7«&8[&4&lS&8] &f{prefix}{tag_name_color}{player}{suffix}&7» &f'
    default:
      listening:
      - default
      - global
      writing: default
    values:
      default:
        display-name: Default
        format: '&7«&f{prefix}{tag_name_color}{player}{suffix}&7» &f'
        type: LOCAL
        console-included: true
        aliases:
        - ranged
        - local
        - l
        languages:
        - '*'
        range: 50
      global:
        display-name: Global
        prefix: '!'
        format: '&7«&8[&2&lG&8] &f{prefix}{tag_name_color}{player}{suffix}&7» &f'
        type: GLOBAL
        access-restricted: false
        writing-restricted: true
        console-included: true
        aliases:
        - g
        languages:
        - '*'
  antispam:
    enabled: true
    leet-filter-enabled: true
    prevention:
      urls:
        enabled: true
        allowed-domains:
        - remigio07.me
        - megaproserver.com
        - youtube.com
        whitelist:
        - spigotmc.org/forums
      ips:
        enabled: true
        whitelist:
        - 127.0.0.1
    seconds-between-messages: 2
    seconds-between-same-messages: 10
    max-caps-length: 4
    max-caps-percentage: 50.0
    highlight-color: '&4&n'
    messages-whitelist:
    - hello
    - hey
    - ok
    - ciao
    words-blacklist:
    - ' arse '
    - arsehole
    - ' ass '
    - asshole
    - bastard
    - bitch
    - blowjob
    - bollock
    - bullshit
    - cocksucker
    - ' crap'
    - ' cum'
    - cunt
    - dick
    - faggot
    - fuck
    - gtfo
    - handjob
    - kys
    - nigga
    - nigger
    - pussy
    - ' shit'
    - slut
    - 'twat '
    - ' wank'
    - whore
    - arrap
    - bocchin
    - ' caca'
    - caga
    - ' cazz'
    - checc
    - coglion
    - cojon
    - culo
    - ditalin
    - figa
    - fotter
    - fottut
    - froci
    - merd
    - mignott
    - minchi
    - negr
    - puttan
    - pompin
    - ricchion
    - sborr
    - stronz
    - troia
    - ' troie '
    - zoccola
    - zoccole
  player-ping:
    enabled: true
    at-sign-required: false
    per-player-cooldown: 10s
    color: '&b'
    sound:
      enabled: true
      id: ENTITY_EXPERIENCE_ORB_PICKUP
      volume: 1.0
      pitch: 1.0
    titles:
      enabled: true
      fade-in-ms: 500
      stay-ms: 3500
      fade-out-ms: 1000
      titles:
        english: '&b@{player}'
        italian: '&b@{player}'
      subtitles:
        english: '&ehas pinged you in the chat'
        italian: '&eti ha menzionato in chat'
  private-messages:
    enabled: true
    format:
      sent: '&7«&8[&b✎&8] &fYou &e➡ &f{recipient}&7» &f'
      received: '&7«&8[&b✎&8] &f{sender} &e➡ &fYou&7» &f'
      socialspy: '&7«&8[&4&lSS&8] &f{sender} &e➡ &f{recipient}&7» &f'
      placeholder:
        sender: '{player}'
        recipient: '{player}'
        placeholder-types:
        - JUST_NAME
    sound:
      enabled: true
      id: ENTITY_EXPERIENCE_ORB_PICKUP
      volume: 1.0
      pitch: 1.0
    advancements:
      enabled: true
      format: |-
        &8[&b✎&8] &f{sender_plain}
        &7
      max-message-length: 19
      icon:
        material: WRITABLE_BOOK
        glowing: true
    bypass-antispam-checks:
    - CAPS
    - FLOOD
    - SPAM
    - SWEAR
    socialspy-on-join-enabled: true
    muted-players-blocked: false
    reply-to-last-sender: true
  player-ignore:
    enabled: true
  hover-info:
    enabled: true
    rank:
      enabled: true
    player:
      enabled: true
      click:
        action: SUGGEST_TEXT
        value: '/msg {player} '
      placeholder-types:
      - PLAYER
      - SERVER
      hovers:
        english: |-
          &a&l{player}
          &7Language: &f{language_display_name}
          &7Time: &f{date_hour}
          &7Ping: {ping_format} ms
          &e&oClick to send a /msg!
        italian: |-
          &a&l{player}
          &7Lingua: &f{language_display_name}
          &7Orario: &f{date_hour}
          &7Ping: {ping_format} ms
          &e&oClicca per inviare un /msg!
    url:
      enabled: true
      default-https: true
      color: '&b&n'
      hovers:
        english: '&9[Click here to open the URL]'
        italian: '&9[Clicca qui per aprire l''URL]'
    player-ping:
      enabled: true
    instant-emoji:
      enabled: true
      hovers:
        english: |-
          {emoji} &f{emoji_id}
          &7A default emoji. You can use this
          &7emoji everywhere on this server.
        italian: |-
          {emoji} &f{emoji_id}
          &7Un'emoji predefinita. Puoi usare questa
          &7emoji ovunque su questo server.
  instant-emojis:
    enabled: true
    tones:
    - '#FFFF55'
    - '#F9E0C1'
    - '#E3C29C'
    - '#C6956C'
    - '#A06940'
    - '#5C473C'
    values:
      :): '{emojis_tone}☺'
      <3: '&c❤'
      ':smile:': '{emojis_tone}😃'
      ':slight_smile:': '{emojis_tone}🙂'
      ':grin:': '{emojis_tone}😁'
      ':grinning:': '{emojis_tone}😀'
      ':sunglasses:': '{emojis_tone}😎'
      ':weary:': '{emojis_tone}😩'
      ':tired:': '{emojis_tone}😫'
      ':money:': '&a🤑'
      ':nerd:': '{emojis_tone}🤓'
      ':skull:': '&f☠'
      ':alien:': '&a👽'
      ':thumbs_up:': '{emojis_tone}👍'
      ':thumbs_down:': '{emojis_tone}👎'
      ':note:': '&9🎵'
      ':pizza:': '&6🍕'
      ':copyright:': ©
      ':trademark:': ™
      ':tm:': ™
      ':alpha:': α
      ':beta:': β
      ':gamma:': γ
      ':euro:': €
      ':pound:': £
      ':yen:': ¥
      ':infinity:': ∞
      ':pi:': π
      ':degree:': °
  staff-chat:
    enabled: true
    format:
      player: '&7«&8[&6&lSC&8] &f{tag_prefix}{tag_name_color}{player}{tag_suffix}&7» &f'
      console: '&7«&8[&6&lSC&8] &8[&5&lC&8] &fConsole &4[***]&7» &f'
    placeholder-types:
    - PLAYER
    - SERVER
  log:
    enabled: true
    print-to-log-file: false
    messages-auto-cleaner-period: 120d2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
Setup 
The following snippet of code represents and explains the chat's configuration.
chat: 
  enabled: true # whether to enable or disable this module
  event:
    override: true # read below
    priority: HIGH # read below
  format: '&7«&f{prefix}{tag_name_color}{player}{suffix}&7» &f{chat_color}' # players' messages' format in chat
  recognized-tlds: # read below
  - com
  - net
  - org
  - me
  - io
  - edu
  - gov
  - int
  - info
  - pro
  - xyz
  - gg
  - dev
  - link
  - eu
  - it
  - de
  - fr
  - es
  - br
  - jp
  - ru
  - uk
  - co.uk
  placeholder-types: # read below
  - PLAYER
  # ...formatted chat's settings...2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Chat event 
By default ChatPlugin takes over the chat event to ensure the correct functioning of some features.
If you have other plugins that modify the chat event's format, disable chat.event.override.
NOTE
The following features do not work with the override mode disabled:
If you have other plugins that modify the chat event's message or cancel it that are not working, you may need to change ChatPlugin's event's priority: the chat event is common amongst all plugins and it is called sequentially, following a certain order. You need to find the correct priority to make everything work.
Depending on the environment, the following may be specified at chat.event.priority:
Bukkit 
LOWEST: ChatPlugin will allow other plugins to fully customize the eventLOW: event of low priorityNORMAL: event of normal priorityHIGH: default and recommended valueHIGHEST: ChatPlugin will have the final say in what happens to the event
Sponge 
FIRST: ChatPlugin will allow other plugins to fully customize the eventEARLY: event of low priorityDEFAULT: event of normal priorityLATE: default and recommended valueLAST: ChatPlugin will have the final say in what happens to the event
If you are unable to solve the issue, please open a ticket on our Discord server.
The recognized-tlds setting is used by the antispam and other modules to identify URLs sent by players. You can find a complete list here.
Just like for the other modules, you have to specify which placeholder types you wish to use. Refer to the Modules/Placeholders page for more info.
Formatted chat 
| Module info | |
|---|---|
| Configuration | chat.formatted-chat in chat.yml | 
| Manager | FormattedChatManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows players who have the chatplugin.formatted-chat permission to write formatted and colored messages in the chat.
Setup 
The following snippet of code represents and explains the formatted chat's configuration.
  # ...chat's settings...
  formatted-chat: 
    enabled: true # whether to enable or disable this module
    send-anyway: true # read below
  # ...chat channels settings...34
35
36
37
The send-anyway option controls if formatted messages should be always sent, even if players do not have the required permission. In that case, the message will be sent not formatted and they will receive a warning message found at chat.no-format in the player's language's messages' file.
Chat channels 
| Module info | |
|---|---|
| Configuration | chat.chat-channels in chat.yml | 
| Manager | ChatChannelsManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module separates the chat into different channels. All messages are logged and you can read them using the channel spy mode. Every player can listen to an unlimited number of channels but may write in one at a time.
The example-id channel may require the following permissions:
chatplugin.channels.example-idto see, join and listen to it, if access is restrictedchatplugin.channels.example-id.writeto write in it, if writing is restricted
Setup 
The following snippet of code represents and explains the chat channels' configuration.
  # ...formatted chat's settings
  channels: 
    enabled: false # whether to enable or disable this module
    reading-notification-enabled: true # whether to send the "chat.nobody-read" message
    spy:
      on-join-enabled: true # whether to enable the channel spy mode on join for Staff members
      format: '&7«&8[&4&lS&8] &f{prefix}{tag_name_color}{player}{suffix}&7» &f' # channel spy's format
    default:
      listening: # channels to listen to automatically to on join
      - default
      - global
      writing: default # channel to write in automatically on join
    values:
      default: # channel's ID
        display-name: Default # channel's display name
        format: '&7«&f{prefix}{tag_name_color}{player}{suffix}&7» &f' # channel's chat format
        type: LOCAL # read below
        console-included: true # whether the console should receive the channel's messages
        aliases: # aliases associated to the channel
        - ranged
        - local
        - l
        languages: # IDs of languages spoken in the channel
        - '*'
        range: 50 # custom property of local channels - read below
      global:
        display-name: Global
        prefix: '!' # prefix to directly send messages to the channel
        format: '&7«&8[&2&lG&8] &f{prefix}{tag_name_color}{player}{suffix}&7» &f'
        type: GLOBAL
        access-restricted: false # read below
        writing-restricted: true # read below
        console-included: true
        aliases:
        - g
        languages:
        - '*'
  # ...antispam's settings...37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
NOTE
This module is disabled by default.
There are several types of channel with different scopes and placeholders and properties that you can check out below. When configuring channels, you have to specify the common and custom properties. For example, check the range property of the default channel.
Feel free to edit or remove the default channels.
Adding channels 
To add a new channel, you need to specify its ID and its properties. The ID has to respect the following pattern: ^[a-zA-Z0-9-_]{2,36}$.
    # ...chat channels' settings...
      # ...default channels...
      new-channel: # ID - required // [!code focus:11]
        display-name: World
        format: '&7«&f{prefix}{tag_name_color}{player}{suffix}&7» &f'
        type: WORLD # type - required
        access-restricted: false
        writing-restricted: false
        console-included: true
        aliases:
        - w
        languages:
        - '*'
    # ...antispam's settings...72
73
74
75
76
77
78
79
80
81
82
83
84
...which, after a /chatplugin reload, will load the channel.
NOTE
Messages sent in a network-wide channel will be sent to all channels with the same ID under the proxy. If you create one in your lobby, make sure to also add it to every server that should be reached by its messages.
Placeholders 
Some channel types offer custom placeholders, but every channel features the following common placeholders:
{channel_id}: channel's ID{channel_display_name}: channel's display name or ID if missing{channel_prefix}: channel's prefix or message atplaceholders.not-presentif missing{channel_type}: channel's type (format @chat.channel.types){channel_aliases}: channel's aliases{channel_languages}: channel's languages' display names{channel_access}: channel's access restrictions (format @chat.channel.restrictions){channel_writing}: channel's writing restrictions (format @chat.channel.restrictions){channel_listeners}: channel's listeners' names{channel_listeners_amount}: channel's listeners' amount
Types 
The following channel types are currently available:
| Type | Custom properties | Additional placeholders | Proxy-wide | Free version | 
|---|---|---|---|---|
LOCAL | 
  | 
  | ❌ | ✔ | 
WORLD | ❌ | ✔ | ||
GLOBAL | ❌ | ✔ | ||
NETWORK | ✔ | ❌ | ||
DISCORD | 
  | 
  | ✔ | ❌ | 
TELEGRAM | 
  | 
  | ✔ | ❌ | 
NOTE
The DISCORD and TELEGRAM channel types have not been implemented yet.
Commands 
/chatchannel command 
The /chatchannel <join|leave|switch|info|list> command allows players to interact with loaded channels.
Its messages are configurable at chat.channel in the messages' files.
Refer to the Getting started/Commands/User page for more info.
/chatchannelspy command 
The /chatchannelspy command allows Staff members to spy a channel's messages without joining it.
Its messages are configurable at chat.channel.spy in the messages' files.
Refer to the Getting started/Commands/Admin page for more info.
Antispam 
| Module info | |
|---|---|
| Configuration | chat.antispam in chat.yml | 
| Manager | AntispamManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
ChatPlugin provides a powerful antispam solution for the server's chat. It is able to block URLs, IP addresses, caps, flood, spam and swearing. A notification is sent to players who have the chatplugin.antispam.notification permission whenever a player sends disallowed text:

Setup 
The following snippet of code represents and explains the antispam's configuration.
  # ...chat channels' settings...
  antispam: 
    enabled: true # whether to enable or disable this module
    leet-filter-enabled: true # whether to filter leetspeak
    prevention:
      urls:
        enabled: true # whether to block URLs
        allowed-domains: # list of allowed domains
        - remigio07.me
        - megaproserver.com
        - youtube.com
        whitelist: # list of allowed pages
        - spigotmc.org/forums
      ips:
        enabled: true # whether to block IP addresses
        whitelist: # list of allowed IP addresses
        - 127.0.0.1
    seconds-between-messages: 2 # seconds to wait between two messages
    seconds-between-same-messages: 10 # seconds to wait between two identical messages
    max-caps-length: 4 # max caps length allowed before checking the next option
    max-caps-percentage: 50 # max caps percent allowed
    highlight-color: '&4&n' # color used to highlight disallowed text
    messages-whitelist: # list of messages that will bypass the anti flood
    - hello
    - hey
    - ok
    - ciao
    words-blacklist: # list of disallowed words
    - ' arse '
    - arsehole
    - ' ass '
    - asshole
    - bastard
    - bitch
    - blowjob
    - bollock
    - bullshit
    - cocksucker
    - ' crap'
    - ' cum'
    - cunt
    - dick
    - faggot
    - fuck
    - gtfo
    - handjob
    - kys
    - nigga
    - nigger
    - pussy
    - ' shit'
    - slut
    - 'twat '
    - ' wank'
    - whore
    - arrap
    - bocchin
    - ' caca'
    - caga
    - ' cazz'
    - checc
    - coglion
    - cojon
    - culo
    - ditalin
    - figa
    - fotter
    - fottut
    - froci
    - merd
    - mignott
    - minchi
    - negr
    - puttan
    - pompin
    - ricchion
    - sborr
    - stronz
    - troia
    - ' troie '
    - zoccola
    - zoccole
  # ...player ping's settings...73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Note that some disallowed words start or end with a space. Take the word "ass" as an example. Both "assault" and "glass" contain that word, respectively in the starting and final position, even though the antispam must not filter them.
To allow characters to be written before the word, add a space in front of it. To allow characters after it, add a space at the end. To disallow the word completely, do not put any space.
Checks 
The antispam performs several checks to decide whether the player can send the message or not:
| Index | Check | Description | Bypass permission | Message's path | 
|---|---|---|---|---|
| 1 | Permission | Does the player not have the parent bypass permission? | chatplugin.antispam.bypass | ❌ | 
| 2 | URL | Does the message contain any disallowed URLs? | ❌ | chat.antispam.no-url | 
| 3 | IP address | Does the message contain any disallowed IP addresses? | ❌ | chat.antispam.no-ip-address | 
| 4 | Blacklisted word | Does the message contain any blacklisted words? | chatplugin.antispam.swear | chat.antispam.no-swear | 
| 5 | Caps | Does the message exceed the max caps length and percentage? | chatplugin.antispam.caps | chat.antispam.no-caps | 
| 6 | Flood | Has an identical message been sent recently? | chatplugin.antispam.flood | chat.antispam.no-flood | 
| 7 | Spam | Is the message not contained in the whitelist? | chatplugin.antispam.spam | chat.antispam.no-spam | 
If one of these checks is triggered, the player will not be able to send the message and they will receive the appropriate message (except in the first case).
Player ping 
| Module info | |
|---|---|
| Configuration | chat.player-ping in chat.yml | 
| Manager | PlayerPingManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows players who have the chatplugin.player-ping permission to mention and ping other players in the chat by writing their username:

Setup 
The following snippet of code represents and explains the player ping's configuration.
  # ...antispam's settings...
  player-ping: 
    enabled: true # whether to enable or disable this module
    at-sign-required: false # whether @ in front of names is required
    per-player-cooldown: 10s # cooldown to wait between two pings
    color: '&b' # the color pings in chat will have
    sound:
      enabled: true # whether players should hear a sound when pinged
      id: ENTITY_EXPERIENCE_ORB_PICKUP # the sound that pings will produce
      volume: 1.0 # the sound's volume [0 - 1]
      pitch: 1.0 # the sound's pitch [0 - 2]
    titles:
      enabled: true # whether to send titles to pinged players
      fade-in-ms: 500 # time for the title to fade in, in milliseconds
      stay-ms: 3500 # time for the title to stay on screen, in milliseconds
      fade-out-ms: 1000 # time for the title to fade out, in milliseconds
      titles:
        english: '&b@{player}' # main language's translation - required
        italian: '&b@{player}' # other language's translation - optional
      subtitles:
        english: '&ehas pinged you in the chat'
        italian: '&eti ha menzionato in chat'
  # ...private messages' settings...154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
This module requires the following permissions:
chatplugin.player-pingto mention other playerschatplugin.player-ping.everyoneto mention@everyonechatplugin.player-ping.bypassto bypass the cooldown set atper-player-cooldown
Refer to the Getting started/Syntax/Recognized IDs page to find out the sound IDs specifiable at sound.id.
When pinged, players will receive the message specified at chat.pinged in their language's messages' file.
Private messages 
| Module info | |
|---|---|
| Configuration | chat.private-messages in chat.yml | 
| Manager | PrivateMessagesManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows players and the console to send private messages to other players. All messages are logged and you can read them using the socialspy mode.
Setup 
The following snippet of code represents and explains the private messages' configuration.
  # ...player ping's settings...
  private-messages: 
    enabled: true # whether to enable or disable this module
    format:
      sent: '&7«&8[&b✎&8] &fYou &e➡ &f{recipient}&7» &f' # format displayed for sent messages
      received: '&7«&8[&b✎&8] &f{sender} &e➡ &fYou&7» &f' # format displayed for received messages
      socialspy: '&7«&8[&4&lSS&8] &f{sender} &e➡ &f{recipient}&7» &f' # format displayed for the socialspy mode
      placeholder:
        sender: '{player}' # text used to replace the {sender} placeholder
        recipient: '{player}' # text used to replace the {recipient} placeholder
        placeholder-types: # read below
        - JUST_NAME
    sound:
      enabled: true # whether players should hear a sound when receiving a private message
      id: ENTITY_EXPERIENCE_ORB_PICKUP # the sound that private messages will produce
      volume: 1.0 # the sound's volume [0 - 1]
      pitch: 1.0 # the sound's pitch [0 - 2]
    advancements:
      enabled: true # whether private messages should also be displayed as advancements (1.13+)
      format: |- # advancements' format (multi line)
        &8[&b✎&8] &f{sender_plain}
        &7
      max-message-length: 19 # private messages' max length for advancements
      icon:
        material: WRITABLE_BOOK # advancements' icon's material
        glowing: true # whether the advancements' icon should have the glowing effect
    bypass-antispam-checks: # antispam's checks to bypass when checking the messages
    - CAPS
    - FLOOD
    - SPAM
    - SWEAR
    socialspy-on-join-enabled: true # whether to enable the socialspy mode on join for Staff members
    muted-players-blocked: false # whether to block private messages sent by muted players
    reply-to-last-sender: true # whether to /reply to last sender or to last recipient
  # ...player ignore's settings...175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
Just like for the other modules, you have to specify which placeholder types you wish to use. Refer to the Modules/Placeholders page for more info.
Additionally, the following placeholders may be used:
{sender_plain}: sender's name or "Console"{recipient_plain}: recipient's name or "Console"
Note that advancements.format supports multi line strings.
Refer to the Getting started/Syntax/Recognized IDs page to find out the sound IDs specifiable at sound.id.
You can configure which antispam checks should be ignored when checking private messages at bypass-antispam-checks. The following values may be specified:
Refer to the table here to find out how these checks work.
Commands 
/whisper command 
The /whisper <player> <message> command allows players to send private messages to other players and the console.
Its messages are configurable at commands.whisper in the messages' files.
Refer to the Getting started/Commands/User page for more info.
/reply command 
The /reply <message> command allows players to reply to private messages.
Its only message is configurable at commands.reply.not-found in the messages' files.
Refer to the Getting started/Commands/User page for more info.
/socialspy command 
The /socialspy command allows Staff members to spy online players' private messages.
Its messages are configurable at commands.socialspy in the messages' files.
Refer to the Getting started/Commands/Admin page for more info.
Player ignore 
| Module info | |
|---|---|
| Configuration | chat.player-ignore in chat.yml | 
| Manager | PlayerIgnoreManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows players to ignore other players. This means that they will not receive their (private) messages and that they will not be @pinged in the chat.
Setup 
The following snippet of code represents and explains the player ignore's configuration.
  # ...private messages' settings...
  player-ignore: 
    enabled: true # whether to enable or disable this module
  # ...hover info's settings...208
209
210
/ignore command 
The /ignore <add|remove|clear|list> [player] command allows players to manage their ignored players.
Its messages are configurable at commands.ignore in the messages' files.
Refer to the Getting started/Commands/User page for more info.
Hover info 
| Module info | |
|---|---|
| Configuration | chat.hover-info in chat.yml | 
| Manager | HoverInfoManager | 
| Support | 1.8 | 
| Free version | ❌ | 
| Proxy-configurable | ❌ | 
This module displays custom text when players hover messages sent in the chat. It can also make them execute a specific action if they click them:

Setup 
The following snippet of code represents and explains the hover info's configuration.
  # ...player ignore's settings...
  hover-info: 
    enabled: true # whether to enable or disable this module
    rank:
      enabled: true # if ranks' descriptions should be displayed when hovering a player's rank
    player:
      enabled: true # if info should be displayed when hovering a player's name
      click: # action performed when a player clicks a player's name
        action: SUGGEST_TEXT # read below
        value: '/msg {player} ' # click event's value
      placeholder-types: # read below
      - PLAYER
      - SERVER
      hovers: # text to display when hovering
        english: |- # main language's translation - required (multi line)
          &a&l{player}
          &7Language: &f{language_display_name}
          &7Time: &f{date_hour}
          &7Ping: {ping_format} ms
 
          &e&oClick to send a /msg!
        italian: |- # other language's translation - optional (multi line)
          &a&l{player}
          &7Lingua: &f{language_display_name}
          &7Orario: &f{date_hour}
          &7Ping: {ping_format} ms
 
          &e&oClicca per inviare un /msg!
    url:
      enabled: true # if text should be displayed when hovering a URL in the chat
      default-https: true # whether to append https:// if it has not been specified
      color: '&b&n' # the URL's color and/or format codes
      hovers:
        english: '&9[Click here to open the URL]' # main language's translation - required (multi line)
        italian: '&9[Clicca qui per aprire l''URL]' # other language's translation - optional (multi line)
    player-ping:
      enabled: true # if text should be displayed when hovering a @mention in the chat
    instant-emoji:
      enabled: true # if text should be displayed when hovering an instant emoji in the chat
      hovers:
        english: |- # main language's translation - required (multi line)
          {emoji} &f{emoji_id}
          &7A default emoji. You can use this
          &7emoji everywhere on this server.
        italian: |- # other language's translation - optional (multi line)
          {emoji} &f{emoji_id}
          &7Un'emoji predefinita. Puoi usare questa
          &7emoji ovunque su questo server.
  # ...instant emojis' settings...210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
The plugin currently supports 4 click actions specifiable at click.action:
COPY_TEXT- copies text to the player's clipboard; only available on 1.15.2+ serversOPEN_URL- opens the URL in the player's browserSEND_MESSAGE- makes the player send a messageSUGGEST_TEXT- suggests text in the player's chat
Note that player.hovers, url.hovers and instant-emoji.hovers support multi line strings.
Just like for the other modules, you have to specify which placeholder types you wish to use. Refer to the Modules/Placeholders page for more info.
Instant emojis 
| Module info | |
|---|---|
| Configuration | chat.instant-emojis in chat.yml | 
| Manager | InstantEmojisManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows players to write configurable emojis and special characters in the chat by typing their :ID:.
Setup 
The following snippet of code represents and explains the instant emojis' configuration.
  # ...hover info's settings...
  instant-emojis: 
    enabled: true # whether to enable or disable this module
    tones: # recognized emojis' tones
    - '#FFFF55' # default emojis' tone
    - '#F9E0C1' # tone 1
    - '#E3C29C' # tone 2
    - '#C6956C' # ...
    - '#A06940'
    - '#5C473C'
    values:
      :): '{emojis_tone}☺'
      <3: '&c❤'
      ':smile:': '{emojis_tone}😃'
      ':slight_smile:': '{emojis_tone}🙂'
      ':grin:': '{emojis_tone}😁'
      ':grinning:': '{emojis_tone}😀'
      ':sunglasses:': '{emojis_tone}😎'
      ':weary:': '{emojis_tone}😩'
      ':tired:': '{emojis_tone}😫'
      ':money:': '&a🤑'
      ':nerd:': '{emojis_tone}🤓'
      ':skull:': '&f☠'
      ':alien:': '&a👽'
      ':thumbs_up:': '{emojis_tone}👍'
      ':thumbs_down:': '{emojis_tone}👎'
      ':note:': '&9🎵'
      ':pizza:': '&6🍕'
      ':copyright:': ©
      ':trademark:': ™
      ':tm:': ™
      ':alpha:': α
      ':beta:': β
      ':gamma:': γ
      ':euro:': €
      ':pound:': £
      ':yen:': ¥
      ':infinity:': ∞
      ':pi:': π
      ':degree:': °
  # ...Staff chat's settings...257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
Adding emojis 
To add a new emoji, you just need to specify its ID and its character. Note that old Vanilla Minecraft does not support certain characters.
  # ...hover info's settings...
  instant-emojis: 
    enabled: true
    values:
      # ...default emojis...
      ':ok:': '{emojis_tone}👌' // [!code focus]
  # ...Staff chat's settings...257
258
259
260
261
262
...which, after a /chatplugin reload, will result in:

/emojistone command 
The /emojistone <tone> [player] command allows players to change their emojis' default tone:

NOTE
This command changes depending on the plugin's edition. Here is shown the premium version's one.
Its messages are configurable at commands.emojistone in the messages' files and in the guis/emojis-tone.yml file.
Refer to the Getting started/Commands/User page for more info.
Staff chat 
| Module info | |
|---|---|
| Configuration | chat.staff-chat in chat.yml | 
| Manager | StaffChatManager | 
| Support | 1.8+ | 
| Free version | ✔ | 
| Proxy-configurable | ❌ | 
This module allows Staff members to interact through a private chat that also supports cross-server communication:

Setup 
The following snippet of code represents and explains the Staff chat's configuration:
  # ...instant emojis' settings...
  staff-chat: 
    enabled: true # whether to enable or disable this module
    format:
      player: '&7«&8[&6&lSC&8] &f{tag_prefix}{tag_name_color}{player}{tag_suffix}&7» &f' # format displayed for players' messages
      console: '&7«&8[&6&lSC&8] &8[&5&lC&8] &fConsole &4[***]&7» &f' # format displayed for the console's messages
    placeholder-types: # read below
    - PLAYER
    - SERVER
  # ...chat log's settings...296
297
298
299
300
301
302
303
304
Just like for the other modules, you have to specify which placeholder types you wish to use. Refer to the Modules/Placeholders page for more info.
/staffchat command 
The /staffchat [message] command allows Staff members to communicate with each other across the server:

Its messages are configurable at commands.staffchat in the messages' files.
Refer to the Getting started/Commands/Admin page for more info.
Chat log 
| Module info | |
|---|---|
| Configuration | chat.log in chat.yml | 
| Manager | ChatLogManager | 
| Support | 1.8+ | 
| Free version | ❌ | 
| Proxy-configurable | ❌ | 
This module saves players' messages to the PUBLIC_MESSAGES and PRIVATE_MESSAGES data containers and allows Staff members to search for previously sent messages using a query.
Setup 
The following snippet of code represents and explains the chat log's configuration:
  # ...Staff chat's settings...
  log: 
    enabled: true # whether to enable or disable this module
    print-to-log-file: false # whether to also print messages to chatplugin.log
    messages-auto-cleaner-period: 120d # period of time after which old messages will be cleaned304
305
306
307
Refer to the Syntax/Timestamps page to find out the timestamp specifiable at messages-auto-cleaner-period.
/chatlog command 
The /chatlog <player> <time> [page] [text] [-privatemessages] [-blocked] command allows Staff members to look up messages that contain certain text sent by a specific player:

Its messages are configurable at chat.log in the messages' files.
Refer to the Getting started/Commands/Admin page for more info.
Placeholders 
The following placeholders may be used at chat.log.message-format in the messages' files:
{sender}: sender's name{sender_uuid}: sender's UUID{rank_id}: player's rank's ID{server}: message's origin server's ID{world}: message's origin world's name{content}: the message sent{date}: message's date (format @chat.log.message-format.date-format){denied}: if the message has been blocked (format @chat.log.message-format.denied-format){deny_chat_reason}: reason why the message has been blocked or "NULL" if it has not
Public messages (chat.log.message-format.public) offer one extra placeholder:
{channel_id}: origin chat channel's ID (format @chat.log.message-format.public.global-format) or message atplaceholders.not-presentif missing
Private messages (chat.log.message-format.private) offer two extra placeholders:
{recipient}: recipient's name or "Console" for the console{recipient_uuid}: recipient's UUID or nil UUID for the console
ChatPlugin — A feature-rich and modular chat ecosystem, lightweight and efficient by design.
 This wiki is currently updated to version 1.10.4.
© 2025  Remigio07
Please report any mistakes and misspellings as described at Home/Reporting issues.
