π Commands & Permissions
Players
| Command | What it does |
|---|---|
/mail | Open your inbox |
/mail block <player> | Refuse player mail from them |
/mail unblock <player> | Accept it again |
Staff
| Command | What it does | Console |
|---|---|---|
/mail servermail <audience> <id> | Send a pre-written server mail | β |
/mail servermail <audience> | Open the compose screen to write one | β |
/mail open <player> | Open that player's inbox on their screen | β |
/mail give-mailbox <player> | Give one placeable mailbox | β |
/mail admin player:<name> | Inspect that player's full mail history | β |
/mail admin global | Every player's mail history at once | β |
/mail reload | Re-read every config file | β |
The commands marked Console work from console, command blocks and other plugins. The rest need a player, because they open a screen for somebody.
That split is why the two servermail forms differ: with an id nothing is drawn on anyone's screen, so it runs anywhere. Without one the compose screen has to open in front of somebody.
/mail open and /mail give-mailbox need the target online β one shows a screen, the other hands over an item. Everything else works against players who are offline, including sending them mail and blocking them.
Permissions
| Node | Default | Grants |
|---|---|---|
polaroidmail.use | everyone | /mail and the block commands |
polaroidmail.admin | op | Every staff command |
polaroidmail.bypassdelay | op | Skip the delivery delay |
polaroidmail.bypasscost | op | Send for free |
The two bypass nodes are only names β the actual node checked is whatever you put in bypass-permission in config.yml.
/mail servermail
/mail servermail <audience> [mail-id]
Audience is always prefixed:
| Prefix | Reaches |
|---|---|
server:all | Everyone the server has ever seen |
server:online | Whoever is connected right now |
player:Steve | One player, online or not |
The prefix is not decoration. all and online are both legal Minecraft names, so a bare keyword could never be told apart from a player called that.
With a mail id it sends that entry from server-mail.yml immediately, from anywhere β console, a command block, a scheduler, another plugin:
/mail servermail server:all welcome
/mail servermail player:Steve compensation
That is the hook to use for vote listeners, crate rewards and scheduled events. %player%-style substitution belongs to the plugin calling it; run the command with the name already filled in.
Without one the compose screen opens so you can write a one-off. This form needs a player:
/mail servermail server:online
Server mail ignores subject and message length limits, is never delayed, costs nothing, and always gets through β a player cannot block it.
/mail admin
/mail admin player:Steve that player's history
/mail admin global every player's, newest first
A read-only mirror: received, claimed and deleted, all of it. The target is namespaced for the
same reason the servermail audience is β global is a legal Minecraft name, so a bare word could
not be told apart from a player called that.
global is the view for hunting a single mail when you do not know whose it is: a duplication
report, a missing reward, a compensation that never arrived. It is capped by log.inspect-entries,
and every row names both ends β who sent it and who received it.
| Click | Does |
|---|---|
| Left | Take a copy of the contents. The player keeps theirs. This is logged |
| Shift + Left | Delete the mail permanently. Cannot be undone |
Everything here is written to the transfer log, including who did it.
Anonymous mail is unmasked here. Both admin views show Anonymous (Steve) where a player would
only see Anonymous. Anonymity is a promise to the recipient, not a place to hide from moderation β
the real name was stored all along and only hidden at render time.
/mail block
One-directional and player mail only.
- Blocking someone does not stop you from mailing them.
- Server mail always arrives. Otherwise a player could opt out of staff compensations and announcements.
- The sender is told the mail was refused and gets their items and money back β a silent failure would destroy them.
- You can block someone who is offline, which is usually when you want to.