RPChatPlus
A feature-rich roleplay chat plugin with PlaceholderAPI, Vault & EssentialsX support
Paper / Spigot · Java 17+ · v2.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
A feature-rich roleplay chat plugin with PlaceholderAPI, Vault & EssentialsX support
Paper / Spigot · Java 17+ · v2.0.0
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Overview
RPChatPlus started as a small quality-of-life chat plugin for roleplay servers and grew into something much more complete. It handles your entire chat pipeline — from global announcements to whispered emotes — without needing three other plugins to fill the gaps.
Every format string supports PlaceholderAPI out of the box. Vault prefix/suffix is pulled automatically. EssentialsX mutes, vanish, and ignore lists are all respected without any extra configuration. If you don't have any of those installed, the plugin runs perfectly fine on its own.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Features
- Four chat channels — Global, Local (radius-based), Staff, and Roleplay
- PlaceholderAPI — drop any %placeholder% directly into your format strings
- Vault — prefix and suffix pulled from any Vault-compatible permissions plugin
- EssentialsX — respects server mutes, vanish status, and ignore lists
- Private messaging — /msg and /r (reply), spied on by staff with spy mode
- Chat spy — staff silently monitor every channel without leaving their own
- Mentions — @PlayerName highlights the token and plays a ping sound to the recipient
- Anti-spam — configurable flood protection and duplicate-message blocking
- Per-channel cooldowns — throttle chat frequency on a per-channel basis
- Channel mutes — mute a player in one specific channel, with optional expiry time
- Color codes — players with rpchatplus.color can use & codes and hex &#rrggbb
- Persistent preferences — active channel and spy state survive server restarts (SQLite)
- Tab completion — every command and sub-command has context-aware suggestions
- Hot reload — /rpc reload refreshes both config and messages without a restart
- Fully translatable — every user-facing string is in messages.yml
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Commands
| Command | Description | Permission |
| /global [message] | Switch to or send in global chat | rpchatplus.global |
| /local [message] | Switch to or send in local (radius) chat | rpchatplus.local |
| /staff [message] | Switch to or send in staff chat | rpchatplus.staffchat |
| /rp [message] | Switch to or send in RP chat | rpchatplus.rp |
| /msg <player> <message> | Send a private message | rpchatplus.msg |
| /r <message> | Reply to your last PM | rpchatplus.msg |
| /rpc reload | Reload config and messages | rpchatplus.reload |
| /rpc spy | Toggle chat spy mode | rpchatplus.spy |
| /rpc mute <player> [channel] [seconds] | Mute a player in a channel | rpchatplus.mute |
| /rpc unmute <player> [channel] | Unmute a player | rpchatplus.unmute |
| /rpc info <player> | View a player's chat status | rpchatplus.info |
Channel command aliases: /g, /gc · /l, /lc · /sc, /staffchat · /roleplay · /tell, /pm, /whisper, /w · /reply
Spoiler: How channel switching works
Running a channel command with
no arguments (e.g.
/global)
toggles your active channel. Every message you type goes there until you switch.
Running it with a message (e.g. /global Hey everyone!) sends a one-off message to that channel without changing your active mode. Handy for a quick staff reply without leaving your RP channel.
Running it with a message (e.g. /global Hey everyone!) sends a one-off message to that channel without changing your active mode. Handy for a quick staff reply without leaving your RP channel.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Permissions
| Node | Default | Description |
| rpchatplus.* | OP | All permissions |
| rpchatplus.global | Everyone | Use global chat |
| rpchatplus.local | Everyone | Use local chat |
| rpchatplus.rp | Everyone | Use RP chat |
| rpchatplus.staffchat | OP | Use staff chat |
| rpchatplus.msg | Everyone | Send private messages |
| rpchatplus.spy | OP | Chat spy mode |
| rpchatplus.mute | OP | Mute players in channels |
| rpchatplus.unmute | OP | Unmute players |
| rpchatplus.reload | OP | Reload configuration |
| rpchatplus.info | OP | View player chat info |
| rpchatplus.color | None | Use & color codes in chat |
| rpchatplus.bypass.cooldown | OP | Skip cooldown restrictions |
| rpchatplus.bypass.antispam | OP | Skip anti-spam checks |
| rpchatplus.bypass.mute | OP | Bypass channel mutes |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Configuration
Everything is configured in plugins/RPChatPlus/config.yml. Every setting has an inline comment explaining it.
Format string variables:
| Variable | Replaced with |
| {player} | Display name (Essentials nickname if available) |
| {prefix} | Vault group prefix |
| {suffix} | Vault group suffix |
| {world} | Current world name |
| {message} | The chat message |
| %any_papi% | Any PlaceholderAPI placeholder |
Spoiler: Example config snippet
channels:
global:
format : "&8[&6Global&8] &7{prefix}&f{player}&7{suffix}&8: &f{message}"
switch-message : "&aYou are now in &6Global Chat&a."
cooldown : 0
log-to-console : true
local:
format : "&8[&cLocal&8] &7{prefix}&f{player}&7{suffix}&8: &f{message}"
radius : 100
rp:
speech-color : "&f&o"
action-color : "&b&o"
radius : 0 # 0 = no radius limit
Code (YAML):
channels:
global:
format : "&8[&6Global&8] &7{prefix}&f{player}&7{suffix}&8: &f{message}"
switch-message : "&aYou are now in &6Global Chat&a."
cooldown : 0
log-to-console : true
local:
format : "&8[&cLocal&8] &7{prefix}&f{player}&7{suffix}&8: &f{message}"
radius : 100
rp:
speech-color : "&f&o"
action-color : "&b&o"
radius : 0 # 0 = no radius limit
Spoiler: RP formatting
Wrap text in
*asterisks* for actions/emotes. Everything else is treated as speech.
Hello! *waves*
Produces:
'Hello!'
waves
Speech uses speech-color and actions use action-color — both freely configurable.
Code (Text):
Hello! *waves*
Speech uses speech-color and actions use action-color — both freely configurable.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Requirements
- Java 17 or newer
- Paper or Spigot 1.19.4+
- (Optional) PlaceholderAPI
- (Optional) Vault + a permissions plugin (e.g. LuckPerms)
- (Optional) EssentialsX
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▌ Source Code
The full source code is available on GitHub. Pull requests and bug reports are welcome.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Made with care by Axmon / Anonventions
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.15, 1.16, 1.17
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
RPChatPlus is a free Minecraft Java mod. Compatible with Minecraft 1.15, 1.16, 1.17, 1.18 and newer. Downloaded 197 times (via Spigot). Download it and open it directly in the game.