跳到主要内容

config.yml

plugins/StarMail/config.yml 是插件的主设定,第一次启动时自动生成,注释都是中文。

修改后怎么生效​

设定生效方式
database.*、sync.*、menu.cloudui重启服务器
其他全部/sm reload
  • 数字会被限制在合理范围:例如 mail.max-items: 100 实际会当成 54。各项的范围见下表。
  • 没写的键使用默认值:升级后新版本新增的设定不会写进你的文件,直接用默认值;想调整就自己把键加进去。
  • 天数都可以写小数,例如 0.5 = 12 小时。

数据库(database)​

database:
type: sqlite
file: data.db
host: 127.0.0.1
port: 3306
database: starmail
username: root
password: ''
parameters: 'useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf8'
table-prefix: 'sm_'
pool-size: 6
键默认作用
typesqlitesqlite = 单服,数据存在 plugins/StarMail/data.db;mysql(或 mariadb)= 多个子服连同一个数据库就能跨服
filedata.dbSQLite 文件名(放在 plugins/StarMail/ 里)
host / port127.0.0.1 / 3306MySQL 地址与端口
databasestarmailMySQL 数据库名称(要先建好)
username / passwordroot / 空MySQL 账号密码
parameters见上额外的 JDBC 参数,例如加上 &serverTimezone=Asia/Shanghai
table-prefixsm_表格名称前缀,只能用字母、数字与下划线(最多 32 个字)。同一个数据库里要放好几套互不相通的邮箱时才需要改
pool-size6MySQL 连接数(最少 2)

插件会建立这五个表格(以默认前缀为例):sm_mail(邮件)、sm_broadcast(全服邮件)、sm_broadcast_seen(谁已经收到哪封全服邮件)、sm_players(上线过的玩家,用来寄信给离线玩家)、sm_log(记录)。

警告

数据库连不上时,插件会在控制台显示原因并停用自己。从 SQLite 换到 MySQL 不会自动搬移旧邮件。 多服设置步骤见 跨服设置。

跨服(sync)​

sync:
enabled: auto
server-id: ''
interval-seconds: 3
键默认作用
enabledautoauto = 使用 MySQL 时自动开启;true / false 强制开关
server-id空这个子服的名字(例如 lobby、survival),显示在 /sm log 与 /sm version。每个子服填不同的名字;留空时每次开服自动生成一个(端口 + 随机字符)
interval-seconds3每隔几秒检查一次其他子服寄来的新邮件与新的全服邮件(最少 1)

详细说明见 跨服设置。

邮件默认值(mail)​

mail:
system-expire-days: 30
player-expire-days: 7
return-expired-to-sender: true
keep-deleted-days: 14
auto-delete-claimed-days: 0
allow-delete-unclaimed: false
max-shown: 300
max-items: 21
log-keep-days: 90
overflow: mail
键默认作用
system-expire-days30系统、管理员、插件、全服邮件、退信的默认期限(天)。0 = 永不过期。到期后未领取的附件会消失。模板与管理员写信可以另外设定期限
player-expire-days7玩家互寄的邮件的期限(天)。0 = 永不过期
return-expired-to-sendertrue玩家互寄的邮件过期时附件还没领取,把附件(物品与附带的金币)退回给寄件人
keep-deleted-days14已删除 / 已过期的邮件在数据库里保留几天(这段时间内可以 /sm restore),之后彻底清除。已经结束(停止或过期)而且发出超过这么多天的全服邮件也一并清除。0 = 下一次清理时就清除
auto-delete-claimed-days0附件领取后几天自动从邮箱移除(之后仍按 keep-deleted-days 保留)。0 = 不自动移除,玩家自己删
allow-delete-unclaimedfalse玩家能不能删除附件还没领取的邮件(要连按两次确认,附件会一起消失)。管理员在 /sm view 里总是可以删
max-shown300邮箱里最多显示多少封(最少 10)。超过的仍然保存,领取 / 删除前面的之后会显示出来
max-items21一封信最多几组物品(1 ~ 54)。写信界面能放附件的格数也是这个数字;管理员 / 插件 / 模板邮件超过时自动拆成多封(全服邮件只保留前面这么多组)
log-keep-days90邮件记录(/sm log)保留几天。0 = 永久保留。1.1.0 起,幂等寄送 的 key 记录也保留同样的天数
overflowmail背包放不下要退回的物品怎么处理:mail = 另寄一封「背包已满 · 物品退回」的信(永不丢失);drop = 掉在玩家脚下

overflow 用在:写信界面关闭 / 寄送失败退回附件、领取时背包临时被塞满等情况。领取前插件会先检查背包空间,放不下的邮件本来就不会领取。

自动清理的时间:每 5 分钟处理一次到期的邮件(含退信),每小时彻底清除一次旧邮件与旧记录。/sm purge 可以立即执行。

玩家互寄(player-mail)​

