- 版权类型
- 原创
- 插件中文名称
- QN抽奖
- 插件英文名称
- QNLottery
- 原帖地址
- #
- 支持的核心(服务端)
- Paper
- 语言支持
- 中文(简体)
- 前置组件
- PlaceholderAPI
- 适配版本(Java)
- 1.12
版本: 1.0.0 | 兼容: Spigot / Paper 1.12.2 | 依赖: PlaceholderAPI
QNLottery 是一款高度可定制、极致安全的 RPG 抽奖系统插件。
采用 “返回唯一标识 (Key) + 严格执行指令发奖” 的底层架构,彻底杜绝了乱扣物品、刷物品的漏洞。支持点数与抽奖券混合扣除、伪随机(PRD)概率递增、保底机制、条件不满足自动降级,以及极简的外部插件动画接管。
1. key 与 id 的区别 (最重要)
- key (唯一标识):奖品的绝对编号。用于内部逻辑识别、联动其他奖品、以及供外部插件(如龙核)读取。可以随便起名,如 大奖_下界合金。
- id (展示物品):只负责在 GUI 预览界面中显示真实的物品图标。必须写真实的 ID(如 Original-DIAMOND 或 DIAMOND)。
- actions (发奖动作):玩家最终拿到什么,完全由这里的指令决定,插件绝对不会硬塞物品。
2. 智能扣费逻辑
- 先扣点数:根据抽数扣除对应的 points。
- 扣抽奖券:如果点数不够,扣光点数后,计算还差几次,自动按数量扣除 tickets 列表里的物品。
- 防误扣:如果点数和抽奖券加起来都不够,系统会直接拦截并提示,一分不扣。
3. 条件降级 (fallback)
如果玩家没有满足奖品的 conditions(比如没有 VIP 权限),系统会自动读取 fallback 字段,执行降级后的替换奖品逻辑。
在配置文件中,actions 列表支持以下语法(文本中支持 %player% 和 %amount% 变量):
| 动作格式 | 说明 | 示例 |
|---|---|---|
| tell:文本 | 发送聊天栏消息 | tell:&a恭喜你抽中了 %amount% 个钻石! |
| command:[console]指令 | 后台静默执行指令(推荐) | command:[console]give %player% diamond %amount% |
| command:[op]指令 | 临时给玩家 OP 执行指令 | command:[op]say 我中大奖了! |
| sound:音效:音量:音高 | 播放原版音效 | sound:ENTITY_ENDER_DRAGON_GROWL:1.0:1.0 |
| tips<max>:主标题 | 屏幕中央显示大标题 | tips<max>:&d恭喜中奖! |
| tips:主标题:副标题 | 屏幕显示主副标题 | tips:&d恭喜!:&e获得了钻石 |
| prizes:另一个key | 超级联动:直接套用另一个奖品的动作 | prizes:普通_铁锭 |
管理员权限节点: mylottery.admin
| 指令 | 权限 | 说明 |
|---|---|---|
| /lottery <活动ID> | 普通玩家 | 打开指定活动的抽奖界面 |
| /lottery preview <活动ID> | 普通玩家 | 打开奖池预览界面 |
| /lottery admin <活动ID> [抽数] [玩家] | 管理员 | 管理员直抽(不扣点不扣券) |
| /lottery points <add/take/check> <活动ID> <玩家> [数量] | 管理员 | 增加 / 扣除 / 查询 点数 |
| /lottery ticket <活动ID> <物品Key> <玩家> <数量> | 管理员 | 发放抽奖券 |
| /lottery reload | 管理员 | 重载插件配置 |
在编辑框里输入:
YAML:
uuid: "default"
display-name: "默认抽奖"
draw-counts: [1, 10, 500]
points: 2
tickets:
- "Original-PAPER"
prizes:
- key: "大奖_下界合金"
id: "Original-NETHERITE_INGOT"
priority: 4
weight: 1
grand: true
preview: true
name: "§5下界合金锭"
amount: 1
actions:
- "tell:&d&f你抽中了大奖:&5下界合金锭 &7x%amount%!"
- "command:[console]give %player% netherite_ingot %amount%"
QNLottery · 安全发奖,极速扩展