MineMail is configured through plugins/MineMail/config.yml. After editing, apply most changes with /minemail reload; see Reloading for the exceptions.
The file updates itself: when MineMail loads or reloads it, any missing keys are added back with their defaults, and new settings from plugin updates are merged in. Don't change config-version.
Merging never changes a value that's already in your file. A server upgraded from 1.0.0 keeps the old defaults (mailbox.max-per-player: 5, mail.max-per-mailbox: 50, mailbox.max-description-length: 128) until you change them; new installs get the defaults below.
Default config.yml
config-version: 2
storage:
type: YAML
auto-save-interval: 5
save-debounce-millis: 1500
mailbox:
max-per-player: -1
max-name-length: 32
max-description-length: 512
creation-timeout-seconds: 60
hologram:
enabled: true
y-offset: 1.5
particles:
enabled: true
type: HAPPY_VILLAGER
count: 3
interval: 60
selectable:
HAPPY_VILLAGER: minemail.particle.default
END_ROD: edeneffects.mailbox.endrod
CHERRY_LEAVES: edeneffects.mailbox.cherry
HEART: edeneffects.mailbox.heart
SOUL_FIRE_FLAME: edeneffects.mailbox.soulfire
ENCHANT: edeneffects.mailbox.enchant
TOTEM_OF_UNDYING: edeneffects.mailbox.totem
extra-slots:
enabled: false
price: 5000.0
price-multiplier: 1.5
max-purchasable: 5
mail:
max-per-mailbox: -1
max-subject-length: 50
max-message-length: 500
max-attachments: 9
currency-enabled: true
max-currency: 1000000.0
compose-timeout-seconds: 300
expiration:
enabled: false
days: 30
check-interval-minutes: 30
read-receipts:
enabled: true
directory:
items-per-page: 28
economy:
enabled: true
mailbox-creation-cost: 0.0
mail-send-cost: 0.0
logging:
transactions:
enabled: true
page-size: 10
sounds:
mailbox-created: BLOCK_ANVIL_USE
mail-received: ENTITY_EXPERIENCE_ORB_PICKUP
mail-sent: ENTITY_PLAYER_LEVELUP
gui-click: UI_BUTTON_CLICK
gui:
default-mailbox-icon: BARREL
groups:
enabled: true
max-per-player: 10
max-name-length: 32
max-members: 50
The shipped file includes a comment on every key; they're left out above for brevity.
Storage
| Key | Default | Description |
|---|
storage.type | YAML | Not read. YAML is the only storage; MySQL and SQLite are planned. |
storage.auto-save-interval | 5 | Minutes between safety-net full saves (minimum 1). Every change is already saved on its own, so this only catches anything missed. Needs a restart. |
storage.save-debounce-millis | 1500 | How long to gather a burst of changes into one disk write (250 to 30000 ms). This is the most a crash can lose. |
Mailbox
| Key | Default | Description |
|---|
mailbox.max-per-player | -1 | Mailboxes a player may own, when they have no minemail.limit.mailboxes.<n> node. -1 (or any negative number) means unlimited. Purchased extra slots are added on top of a limit. |
mailbox.max-name-length | 32 | Maximum mailbox name length, for creating and renaming. |
mailbox.max-description-length | 512 | Maximum description length. Descriptions are set from Manage Mailbox, can span several lines, and are shown in the directory and at the top of the mailbox. |
mailbox.creation-timeout-seconds | 60 | How long a player has to left-click a barrel after /minemail create (minimum 5). |
mailbox.hologram.enabled | true | Shows a floating name tag, with a new-mail count, above each mailbox. Built in; no hologram plugin needed. Owners can also turn it off per mailbox. |
mailbox.hologram.y-offset | 1.5 | Height of the hologram above the barrel, in blocks. |
mailbox.particles.enabled | true | Turns the ambient particle loop above every mailbox on or off. |
mailbox.particles.type | HAPPY_VILLAGER | Default particle, used when an owner hasn't picked one. Older names such as VILLAGER_HAPPY are still accepted. Particles that need extra data (such as DUST) aren't supported and fall back to HAPPY_VILLAGER. |
mailbox.particles.count | 3 | Particles spawned each time (minimum 1). |
mailbox.particles.interval | 60 | Ticks between spawns (20 ticks = 1 second, so 60 = every 3 seconds). |
mailbox.particles.selectable | 7 entries | The particles owners can choose in the picker, each mapped to the permission that unlocks it. Invalid entries are skipped with a warning. See Permissions. |
| Key | Default | Description |
|---|
mailbox.extra-slots.enabled | false | Lets players buy extra mailbox slots with /minemail buyslot, on top of their rank limit. Needs a working economy unless the price is 0. |
mailbox.extra-slots.price | 5000.0 | Price of the first slot. |
mailbox.extra-slots.price-multiplier | 1.5 | Each further slot costs price × multiplier ^ slots already bought. |
mailbox.extra-slots.max-purchasable | 5 | Most slots one player can buy. |
Mail
| Key | Default | Description |
|---|
mail.max-per-mailbox | -1 | Mail a mailbox can hold, when its owner has no minemail.limit.capacity.<n> node or is offline. -1 (or any negative number) means unlimited. Sending to a full mailbox is refused before anything is taken. |
mail.max-subject-length | 50 | Maximum subject length. |
mail.max-message-length | 500 | Maximum message length. |
mail.max-attachments | 9 | Item stacks per mail. The compose menu has 9 slots, so values above 9 are lowered to 9 with a warning. Lower values disable the extra slots. |
mail.currency-enabled | true | Shows the Currency button in the compose menu. Also needs economy.enabled, Vault, and an economy plugin. |
mail.max-currency | 1000000.0 | Most currency one mail can carry. |
mail.compose-timeout-seconds | 300 | How long an untouched compose menu is kept before its items are returned (minimum 30). |
mail.expiration.enabled | false | Returns old mail to its sender. The items and currency arrive in the sender's mailbox as Returned: <subject>, or are held until they next join if they have no mailbox or it's full. Returned mail never expires again. |
mail.expiration.days | 30 | Age, since it was sent, at which mail is returned. |
mail.expiration.check-interval-minutes | 30 | How often to check for expired mail. |
mail.read-receipts.enabled | true | Tells senders when their mail is first read. Players can opt out with /minemail receipts. |
Directory
| Key | Default | Description |
|---|
directory.items-per-page | 28 | Mailboxes per page in /minemail directory (1 to 28). |
Economy
Needs Vault and an economy plugin. If either is missing while economy.enabled is true, MineMail logs an error at startup and treats every cost as free.
| Key | Default | Description |
|---|
economy.enabled | true | Master switch for Vault. Needs a restart. |
economy.mailbox-creation-cost | 0.0 | Charged when a mailbox is created. The balance is checked at /minemail create and charged once the barrel is confirmed. |
economy.mail-send-cost | 0.0 | Charged when mail is sent, together with any attached currency. Refunded if delivery fails. |
Logging
| Key | Default | Description |
|---|
logging.transactions.enabled | true | Writes the transaction log to plugins/MineMail/logs/. /minemail log and /minemail recover depend on it. |
logging.transactions.page-size | 10 | Entries per page in /minemail log. |
Sounds
| Key | Default | Description |
|---|
sounds.mailbox-created | BLOCK_ANVIL_USE | Played when a mailbox is created. |
sounds.mail-received | ENTITY_EXPERIENCE_ORB_PICKUP | Played when mail arrives, and on login if there's new mail. |
sounds.mail-sent | ENTITY_PLAYER_LEVELUP | Played to the sender when mail is sent. |
sounds.gui-click | UI_BUTTON_CLICK | Played on menu clicks. |
Sounds can be written as constant names (BLOCK_ANVIL_USE) or sound keys (block.anvil.use or minecraft:block.anvil.use). An unknown sound logs a warning and uses the default.
GUI
| Key | Default | Description |
|---|
gui.default-mailbox-icon | BARREL | Item shown for mailboxes in the directory. There's no in-game way to set a per-mailbox icon yet. An invalid material falls back to BARREL with a warning. |
Groups
| Key | Default | Description |
|---|
groups.enabled | true | Enables /minemail group. |
groups.max-per-player | 10 | Groups one player can own. |
groups.max-name-length | 32 | Maximum group name length. |
groups.max-members | 50 | Members per group, including the owner. |
Reloading
/minemail reload re-reads config.yml and messages.yml and restarts the particle and expiration tasks. Most settings apply straight away. The exceptions:
| Setting | To apply it |
|---|
economy.enabled | Restart the server. |
storage.auto-save-interval | Restart the server. |
mailbox.hologram.enabled, mailbox.hologram.y-offset | Run /minemail cleanupholograms to rebuild existing holograms. |
Messages
Player-facing text lives in plugins/MineMail/messages.yml, in MiniMessage format with named placeholders such as <mailbox>. It reloads with /minemail reload.
Example Configurations
Charge for mailboxes and mail
economy:
enabled: true
mailbox-creation-cost: 500.0
mail-send-cost: 10.0
mailbox:
extra-slots:
enabled: true
price: 2500.0
price-multiplier: 2.0
max-purchasable: 3
Return mail after two weeks
mail:
expiration:
enabled: true
days: 14
Disable holograms and particles
mailbox:
hologram:
enabled: false
particles:
enabled: false
Run /minemail cleanupholograms afterwards to remove existing holograms.