player-mail:
enabled: true
allow-items: true
allow-money: true
cost:
money: 0
points: 0
money-per-item: 0
cooldown-seconds: 10
daily-limit: 30
max-unclaimed-from-players: 50
blacklist:
materials: [BEDROCK, BARRIER, COMMAND_BLOCK, CHAIN_COMMAND_BLOCK, REPEATING_COMMAND_BLOCK, STRUCTURE_BLOCK, JIGSAW, DEBUG_STICK]
name-or-lore-contains: ['绑定', '綁定', 'Soulbound', '不可交易']
max-title-length: 32
max-content-lines: 10
max-line-length: 64
键默认作用
enabledtrue是否开放玩家互寄。false 时 /sm write、写信与回信按钮都不能用
allow-itemstrue能不能附带物品。false 时写信界面的附件格全部锁住
allow-moneytrue能不能附带金币(还需要 Vault 与 starmail.write.money 权限)
cost.money0每封信的邮费金币
cost.points0每封信的邮费点券(需要 PlayerPoints)
cost.money-per-item0每一组附件额外收取的金币
cooldown-seconds10两次寄信之间的冷却(秒)。冷却中打不开写信界面
daily-limit30每人每天最多寄几封(按服务器时区 0 点重算;0 = 不限)
max-unclaimed-from-players50对方邮箱里「玩家寄来、还没领取」的信达到这个数量时拒收(0 = 不限;系统邮件不受影响)
blacklist.materials见上不能寄出的物品材质
blacklist.name-or-lore-contains见上物品名称或说明含有这些文字时不能寄(不分大小写,自动忽略颜色代码)
max-title-length32标题最多几个字(最少 4),超过的截掉
max-content-lines10正文最多几行(最少 1)。管理员写信不受行数限制
max-line-length64正文每行最多几个字(最少 8),超过的截掉

邮费、冷却、次数、上限、黑名单都有对应的免除权限,见 权限。完整规则见 玩家写信。

提示(notify)​

notify:
join-delay-seconds: 3
join-only-when-unread: true
new-mail:
chat: true
title: '<gradient:#9BB8FF:#E7C6FF>✉ 新邮件</gradient>'
subtitle: '<gray>{sender}<dark_gray>:<white>{title}'
actionbar: ''
sound: 'BLOCK_NOTE_BLOCK_CHIME:0.8:1.6'
reminder-minutes: 15
键默认作用
join-delay-seconds3上线后几秒提示「你有 N 封未读邮件,M 封附件待领取」。0 = 不提示
join-only-when-unreadtruetrue = 只有在有未读或待领取的邮件时才提示
new-mail.chattrue收到新邮件时在聊天栏发一行可点击的提示(文字在 messages.yml 的 new-mail / new-mails)
new-mail.title / subtitle见上收到新邮件时的屏幕标题 / 副标题。两个都留空 '' = 不显示标题
new-mail.actionbar空动作栏文字,留空不显示
new-mail.sound见上提示音效,写法 音效名:音量:音调,留空不播放。上线提示有未读时也播放这个音效
reminder-minutes15有未领取的附件时,每隔几分钟提醒一次。0 = 不提醒。/sm reload 后生效

标题、副标题、动作栏可以用的变量:{sender} 寄件人、{title} 标题、{count} 一次收到几封。支持 MiniMessage 与 & 颜色。

menu:
date-format: 'MM-dd HH:mm'
wrap-width: 22
cloudui: true
cancel-word: '取消'
input-timeout-seconds: 90
键默认作用
date-formatMM-dd HH:mm邮件时间的显示格式(Java 日期格式,例如 yyyy-MM-dd HH:mm)。写错时控制台提示并使用默认格式
wrap-width22正文在物品说明里每行最多几个字(中文算 1 个,英文与数字算半个;最少 8),超过自动换行
clouduitrue装了云界面 CloudUI 时,/sm 打开云界面的邮箱画面(无法显示的玩家仍用箱子菜单);false = 一律用箱子菜单。改了要重启。见 云界面邮箱
cancel-word取消在聊天栏输入(收件人、标题、正文…)时,输入这个字取消(cancel 永远有效)。删掉这个键时使用 messages.yml 的 cancel-word
input-timeout-seconds90在聊天栏输入时,超过几秒没输入就自动取消(最少 10)

指令别名(command-aliases)​

command-aliases: [sm]

玩家输入列表里的指令时,星月邮箱会在指令执行之前把它改写成 /starmail,所以一律交给星月邮箱处理,即使其他插件也注册了同样的指令(例如另一个插件也用 /sm)。

  • 不分大小写,可以写多个,例如 [sm, mail, 邮箱]:玩家输入 /mail 或 /邮箱 也会打开邮箱(新加的别名不会有 Tab 补全)。
  • 只影响玩家输入的指令;控制台请用 starmail(或没有冲突时的 sm)。
  • 清空成 [] 则不做任何处理,/sm 交给服务器按一般规则决定由哪个插件执行。
  • 主指令 /starmail 永远可以用。

默认寄件人(default-sender)​

default-sender: '<gradient:#9BB8FF:#E7C6FF>星月邮局</gradient>'

没有指定寄件人的邮件(/sm text、/sm money 等指令、管理员写信没填寄件人、模板没写 sender、插件没指定寄件人)显示这个名称。支持 MiniMessage 与 & 颜色。 背包已满退回、过期退信的寄件人另外在 messages.yml 的 overflow.sender、returned.sender 设定。