PumpkinMsg gives your moderation team two complementary surveillance tools: SocialSpy for private conversations and CmdSpy for player commands. Both tools are non-intrusive to normal players, persist across server restarts, and respect your configured format strings so spy output always matches your server’s visual style.Documentation Index
Fetch the complete documentation index at: https://pumpkings.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
SocialSpy
SocialSpy lets authorized staff members receive a copy of every private message exchanged on the network. Staff use/socialspy (alias /spy) to toggle the feature on or off. The permission required is pumpkinmsg.staff.spy.
Global Mode vs. Player-Specific Mode
- Global Mode
- Player-Specific Mode
Running When enabled you receive the confirmation:
/socialspy with no argument toggles global mode. In global mode you receive a copy of every private message sent anywhere on the network.What Staff See
Each intercepted message is formatted using thespy string from config.toml:
<sender_prefix> and <target_prefix> tokens are resolved via LuckPerms, so moderators can immediately identify the ranks of both participants. If LuckPerms is not installed, those tokens resolve to an empty string.
Both the sender and the recipient of a message are automatically excluded from the spy broadcast for that message — they already see their own conversation and do not receive a duplicate spy line.
CmdSpy
CmdSpy gives staff visibility into the commands players execute. The permission required ispumpkinmsg.staff.cmdspy. Use /spycommands (alias /cmdspy) to manage it.
Scope Options
- Paper (Single Server)
- Velocity (Proxy)
On a Paper server,
/spycommands is a simple toggle. Running it once enables command monitoring for all players on that server. Running it again disables it.Sensitive Command Masking
PumpkinMsg automatically masks commands that could expose player credentials. The following commands are never shown in CmdSpy output, regardless of who is watching:/login/register/changepassword
CmdSpy Format
The output uses thecmdspy string from config.toml:
Message Delivery Flow
Understanding the order in which PumpkinMsg evaluates each condition helps you predict exactly what players and staff will see when a message is sent.Check sender togglemsg
If the sender has run
/togglemsg to disable their own outgoing messages, the plugin sends them sender-toggled-off and stops.Check target is online
If the target player is offline or not found on the network, the plugin sends the sender
player-offline and stops.Check self-message
If the sender is targeting themselves, the plugin sends
cannot-msg-self and stops.Check target togglemsg (bypass)
If the target has disabled incoming messages via
/togglemsg, the plugin sends target-toggled-off to the sender — unless the sender holds pumpkinmsg.staff.bypass, in which case delivery continues.Check ignore list (bypass)
If the target has ignored the sender, the plugin sends
player-ignoring-you — unless the sender holds pumpkinmsg.staff.bypass, in which case delivery continues.Deliver message
The plugin formats and sends the
sender string to the sender and the receiver string to the target, then records both players as each other’s last-message partner for /reply.Broadcast to spies
The plugin iterates over all online players who have SocialSpy active. Each spy receives the
spy format string — unless they are the sender or the recipient of the message. If a spy has pinned their feed to a specific player, they only receive the broadcast if that player is involved in the current message.Persistent State
All spy, ignore, and togglemsg state is written to flat files in theplugins/PumpkinMsg/ data folder whenever it changes. This means:
- A staff member’s SocialSpy or CmdSpy session survives proxy/server restarts.
- A player’s ignore list and togglemsg preference are restored automatically when they reconnect.
