Skip to content

Listener Priorities

Warning

Always restart (not reload) after changing listener priorities.

How It Works

Bukkit processes events in this order: LOWESTLOWNORMALHIGHHIGHESTMONITOR

Each plugin at its priority can modify the event (change message, recipients), cancel it (stop it), or uncancel it (override a previous cancellation).

Example Scenario

PriorityPluginActionResult
LOWESTProtection PluginChecks if player can build❌ Cancels block placement
NORMALSign PluginChecks if it's a sign✅ Uncancels if it's a sign
MONITORLogging PluginRecords the final result📋 Logs the action

ChatControl should process chat FIRST (LOWEST priority) so it can filter messages before other plugins (e.g., DiscordSRV) see them. If another plugin runs first, unfiltered messages may leak through.

On 1.16+, there are two chat events. If a plugin uses the modern one, append -MODERN to the priority (e.g., LOWEST-MODERN). Try both if unsure.

Plugin Compatibility

PluginRecommended SettingNotes
Towny / FactionsChat_Listener_Priority: LOWESTMay need adjustments
LiteBans / BanManager / LibertyBansChat_Listener_Priority: HIGHFixes muted players chatting
PlotSquaredChat_Listener_Priority: LOWESTFor plot-specific chat
DenizenChat_Listener_Priority: HIGHAllows Denizen chat triggers
DiscordSRVChat_Listener_Priority: LOWESTFilter before Discord relay

Troubleshooting

  • ChatControl not filtering? → Try LOWEST or LOWEST-MODERN
  • Muted players can still chat? → Try HIGH
  • Chat-dependent plugins broken? → Start with LOWEST, try others
  • Still broken? → Try each priority, restart after each change

FAQ

What does -MODERN do? Listens to the newer chat event (1.16+). Some plugins use old, some use new.

How do I find the right priority? Trial and error with your specific plugin combination.