RPChatPlus icon

RPChatPlus -----

Simple roleplay-chat setup (Global, local, staff-chat, rp-chat)



RPChatPlus
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

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.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

▌ 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


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
 

Wrap text in *asterisks* for actions/emotes. Everything else is treated as speech.

Code (Text):

Hello! *waves*
 
Produces: 'Hello!' waves

Speech uses speech-color and actions use action-color — both freely configurable.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

▌ Requirements


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

▌ Source Code

The full source code is available on GitHub. Pull requests and bug reports are welcome.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Made with care by Axmon / Anonventions
Resource Information
Author:
----------
Total Downloads: 142
First Release: Feb 22, 2024
Last Update: Mar 9, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings