SyExtract
一个适用于 Minecraft Paper/Purpur 1.21 的红包插件,支持 Vault 经济系统。
功能特性
- 创建红包(设置名称、金额、数量)
- 每个红包拥有从1开始的唯一数字ID(如1、2、3)
- GUI界面查看和领取红包
- GUI中新增"创建红包"按钮,点击后在聊天框依次输入名称、金额、个数即可创建
- 创建红包后在屏幕上方显示BossBar进度条,实时显示剩余个数
- 有人领取红包时,自动通知红包发放者(包含领取者名称、红包名称、金额、货币名称)
- 可配置免税界限:红包总额小于10000免税,大于等于10000收2%税
- 红包创建1分钟后若未领完,自动给未领取的在线玩家发送可点击的提醒消息
- 广播消息和提醒消息中的领取按钮可点击直接领取
- 多语言支持(简体中文/English)
- Vault经济系统支持
- 可配置的手续费系统
- 玩家封禁系统(限制发放/领取红包)
- 红包过期设置
- 过期未领取的红包金额自动退还给发放者
- 服务器重启后红包数据完整保留(包括金额分配和领取记录)
- 高度可配置
运行要求
- Minecraft服务端:Paper/Purpur 1.21
- Java:17或更高版本
- 依赖:Vault + 任意经济插件(如EssentialsX)
命令
| 命令 | 权限 | 说明 |
| ------------------------------------- | ------------------ | -------------------------- |
| /sye create <名称> <金额> <数量> | syextract.create | 创建红包 |
| /sye open | syextract.open | 打开红包GUI |
| /sye broadcast <红包ID> | syextract.broadcast| 广播红包给所有在线玩家 |
| /sye claim <红包ID> | syextract.claim | 领取指定ID的红包 |
| /sye ban <玩家> <时间> | syextract.ban | 封禁玩家 |
| /sye unban <玩家> | syextract.unban | 解封玩家 |
| /sye reload | syextract.reload | 重载配置 |
命令别名
create→copen→obroadcast→brclaim→clban→bunban→ureload→r
时间格式
封禁时长支持以下格式
1h- 1小时1d- 1天1w- 1周30d- 30天
权限
| 权限 | 默认 | 说明 |
| ------------------ | ----- | ------------------ |
| syextract.use | true | 基本使用权限 |
| syextract.create | true | 创建红包权限 |
| syextract.open | true | 打开GUI权限 |
| syextract.claim | true | 领取红包权限 |
| syextract.broadcast| true | 广播红包权限 |
| syextract.ban | op | 封禁玩家权限 |
| syextract.unban | op | 解封玩家权限 |
| syextract.reload | op | 重载配置权限 |
| syextract.admin | op | 所有管理权限 |
配置文件
config.yml
# 语言设置
# 可选值: zh (简体中文), en (English)
language: zh
# 红包设置
red-envelope:
# 红包默认可领取时间(小时)
default-expire-hours: 24
# 最小红包金额
min-amount: 1.0
# 最小红包数量
min-count: 1
# 最大红包数量
max-count: 100
# 手续费设置(创建红包时收取)
fee:
enabled: true
percentage: 0.05
min-fee: 1.0
# 税收设置(领取红包时收取)
tax:
# 免税界限:红包总额小于此值则免税
threshold: 10000
# 税率:红包总额大于等于免税界限时按此比例收税
percentage: 0.02
# 经济设置
economy:
# 货币名称(当Vault未提供时使用)
currency-name: "金币"
# 提醒设置
reminder:
# 红包创建后多少秒发送未领取提醒(默认60秒)
delay-seconds: 60
# GUI设置
gui:
item-material: "SUNFLOWER"
# 广播消息设置
broadcast:
envelope-completed: "&6&l🎉 红包通知 &r&7标题为 &e{name} &7的红包被领完了..."语言文件
插件支持多语言,语言文件位于 plugins/SyExtract/lang/ 目录:
zh.yml- 简体中文(默认)en.yml- English
你可以在这些文件中自定义所有消息。切换语言请修改 config.yml 中的 language 选项。
数据存储
插件在 plugins/SyExtract/ 目录下生成以下数据文件:
envelopes.yml- 红包数据(包含金额分配和领取记录)bans.yml- 封禁数据lang/- 语言文件(自动生成)
使用示例
- 通过命令创建红包
/sye create 新年红包 1000 10创建一个名为"新年红包"的红包,总金额1000,分为10份。创建成功后会显示红包ID。
- 通过GUI创建红包
/sye open打开GUI后,点击下方的"创建红包"按钮(下界之星图标),然后在聊天框依次输入名称、金额、个数。
- 打开GUI领取红包
/sye open即使当前没有可领取的红包也可以打开GUI。
- 广播红包
/sye broadcast 1将ID为"1"的红包广播给所有在线玩家,玩家可以点击聊天中的"[立即领取]"按钮领取。
- 领取指定红包
/sye claim 1直接领取ID为"1"的红包。
- 封禁玩家
/sye ban 玩家名 7d封禁玩家7天,期间无法发放和领取红包。
注意事项
- 创建红包会扣除红包金额 + 手续费
- 红包采用"切线法"随机分配算法,每个人获得金额的概率完全相同,不存在先领多后领少的问题
- 过期未领取的红包金额会自动退还给发放者
- 每个玩家只能领取同一个红包一次
- 每个红包拥有唯一的数字ID,方便分享和领取
- 红包总额达到免税界限(默认10000)时,领取金额会被收取税费
- 服务器重启后红包数据完整保留,包括各份金额和领取记录
- 红包创建1分钟后若未领完,系统会自动提醒未领取的在线玩家
更新日志
v1.5.0
- 修复红包金额分配算法:改用"切线法"确保每个人获得金额的概率完全相同,不再出现第一个领取者金额最大的问题
- 修复服务器重启后红包金额重新生成导致分配错乱的bug(现在会保存和加载金额列表)
- GUI新增"创建红包"按钮,点击后在聊天框依次输入名称、金额、个数即可创建
- 创建红包后在屏幕上方显示BossBar进度条,实时显示剩余个数
- 有人领取红包时自动通知发放者(含领取者名称、红包名称、金额、货币名称)
- 新增税收系统:可在config.yml中设置免税界限(默认10000)和税率(默认2%)
- 红包创建1分钟后若未领完,自动给未领取的在线玩家发送可点击的提醒消息
- 广播消息和提醒消息中的领取按钮现在可以真正点击领取
- 修复GUI多玩家同时打开时槽位映射冲突的bug
- 修复领取最后一个红包时发送者名称显示为"Unknown"的bug
- 新增定期清理过期红包的自动任务
- 货币名称现在从Vault自动获取,支持在config.yml中配置备用名称
v1.4.0
- 新增多语言支持(简体中文/English)
- 语言文件存放在
lang/目录 - 所有消息均可通过语言文件自定义
- config.yml新增
language选项
v1.3.0
- 新增红包领完通知
- 显示手气王(获得最高金额的玩家)
- 新增
broadcast.envelope-completed消息配置
v1.2.0
- 修复广播消息找不到的问题(success.broadcast)
- 修复广播消息中领取按钮不可点击的问题
- 红包ID从随机6字符改为从1开始的顺序数字ID
v1.1.0
- 为每个红包添加唯一ID
- 过期未领取的红包自动退款
- 新增
/sye broadcast命令广播红包 - 新增
/sye claim命令按ID领取 - 即使没有红包也可以打开GUI
- 更新至Java 17兼容
v1.0.0
- 初始版本
作者
- 作者:Shiyuan
- GitHub:Shiyuan-318
- 年份:2026