DragonChat
PluginLicenseRef-All-Rights-Reserved

DragonChat

This is a plugin that changes the chat! Made by Dragon_45_

4
Downloads
0
Followers
1 weeks ago
Updated
📦
1
Versions

📖About DragonChat

DragonChat

Technical Documentation

Overview

DragonChat is a next-generation chat plugin for Paper 1.21.11, designed to completely replace Minecraft's vanilla chat with a modern, fast, and highly configurable communication system.

Built with Java 21, the Paper API, and Adventure/MiniMessage, DragonChat delivers rich text formatting, excellent performance, and maximum flexibility while remaining fully compatible with modern Paper servers.

Its modular architecture allows every feature to be individually enabled or disabled through the configuration, making it suitable for both small communities and large-scale networks.


Main Goals

DragonChat has been designed with the following objectives:

  • Completely replace the vanilla chat system.
  • Support both modern and legacy formatting simultaneously.
  • Provide a modular architecture where every feature can be enabled or disabled.
  • Offer deep integration with LuckPerms and PlaceholderAPI.
  • Maintain excellent performance on high-player-count servers.
  • Minimize conflicts with other chat plugins through an advanced chat interception system.

Chat System

DragonChat uses Paper's AsyncChatEvent as its primary chat handler.

When chat.force-chat-handler is enabled, the plugin completely suppresses the vanilla chat and becomes the only message renderer.

To guarantee this behavior—even on servers running multiple chat plugins—DragonChat registers suppression listeners at both:

  • LOWEST priority
  • MONITOR priority

It also intercepts Paper's legacy chat events, preventing other plugins from restoring the vanilla chat after DragonChat has already processed the message.

This ensures DragonChat always remains the active chat handler.


Supported Chat Formatting

DragonChat supports multiple formatting systems simultaneously.

MiniMessage

<red>Hello</red>

Legacy Ampersand Colors

&cHello

Legacy Section Sign Colors

§cHello

HEX Colors

&#FF0000Hello

Gradients

<gradient:#FFD700:#FF0000>DRAGON</gradient>

Rainbow

<rainbow>Hello</rainbow>

Text Decorations

  • Bold
  • Italic
  • Underline
  • Strikethrough
  • Obfuscated (Magic)
  • Reset

Players can freely use MiniMessage tags, & color codes, and § color codes when they have the appropriate permissions.


Permission-Based Formatting

DragonChat automatically removes formatting that the player is not allowed to use.

Supported permissions include:

chat.color
chat.hex
chat.gradient
chat.rainbow

chat.format.bold
chat.format.italic
chat.format.underline
chat.format.strikethrough
chat.format.obfuscated

Permissions are fully compatible with LuckPerms.


Group Formatting

DragonChat integrates directly with LuckPerms.

The plugin automatically detects each player's primary group and applies a configurable chat format based on that group.

Each group may have its own:

  • Prefix
  • Suffix
  • Colors
  • Chat layout
  • Placeholder configuration

PlaceholderAPI Support

If PlaceholderAPI is installed, DragonChat automatically parses placeholders inside every configurable format.

No additional setup is required.


Reload System

DragonChat includes a safe reload command.

/dragonchat reload

Alias:

/dchat reload

The reload operation:

  • Reloads config.yml
  • Clears cached group formats
  • Reloads formatting settings
  • Refreshes runtime configuration

Required permission:

chat.reload

Private Messaging

DragonChat includes a fully configurable private messaging system.

Main command:

/msg

Aliases:

/tell
/w
/message
/pm

Configurable options include:

msg.sent-format
msg.received-format

msg.sound.enabled
msg.sound.name
msg.sound.volume
msg.sound.pitch

Mention System

DragonChat supports player mentions using:

@PlayerName

When a player is mentioned, the plugin can automatically:

  • Highlight the player's name
  • Play a configurable sound
  • Display an Action Bar
  • Show a Title
  • Show a Subtitle

All behaviors are configurable.


Mute System

DragonChat includes a complete moderation system.

Commands:

/mute
/tempmute
/unmute
/mutelist
/checkmute

Mute data is stored inside:

mutes.yml

The plugin keeps mute information cached in memory for fast lookup during chat events.


Join, Quit & Death Messages

DragonChat fully replaces Minecraft's default server messages.

Supported message types include:

  • Player Join
  • Player Quit
  • Death Messages

Death messages support multiple causes, including:

  • PvP
  • Fall Damage
  • Lava
  • Fire
  • Explosion
  • Void
  • Drowning
  • Lightning
  • Starvation

Every message is fully configurable.


Performance

DragonChat has been optimized for high-performance Paper servers.

Key optimizations include:

  • Cached group formats
  • In-memory mute storage
  • Asynchronous chat processing
  • Minimal object allocation
  • Efficient MiniMessage parsing

When Force Chat Mode is enabled, chat formatting is processed asynchronously, while the final message delivery is safely transferred to the main server thread for maximum compatibility with other plugins.


Configuration Files

config.yml

Main configuration file containing:

  • Chat settings
  • Group formats
  • Mentions
  • Private messages
  • Mute settings
  • Join/Quit messages
  • Death messages
  • Module toggles

plugin.yml

Contains:

  • Commands
  • Permissions
  • Plugin metadata
  • Optional dependencies

mutes.yml

Persistent storage for all active and temporary mutes.


Compatibility

DragonChat is built specifically for:

  • Paper 1.21.11
  • Java 21

Optional integrations:

  • LuckPerms
  • PlaceholderAPI

Conclusion

DragonChat is a professional-grade chat solution built for modern Minecraft servers.

It combines a fully modular architecture, advanced text formatting, high-performance asynchronous processing, and deep integration with the most popular server plugins.

Whether you're running a small community server or a large network, DragonChat provides a complete replacement for Minecraft's vanilla chat with maximum flexibility, performance, and compatibility.

CONFIG.YML

Spoiler
modules:
  chat: true
  joinquit: true
  death: true
  mute: true
  mention: true
  msg: true

chat:
  event-priority: HIGHEST
  force-chat-handler: true
  allow-cancelled-override: true
  format-cache-seconds: 30
  default-format: "<gray>[<white>%dragonchat_group%</white>]</gray> %player_displayname% <dark_gray>»</dark_gray> %message%"

groups:
  owner:
    chat-format: "<gradient:#FFD700:#FF0000><bold>OWNER</bold></gradient> %player_displayname% <dark_gray>»</dark_gray> %message%"
    join-message: "<green>+</green> <gradient:#FFD700:#FF0000>%player_name%</gradient>"
    quit-message: "<red>-</red> <gradient:#FFD700:#FF0000>%player_name%</gradient>"
    death-message: "<red>%player_name% has fallen as a dragon would.</red>"
  default:
    chat-format: "<gray>%player_name%</gray> <dark_gray>»</dark_gray> %message%"
    join-message: "<green>+</green> <gray>%player_name%</gray>"
    quit-message: "<red>-</red> <gray>%player_name%</gray>"
    death-message: "<red>%player_name% died.</red>"

mention:
  format: "<yellow><bold>@%player_name%</bold></yellow>"
  sound: "minecraft:block.note_block.pling"
  volume: 1.0
  pitch: 1.2
  actionbar: "<yellow>%sender_name% mentioned you.</yellow>"
  title: ""
  subtitle: ""

msg:
  sent-format: "&f[ A &b%target_name% &f] %message%"
  received-format: "&f[ Da &b%source_name% &f] %message%"
  usage: "<red>Usage: /msg <player> <message></red>"
  offline: "<red>%target_name% is not online.</red>"
  self-message: "<red>You cannot message yourself.</red>"
  no-permission: "<red>You do not have permission.</red>"
  sound:
    enabled: true
    name: "minecraft:block.note_block.pling"
    volume: 1.0
    pitch: 1.2

mute:
  message: "<red>You are muted.</red> <gray>Reason:</gray> <white>%reason%</white> <gray>Expires:</gray> <white>%expires%</white>"
  broadcast: "<red>%target%</red> <gray>was muted by</gray> <white>%sender%</white><gray>.</gray>"
  unmute-message: "<green>%target% is no longer muted.</green>"

death-messages:
  pvp: "<red>%player_name% was slain by %killer_name%.</red>"
  fall: "<red>%player_name% hit the ground too hard.</red>"
  lava: "<red>%player_name% tried to swim in lava.</red>"
  fire: "<red>%player_name% burned.</red>"
  explosion: "<red>%player_name% exploded.</red>"
  void: "<red>%player_name% fell into the void.</red>"
  drowning: "<red>%player_name% drowned.</red>"
  lightning: "<red>%player_name% was struck by lightning.</red>"
  hunger: "<red>%player_name% starved.</red>"
  default: "<red>%player_name% died.</red>"