跳到主要内容

邮件模板

模板是「存起来、可以反复发送的一封信」,保存在 plugins/StarMail/templates.yml。做好之后一句指令就能发给任何人:

/sm send <玩家|@online|@all|@all-existing> <模板名>

控制台也能执行,所以很适合接到投票插件、活动插件、任务插件的奖励指令上。

两种做法​

做法适合
在游戏里做:/sm template create <名字> 打开管理员写信界面,填好后点「存为模板」附件是附魔装备、自定义物品、插件物品——物品的所有数据都会完整保存
手写 templates.yml附件是普通物品(材质 + 数量 + 名称 + 说明),或只有金币、点券、指令奖励

两种可以混用:游戏里存的模板也能再用文本编辑器改标题、指令等文字。

管理模板的指令​

都需要 starmail.admin.template(默认 OP)。

指令作用
/sm template list列出所有模板名称(控制台可用)
/sm template create <名字>打开管理员写信界面来做这个模板;名字已经存在时会载入它(等同 edit)
/sm template edit <名字>载入现有的模板来修改;模板不存在时提示「没有模板」
/sm template delete <名字>删除模板(控制台可用)

在模板界面里:

  1. 标题后面会显示「· 模板 名字」。
  2. 像管理员写信一样填写寄件人、标题、正文、附件、金币、点券、领取指令、附件说明、期限(见 管理员写信与管理)。
  3. 点 存为模板(末影箱),在聊天栏输入模板名称(可以和原本的名字相同 = 覆盖)。名称只能用字母、数字、中文、- 与 _,最多 32 个字。
  4. 看到「模板 xxx 已保存」就完成了,马上可以用 /sm send 发送,不需要重载。

也可以不保存,直接在模板界面点「寄出」,把这封信发出去。

模板界面里的物品

模板里存的是物品的「样品」:每次发送模板,每个人拿到的都是复制品。

  • 用 /sm template edit(或对已存在的名字 create)打开时,界面里会放着模板原有的物品。它们是副本,关闭界面时不会退回背包。
  • 你自己从背包放进去的物品,关闭界面时会退回背包(保存模板时存的是复制品,你的物品不会被拿走)。
  • 关闭时会提示「模板编辑界面已关闭(模板里原有的物品是副本,不会退回;你自己放进去的会退回背包)」。
  • 直接在模板界面点「寄出」时,你自己放进去的物品会真的寄出,和管理员写信一样。

在 /sm admin 的一般管理员写信界面里点「存为模板」也可以保存,规则相同:附件仍然是你自己的物品,关闭会退回,寄出会真的寄走。

文件格式​

模板名:
sender: '寄件人' # 不写 = config.yml 的 default-sender
title: '标题' # 不写 = 模板名
content: # 正文,一行一个项目
- '第一行'
- '第二行'
items: # 手写物品
- {material: DIAMOND, amount: 3, name: '&b闪亮的钻石', lore: ['&7说明']}
items-data: '...' # 游戏内保存的物品(完整数据,请勿手动修改)
money: 100 # 金币(需要 Vault)
points: 10 # 点券(需要 PlayerPoints)
commands: # 领取时执行
- 'lp user {player} permission set vip true'
notes: ['VIP 权限'] # 显示在附件列表
icon: CAKE # 附件待领取时在邮箱里显示的图标
expire-days: 7 # 不写 = 默认期限;0 = 永不过期
键类型说明
sender文字寄件人名称,支持颜色与 MiniMessage。不写使用 default-sender
title文字标题,支持颜色与 MiniMessage。不写时用模板名当标题
content文字列表正文,每个项目一行,支持颜色与 MiniMessage
items列表手写物品,每个项目可以有 material(必填)、amount(默认 1)、name、lore。名称与说明支持 & 颜色、&#RRGGBB 与 MiniMessage,默认不是斜体。材质写错的项目会被跳过,控制台提示
items-data文字在游戏里保存的物品,是编码过的完整物品数据。不要手动修改。读不出来时(改坏了,或在更新版本的服务器保存的),/sm send 与 /sm template edit 会停止并提示「模板 xxx 的物品数据无法读取,请重新保存这个模板」,不会寄出缺少物品的信
money数字金币,领取时直接存入账户
points整数点券,领取时直接存入账户
commands文字列表领取时执行的指令,写法见 领取指令([player]、[message] 前缀,{player}、{uuid} 变量)
notes文字列表附件说明,显示在邮箱的附件预览与单封邮件的附件格
icon材质名附件待领取时,这封信在邮箱里显示的图标(menus/mailbox.yml 的 use-mail-icon 为 true 时)
expire-days数字几天后过期,可以写小数;0 = 永不过期;不写 = 管理员邮件的默认期限(mail.system-expire-days,默认 30 天)

items 与 items-data 可以同时存在,手写的物品排在前面。

改了文件之后

手动修改 templates.yml 后执行 /sm reload 才会生效。 在游戏里保存或删除模板时,插件会把目前载入的内容写回文件;如果你改了文件却还没 /sm reload,你的修改会被覆盖。

物品太多时​

一封信最多 mail.max-items 组物品(默认 21)。模板的物品超过这个数量时:

  • 发给指定玩家或 @online:自动拆成好几封,标题后面加上「(1/2)」「(2/2)」;金币、点券、指令只放在第一封。
  • 发 @all / @all-existing 全服邮件:只保留前 max-items 组,控制台会警告。

范例​

投票奖励​

vote:
sender: '<gradient:#F7971E:#FFD200>投票站</gradient>'
title: '感谢投票!'
content:
- '感谢你为服务器投票 ❤'
- '这是今天的投票奖励,明天也别忘了哦~'
items:
- {material: DIAMOND, amount: 2}
- {material: EXPERIENCE_BOTTLE, amount: 16, name: '&a投票经验瓶'}
money: 200
icon: EMERALD
expire-days: 7

在投票插件的「投票奖励指令」里写:

sm send %player% vote

(玩家变量的写法以你的投票插件为准。)玩家不在线时投票也没关系,奖励会在邮箱里等他。

新人礼包(之后进服的新玩家也收到)​

newbie:
title: '<gradient:#86A8E7:#E7C6FF>欢迎来到服务器!</gradient>'
content:
- '很高兴见到你~'
- '这是一份小小的见面礼,祝你玩得开心!'
items:
- {material: BREAD, amount: 16, name: '&e见面礼 · 面包'}
- {material: TORCH, amount: 32}
- {material: IRON_PICKAXE, name: '&f新手镐'}
icon: CAKE
expire-days: 0

只要执行一次:

/sm send @all newbie

现有的玩家、以及之后第一次进服的每一个新玩家都会收到一份,每人只有一份。

新人礼包要设 expire-days: 0

全服邮件的期限从发出那一刻开始算,到期后就不再发给新玩家。想让礼包一直发下去,模板要写 expire-days: 0(永不过期)。 以后不想再发了,用 /sm broadcasts 找到编号,/sm cancel <编号> 停止。

VIP(指令奖励)​

vip7:
sender: '<gold>星月商店'
title: '<gold>VIP 会员 7 天'
content:
- '感谢支持!领取附件后自动开通 VIP。'
commands:
- 'lp user {player} parent addtemp vip 7d'
- '[message] <green>VIP 已开通,7 天后到期'
notes:
- 'VIP 会员 7 天'
icon: NETHER_STAR
expire-days: 0
/sm send Steve vip7

指令在玩家领取时执行,所以离线购买也不怕:玩家上线领了才开通。

停机补偿(只给老玩家)​

sorry:
sender: '<red>管理组'
title: '停机补偿'
content:
- '昨晚的停机维护给大家添麻烦了。'
- '这是一点小小的补偿,请在 7 天内领取。'
money: 500
points: 20
expire-days: 7
/sm send @all-existing sorry

@all-existing 只发给发送前就进过服的玩家,之后才来的新玩家不会收到。