GeekMail-Pro

📬GeekMail-Pro 高级邮件系统 3.3.1
地表超强邮件系统,多模块,高端实用,支持邮件模板,覆盖你能想到的所有邮箱功能 💯 公开售价: 238 元人民币 or 30USD 购买联系: QQ1349517404 (回应迅速) 爱发电购买: 点击前往 BUG及功能建议: 点击前往
🎉楠木星球成员、TrMenu总部星球成员,免费
💽兼容性
| 说明 | 作用 |
|---|---|
| 支持版本 | 1.12x - 1.19x |
| 可选依赖 | Vault、PlaceholderAPI、PlayerPoints、ItemsAdder、TrHologram |
| 数据储存 | Mysql、Sqlite、Redis |
📒插件介绍
- 📜基于 Kotlin / Taboolib 开发高端邮箱插件 - (史无前例)
- ❇️ 邮件模板 ❇️ 支持使用 Kether 脚本语言 - (可控制玩家是否可见)
- ❇️ GUI界面 ❇️ 采用超高自由度配置,显示容器随意定义 - (支持IA)
- ❇️ 邮件类型 ❇️ 多种单列邮件类型 - (包含混合邮件支持各种类型的东西混在一起)
- 物品邮件、指令邮件、点券邮件、金币邮件、经验邮件、纯文本邮件、全类型邮件(可混合以上多种附件)
- 每种邮件类型都可以单独设置显示的图标
- 可通过API扩展更多的邮件类型,满足你的所有需求
- ❇️ 定制事件 ❇️ 设置可自动触发的发送事件 - (触发事件自动将邮件发送给玩家)
- ❇️ 邮箱方块 ❇️ 在服务器的任意一个角落设置一个邮箱? - (定点打开邮箱)
- ❇️ 玩家鉴权 ❇️ 权限控制每种邮件的发送,玩家可互相邮寄物品 - (使用模板自定义你的条件)
- ❇️ 消息互动 ❇️ 支持使用任意消息互动 - (全自定义消息种类音效)
- ❇️ SMTP服务 ❇️ 支持使用 SMTP 服务 发送邮件到玩家的QQ邮箱、网易邮箱 - (邮件提醒支持离线)
- ❇️ ItemsAdder ❇️ 使用ia自定义你的图标、物品和UI
- ❇️ Redis跨服 ❇️ 使用 Redis服务器 进行多域跨服
- ❇️ 内置全球市场 ❇️ 依托邮件收发货的全球市场
- ❇️ 丰富的API接口 ❇️ 面向开发者的高扩展API
❗❗❗指令帮助
邮箱打开命令,请自行在菜单配置中设置 | 玩家命令 | 作用说明 | | :---------- | :---------- | | /gkm 或 /mail | 主命令 | | /gkm mail [邮件种类][目标] [标题][内容] [可选参数] | 发送一封指定种类的邮件 | | /gkm pack [邮件模板][目标] | 发送配置模板中的邮件给目标玩家 |
/gkm mail 会检查玩家权限以及相应的发送物品需求! /gkm pack 邮件模板则根据模板中的 Kether 条件语句运行判断 (不支持控制台发送) 除纯 文本邮件 以外,其它邮件类型都需要扣除玩家自身的经济或者消耗品。 物品类型 邮件输入完必要参数后,将打开一个GUI,玩家放入需要发送的物品即可发送
| 管理员命令 | 作用说明 |
|---|---|
| /gkm 或 /mail | 主命令 |
| /gkm sendpack [邮件模板][目标] | 发送配置模板中的邮件给目标玩家 |
| /gkm send [目标][种类] [标题][内容] [可选参数] | 发送一封指定种类的邮件给目标 |
| /gkm reload | 重载插件 |
| /gkm setblock | 设置指定方块为快捷打开邮箱的方块 |
| /gkm global [模板ID][全局模式] | 为在线的所有玩家发送模板邮件 (不会运行Kether脚本) |
管理员命令发送任何邮件都不会扣除需求,
🎛️权限帮助
| 权限 | 作用 |
|---|---|
| mail.command.pack | 发送模板邮件权限 |
| mail.command.admin | 管理员权限 |
权限问题: 部分权限未列出,使用时,如果没权限后台会提示
内置邮件类型: MAIL_MONEY = 金币邮件 MAIL_POINTS = 点券邮件 MIAL_EXP = 经验值邮件 MAIL_TEXT = 纯文本邮件 MAIL_ITEM = 物品包邮件 MAIL_CMD = 指令包邮件 MAIL_NORMAL = 混合类型邮件 {.is-info}
🔊settings 配置文件
debug: false
#
# 数据库设置,选择你需要使用的数据储存方式,sqlite,mysql
# 默认: sqlite
data_storage:
use_type: sqlite
mysql:
# 数据库 IP 地址
host: '127.0.0.1'
# 数据库 端口
port: 3306
# 数据库名称 这个库必须手动创建好
database: 'server_Mail'
# 用户名
username: 'root'
3 密码
password: '123456'
params: '?autoReconnect=true&useSSL=false'
hikari_settings:
maximum_pool_size: 10
minimum_idle: 10
maximum_lifetime: 1800000
keepalive_time: 0
connection_timeout: 5000
# Smtp 服务设置 参考 🔊如何设置 SMTP 服务?
SmtpSet:
start: false
account: '****r@163.com' # 发件账号
password: '*********' # smtp服务器授权码
personal: 'GeekMail-高级邮件系统' # 发件人信息
subjects: 'GeekMail-收件提醒' # 邮件标题
host: 'smtp.163.com' # smtp服务器
port: '25' # 端口
# Redis 增强模式
Redis:
use: true
host: 192.168.0.102
port: 6379
password: pws # 如果有密码则填写
ssl: false
# 基础配置
config:
# 物品邮件 物品预览使用 lore 展示 (只限 1.17+)
use_bundle: false
# 针对 物品邮件 发送的物品进行筛选
item_filter:
use: true
type: '黑名单' # 支持 黑名单 / 白名单
contains_name:
- '你妈妈个大傻逼'
contains_lore: &id001 []
# 期限设置,如果使用,邮件到期将自动删除
Expiry:
use: true
# 邮件默认到期时间
time: 2d
# 数据维护任务时间 单位 秒
auto: 600
# 邮件种类显示名称转换
MailType:
MONEY_MAIL:
tag: "&e金币"
POINTS_MAIL:
tag: "&b点券"
EXP_MAIL:
tag: "&a经验"
TEXT_MAIL:
tag: "&f文本"
ITEM_MAIL:
tag: "&6物品"
🔊如何设置 SMTP 服务?
参考链接: https://g.pconline.com.cn/x/892/8926470.html 随后在配置中设置必要信息
SmtpSet:
start: false
account: '****r@163.com' # 发件账号
password: '*********' # smtp服务器授权码
personal: 'GeekMail-高级邮件系统' # 发件人信息
subjects: 'GeekMail-收件提醒' # 邮件标题
host: 'smtp.163.com' # smtp服务器
port: '25' # 端口
🔊如何设置 Redis 增强模式?
随后在配置中设置必要信息
Redis:
use: true
host: 192.168.0.102
port: 6379
password: 密码
ssl: false
Redis增强模式能干嘛: 增强多服务端跨服可靠性,支持跨机器毫秒级跨服体验
高效针对跨服数据交换问题,启用 Redis 增加了数据安全锁 跨服效率提供的同时增强了数据安全 对于管理员命令 send 支持发送邮件至另外一个服务器的玩家 局限是跨服发件仍然有很多地方待完善
🔊如何改变默认菜单界面?
在 plugins/GeekMail/menu 文件夹下修改def.yml 如果你使用过 TrMenu 你将会得心应手


