A modern, lightweight Paper plugin that provides:
- Custom chat formatting using MiniMessage
- Join & quit message customisation
- A simple GUI control panel
- A Brigadier-based command system
- Clean configuration with version checks
Built for modern Paper servers using Adventure components and PlaceholderAPI support.
- Fully configurable
chat-format.yml - MiniMessage support (
<gradient>,<hover>,<click>, etc.) - PlaceholderAPI support (
%player_name%, etc.) - Optional hover & click events on player names
- Safe fallback if formatting fails
Example:
format:
prefix: "<#767676>[<gradient:#0bdfc9:#470bdf>KJControl</gradient><#767676>]<reset> "
name: "<username>"
name_hover: "Change me in KJControl/chat-format.yml"
name_click: ""
suffix: "<gray>: <white>"- Fully configurable
messages.yml - Supports MiniMessage
- Supports PlaceholderAPI
- Can be toggled independently from chat formatting
Example:
join-message: "<green>+ <grey><username>"
quit-message: "<red>- <grey><username>"| Command | Description | Permission |
|---|---|---|
/kjcontrol |
Opens the plugin menu | kjcontrol.admin |
/kjcontrol preview |
Preview your chat format | kjcontrol.preview |
/kjcontrol reload |
Reload all plugin configs | kjcontrol.reload |
/kjcontrol help |
Shows the help menu | kjcontrol.admin |
Controls feature toggles and global settings.
# DO NOT CHANGE VERSION
config-version: 1
# Choose whether to enable or disable each feature
features:
# chat-format.yml
enable-chat-format: true
# messages.yml
messages:
# Enables all messages. If false, messages.yml will be ignored.
# If true, you can then enable/disable individual messages below
enabled: true
# Enables join and quit messages - configurable in messages.yml
enable-join-quit: trueControls how chat messages appear.
# -----------------------------------------------
# - Supports PlaceholderAPI
# - Formatting MUST be in MiniMessage.
# - Internal placeholders:
# - <username>
# - <displayname>
#
# MiniMessage: https://docs.papermc.io/adventure/minimessage/format/
# PlaceholderAPI: https://wiki.placeholderapi.com/
# -----------------------------------------------
# DO NOT CHANGE VERSION
chat-format-version: 1
# This will change the format of chat messages.
format:
# This will go before the name
prefix: "<#767676>[<gradient:#0bdfc9:#470bdf>KJControl</gradient><#767676>]<reset> "
# This is who sent the message
name: "<username>"
#This will be shown when people hover the name
name_hover: "Change me in KJControl/chat-format.yml"
#This command will be run when people click the name
name_click: ""
#This will go after the name, before the message
suffix: "<gray>: <white>"Controls plugin messages
# -----------------------------------------------
# - Supports PlaceholderAPI
# - Formatting MUST be in MiniMessage.
# - Internal placeholders:
# - <username>
# - <displayname>
#
# MiniMessage: https://docs.papermc.io/adventure/minimessage/format/
# PlaceholderAPI: https://wiki.placeholderapi.com/
# -----------------------------------------------
# DO NOT CHANGE VERSION
messages-version: 1
# Set the join message
join-message: "<green>+ <grey><username>"
# Set the quit message
quit-message: "<red>- <grey><username>"- Player sends message
AsyncChatEventis interceptedChatFormatresolves:- PlaceholderAPI placeholders
- MiniMessage tags
- Hover & click events
- A
ResolvedChatFormatis returned - Final formatted message is rendered per viewer
The suffix and message are combined during resolution to ensure MiniMessage colour inheritance works correctly.
KJControl uses Paper's experimental bootstrap API to register Brigadier commands during the correct lifecycle phase.
- Commands are defined declaratively
- Execution logic lives in
CommandUtil - Permissions are enforced at the Brigadier level
- Paper 1.21.11
- PlaceholderAPI (optional, but recommended)
- Download the latest release from the Releases tab
- Place the
.jarin your server's/pluginsfolder. - Start or restart your server
- Configure
config.yml,chat-format.yml, andmessages.yml
GNU GENERAL PUBLIC LICENSE