玩家写信
玩家之间可以互相寄信,附带物品与金币。需要权限 starmail.write(默认所有人都有),而且 config.yml 的 player-mail.enabled 为 true(默认)。
打开写信界面的方式:
| 方式 | 说明 |
|---|---|
/sm write | 打开空白的写信界面 |
/sm write 玩家名 | 收件人先填好 |
| 邮箱里的「写信」按钮 | 同 /sm write |
| 单封邮件里的「回信」按钮 | 收件人填寄件人,标题加上「回复:」 |
还在寄信冷却中时打不开写信界面,会提示「寄信太快了,N 秒后再试」。
写信界面
默认布局(menus/compose.yml,可以修改,见 菜单):
| 格位 | 按钮 | 操作 |
|---|---|---|
| 4 | 信件预览(纸) | 只显示:收件人、标题、正文、附件数量与金币 |
| 10 | 收件人(头颅) | 点击后在聊天栏输入玩家名字 |
| 12 | 标题(命名牌) | 点击后在聊天栏输入标题 |
| 14 | 正文(书与羽毛笔) | 左键:添加一行(用 | 一次写多行);右键:删除最后一行;Shift + 点击:清空 |
| 16 | 附带金币(金粒) | 左键:输入数量;右键:清除。见下方「附带金币」 |
| 19 – 43 中间三行 | 附件格 | 把要寄的物品放进来 |
| 45 | 取消写信(屏障) | 关闭界面,附件退回背包 |
| 49 | 怎么写信(知识之书) | 只显示说明 |
| 53 | 寄出(潜影盒) | 寄出;还没填收件人时是灰色的 |
在聊天栏输入
点收件人、标题、正文、金币按钮时,界面会先关闭,聊天栏提示要输入什么。输入后界面自动重新打开,已经填的内容和放进去的附件都还在。
- 输入的内容只交给星月邮箱,不会显示给其他玩家(会拦下聊天插件转发的消息)。
- 输入
取消(或cancel)放弃这次输入,直接回到写信界面;90 秒没输入也会自动取消。 - 收件人只取第一个词,名字不分大小写。
长度与格式
| 项目 | 默认限制 | 设置 |
|---|---|---|
| 标题 | 最多 32 个字,超过的部分截掉 | player-mail.max-title-length |
| 正文行数 | 最多 10 行,满了再添加会提示「正文最多 10 行」 | player-mail.max-content-lines |
| 每行长度 | 最多 64 个字,超过的部分截掉 | player-mail.max-line-length |
玩家输入的标题与正文会去掉 & 颜色代码,MiniMessage 标签原样显示为文字,防止伪装成系统邮件。
有 starmail.admin.compose 权限的人不受这个限制,可以使用颜色。
没有填标题时,寄出的信标题为「(无标题)」。
收件人
收件人可以是:
- 现在在线的玩家;
- 在任何一个连同一数据库的子服上线过的玩家(星月邮箱会记录每个上线过的玩家);
- 本服务器以前来过的玩家。
找不到时提示「找不到玩家 xxx(对方需要在本服或连同一数据库的子服上线过)」。
不能寄信给自己(有 starmail.admin.compose 权限的管理员除外)。
放入附件
- 直接把物品点进中间的格子,或拖曳、用数字键交换,都可以。
- 在自己的背包里 Shift + 点击 物品,会自动放进附件格(相同的物品会先叠在一起)。
- 每个占用的格子算「一组」附件。可放的格数等于
mail.max-items(默认 21,也就是中间三行全部);超过的格子会显示灰色玻璃板「无法放置附件」。 - 服务器把
player-mail.allow-items设为false时,所有附件格都锁住,只能寄文字信。
物品黑名单
以下物品放不进附件格,提示「这个物品不能邮寄(原因)」:
| 规则 | 默认 |
|---|---|
材质 player-mail.blacklist.materials | 基岩、屏障、命令方块(三种)、结构方块、拼图方块、调试棒 |
名称或说明含有的文字 player-mail.blacklist.name-or-lore-contains | 绑定、綁定、Soulbound、不可交易(不分大小写,自动忽略颜色) |
有 starmail.bypass.blacklist 权限(默认 OP)的人不受限制。寄出前还会再检查一次所有附件。
附带金币
可以把自己的金币随信寄给对方,对方领取附件时入账。需要同时满足:
- 服务器装了 Vault 与经济插件;
player-mail.allow-money为true(默认);- 玩家有
starmail.write.money权限(默认所有人都有)。
不满足时金币按钮不显示。附带的金币在寄出时和邮费一起从余额扣除。
邮费
player-mail:
cost:
money: 0 # 每封固定收取的金币
points: 0 # 每封固定收取的点券(需要 PlayerPoints)
money-per-item: 0 # 每一组附件额外收取的金币
- 邮费金币 =
money+money-per-item× 附件组数。 - 寄出按钮会显示「邮费 X 金币 / Y 点券」和「合计扣除 Z 金币」(邮费 + 附带金币)。
- 金币或点券不够时不会寄出,提示「金币不足,需要 N」。
- 有
starmail.bypass.cost权限(默认 OP)的人免邮费。
寄出时的检查
点「寄出」后依序检查,任何一项不通过都不会扣钱。前三项在界面里直接提示,界面不关闭; 后面几项不通过时,附件退回背包,写信界面重新打开(已填的文字保留):
| 检查 | 提示 | 不受限制的权限 |
|---|---|---|
| 收件人已填写 | 请先填写收件人 | — |
| 不是空信(标题、正文、附件、金币至少一项) | 这是一封空信 | — |
| 附件不在黑名单 | 这个物品不能邮寄 | starmail.bypass.blacklist |
| 收件人存在、不是自己 | 找不到玩家 / 不能寄信给自己 | — |
今天寄出的数量没超过 daily-limit(默认 30,0 = 不限) | 今天已经寄了 30 封信,明天再来吧 | starmail.bypass.limit |
对方邮箱里未领取的玩家来信少于 max-unclaimed-from-players(默认 50,0 = 不限) | xxx 的邮箱里堆了太多未领取的信,暂时无法寄送 | starmail.bypass.limit |
| 付得起邮费与附带金币 | 金币不足 / 点券不足 | starmail.bypass.cost(只免邮费) |
全部通过后寄出,提示「已寄给 xxx!邮费 N」。对方在线会马上收到提示(在别的子服几秒内收到)。
- 每日次数按服务器所在时区的 0 点重新计算;使用 MySQL 跨服时,所有子服合计。
- 冷却(
cooldown-seconds,默认 10 秒)从寄出成功开始计算,冷却中打不开写信界面;冷却记录在每个子服各自计算。有starmail.bypass.cooldown的人不受限制。 - 对方邮箱上限只计算玩家寄来、还没领取、没过期的信,系统与管理员的邮件不受影响。
关闭界面会怎样
| 情况 | 附件 |
|---|---|
| 关闭界面 / 点「取消写信」 | 退回背包,提示「已取消写信,N 组附件已退回背包」 |
| 输入时下线 | 退回背包 |
服务器执行 /sm reload 或关服 | 界面关闭,附件退回背包 |
| 退回时背包放不下 | 默认另寄一封「背包已满 · 物品退回」的信给自己(mail.overflow: drop 时掉在脚下) |
过期与退信
- 玩家互寄的信默认 7 天后过期(
mail.player-expire-days,0= 永不过期)。 - 过期时对方还没领取附件:附件(物品与附带的金币)会以一封「退信:原标题」的信退回给寄件人,正文写明是寄给谁的信过期了(
mail.return-expired-to-sender,默认开启)。 - 退信本身按系统邮件的期限计算(
mail.system-expire-days,默认 30 天)。 - 邮费不会退还。
- 过期检查每 5 分钟进行一次,所以退信可能比过期时间晚几分钟才出现;但收件人那边一到期就看不到这封信了。