# 菜单展示标题
TITLE: '&0邮件系统'
TYPE: main
Layout:
- '#########'
- '#MMMMMMM#'
- '#MMMMMMM#'
- '#MMMMMMM#'
- '#########'
- '< D P G > '
Bindings:
Commands: '邮件' # 界面打开指令
Icons:
M:
Type: text
display:
mats: BOOK #BUNDLE
name: '&7主题: &f[title]'
lore:
- ''
- ' &7发件人: &f[sender]'
- ' &7发送时间: &f[senderTime]'
- ' &7领取时间: &f[getTime]'
- ' &7邮件内容:'
- ' [text]'
- ''
- ' &7附件: [state]'
- ' &f[item]'
- ''
- '&8[&B左键_点击&8] &7# 领取附件'
- '&8[&B右键_点击&8] &7# 删除邮件'
- '&8[&BShift_点击&8] &7# 预览物品附件'
'P':
Type: BIND
display:
mats: SPECTRAL_ARROW
name: '&3# &b绑定邮箱'
lore:
- ' &7你的绑定: &f[mail_Info]'
- ''
- ' &7支持的邮箱:'
- ' &fQQ邮箱: &7xxxxx@qq.com'
- ' &f网易邮箱: &7xxxxx@163.com'
- ' &f谷歌邮箱: &7xxxxx@gmail.com'
- ''
- '&8[&B&l左键_点击&8] &7# 开始绑定'
'<':
Type: LAST_PAGE
display:
mats: 'IRON_DOOR' # 使用 ItemsAdder 格式 mats: 'IA:这里写你的ia物品命名'
name: '&3# &b跳转至'
lore:
- '&7上一页'
'>':
Type: NEXT_PAGE
display:
mats: IRON_DOOR
name: '&3# &b跳转至'
lore:
- '&7下一页'
'D':
Type: DELETE
display:
mats: BARRIER
name: '&3# &C删除所有已读'
'G':
Type: GET_ALL
display:
mats: CHEST
name: '&3# &a领取所有附件'
'#':
Type: null
display:
mats: BLACK_STAINED_GLASS_PANE
name: '&b&l 挡板'
图标种类: TEXT = 邮件展示 DELETE = 删除已读 LAST_PAGE = 上一页 NEXT_PAGE = 下一页 BIND = 绑定按钮 {.is-success}
菜单内置变量: [tyoe] 或 {邮件种类} = 邮件种类变量 [sender] 或 {发送者} = 邮件发送者变量 [senderTime] 或 {发送时间} = 邮件发送时间变量 [getTime] 或 {领取时间} = 邮件领取时间变量 [text] 或 {文本} = 邮件文本变量 [state] 或 {状态} = 邮件状态变量 [item] 或 { 附件} = 邮件附信息变量 [expire] 或 {到期时间} = 邮件到期时间变量 {.is-success}
🔊如何创建一个邮件模板?
在 plugins/GeekMail/template 文件夹下新建任意名字的 .yml 配置
Template:
# 模板唯一展示ID
ID: "金币大礼包"
Require:
# 发送该邮件前判断条件 需要扣除玩家 100 点券
condition: 'Points hasTake *100'
# 条件通过 发送 Kether Tell 消息
action: |-
tell "&a"
tell "&7&l Geek&f&lMail &8>&7>&f>"
tell "&a"
tell "&B 发送成功 扣除 100 点券!"
tell "&a"
# 条件不通过 发送 Kether Tell 消息
deny: |-
tell "&a"
tell "&7&l Geek&f&lMail &8>&7>&f>"
tell "&a"
tell "&c 你无法使用这个邮件模板"
tell "&a"
package:
title: "&e金币包"
# 在文本中可使用 ; 分割换行
text: |-
&l
&B 你的好朋友发了一些金币给你哦;
&B 里面有一万大洋哦
&B
type: MONEY_MAIL
appendix:
additional: 10000 # 附件参数
# command: []
# items: []
🚩邮件模板-package (邮件包)
title 邮件标题
title: "&e金币包"
text 邮件内容
# 内容换行可使用 ; 进行分割
text: |-
&l
&B 你的好朋友发了一些金币给你哦;
&B 里面有一万大洋哦
&B
type 邮件类型
# 邮件类型必须准确指定,不然无法准确的送达附件
# 这里标识这个邮件模板是 金币类型 邮件
type: MONEY_MAIL
appendix 邮件附件参数
- 案例
appendix:
additional: MONEY:980@POINTS:128@EXP:98
command:
- 'money give %player_name% 100'
- 'say 尊敬的 %player_name% 现在是北京时间 %server_time_hh_mm_ss%'
items:
- 'material:ENCHANTED_GOLDEN_APPLE,amount:3'
- 'material:BREAD,amount:4'
- additional 参数
appendix:
# 这种写法只在 混合邮件中生效,他包含了多种附件 使用 @ 区分不同附件
additional: MONEY:980@POINTS:128@EXP:98
# 这种写法适合 点券、金币、经验值 单种邮件类型
additional: 1280
- command 参数
appendix:
# 指令参数支持使用 所有 PlaceholderAPI 变量
# 指令参数,只适用于 指令邮件类型、混合邮件类型 ,你写在其它地方也是没用
command:
- 'money give %player_name% 100'
- 'say 尊敬的 %player_name% 现在是北京时间 %server_time_hh:mm:ss%'
- items 参数
appendix:
# 物品参数,适用于 物品邮件类型、混合邮件类型 特征写法,参考下方物品特征
items:
- 'material:ENCHANTED_GOLDEN_APPLE,amount:3'
- 'material:BREAD,amount:4'
邮件模板-物品特征
使用其它插件物品库: ItemsAdder = 使用IA物品库 MythicMobs = 使用MM物品 {.is-success}
ItemsAdder:IA物品库的物品名称,amt:64
MythicMobs:MM物品库的物品名称,amt:64
- 材质; material
- 名称: name
- 描述: lore
- 数量: amount
- 损伤值: data
- 模型数据: ModelData
``` yaml
material:PAPER,name:&f白纸的名字(可选),lore:&b&l这是一张白纸(可选)
🔊如何创建一个自定义事件?
在 plugins/GeekMail/event 文件夹下新建任意名字的 .yml 配置
event:
# 唯一识别ID
id: 新玩家礼包
# 监听的事件
event: NewPlayerJoinEvent
# 触发动作条件 (支持 Kether 语句)
condition: 'NewPlayer one'
action: # 执行的动作 (支持执行 Kether 动作)
# 发送模板包ID为 “物品包”
- 'sendTemPlate: 物品包'
🚩自定义事件-event (事件监听)
event 事件监听
# 该自定义事件,需要监听的事件
# 当新玩家加入时触发
event: NewPlayerJoinEvent
已提供的事件:
- NewPlayerJoinEvent
- PlayerJoinEvent
- AsyncPlayerChatEvent
🚩自定义事件-action (事件动作)
sendTemPlate 发送模板
# 发送 模板邮件 这里填写模板唯一ID
sendTemPlate: '物品包'
如果未使用上方动作,则默认解析 Kether 动作
🔄Kether脚本
| 内置Kether脚本 | 作用 |
|---|---|
| Money (give,take,has,hasTake) [action] | 关于金币的各种脚本 |
| Points (give,take,has,hasTake) [action] | 关于点券的各种脚本 |
| Exp (give,take,has,hasTake) [action] | 关于经验的各种脚本 |
| NewPlayer one | 检查玩家是否首次加入游戏 |
- Money hasTake 100 判断玩家是否拥有 100 金币,如果有扣除并返回 True
- Points hasTake 100 判断玩家是否拥有 100 点券,如果有扣除并返回 True
- Exp hasTake 100 判断玩家是否拥有 100 经验值,如果有扣除并返回 True
更多 Kether 脚本表达式 点击前往 {.is-info}
🔊开发者API
事件package me.geek.mail.api.event
me.geek.mail.api.event.MailReceiveEvent // 邮件接收事件
me.geek.mail.api.event.MailSenderEvent // 邮件发送事件
me.geek.mail.api.event.WebMailSenderEvent // 真实邮件发送事件
me.geek.mail.api.event.NewPlayerJoinEvent //新玩家加入事件
me.geek.mail.api.event.PlayerDataLoadEvent //玩家数据加载完成事件
import me.geek.mail.api.mail.MailManage
import org.bukkit.entity.Player
import java.util.UUID
/**
* Kotlin 发送一封点券邮件
* @param type 邮件种类
* @param target 目标玩家UUID
*/
fun Player.sender(type: String = "MAIL_POINTS", target: UUID) {
MailManage.getMailBuild(type, this, target).build {
this.title = "new mail"
this.text = "hello"
this.additional = "100"
}.sender()
}
🔆更多图片展示





