配置
配置头版本
默认 config.yml 文件头仍写着“LotteryBox 1.0.3 配置文件”。这是没有同步更新的旧注释,不会覆盖 build.gradle、JAR 清单和 plugin.yml 展开后的实际插件版本;当前插件版本是 1.0.4。
颜色代码使用 &。执行 /lb reload 会读取新配置、重新探测经济后端并重建全息;涉及构建版本、依赖或类加载的变化仍应重启测试服。
抽奖基础值
| 键 | 默认值 | 说明 |
|---|---|---|
lottery.cost | 1000 | 单次抽奖/单把钥匙的全局最后后备价格 |
lottery.daily-limit | 10 | 每玩家、每箱每日限制;管理员不受限 |
lottery.timezone | "" | 空值使用服务器时区,也可填 Asia/Shanghai 等 ZoneId |
购买钥匙本身不计次数。每日计数按玩家和箱子分别保存,在指定时区午夜切换。
价格优先级固定为:
- 箱级货币独立价格,即
/lb setcurrency; economy.player-currency.costs中对应类型的 PlayerCurrency 配置价格;- 箱级后备基础价格,即
/lb setcost; - 全局
lottery.cost。
稀有度
每个 lottery.rarity.COMMON|RARE|EPIC 节点都有相同字段:
| 字段 | COMMON | RARE | EPIC | 说明 |
|---|---|---|---|---|
display | &7普通 | &d精品 | &6史诗 | 玩家显示名 |
color | &7 | &d | &6 | 文本颜色 |
wool-color | WHITE | MAGENTA | ORANGE | wool 动画材质色 |
weight | 100 | 20 | 10 | 非空奖池权重 |
glass-color | WHITE_STAINED_GLASS_PANE | MAGENTA_STAINED_GLASS_PANE | ORANGE_STAINED_GLASS_PANE | GUI 装饰 |
概率只对非空奖池归一化。材质和颜色名称必须在目标服务端版本有效。
抽奖箱认定与编辑工具
| 键 | 默认值 | 说明 |
|---|---|---|
designation.mode | ADMIN_TOOL | 编辑棒右键已有方块;可改为 PLACE_WITH_TOOL |
designation.allowed-blocks | CHEST、TRAPPED_CHEST | 空列表 [] 表示允许任意方块 |
edit-tool.material | BLAZE_ROD | 编辑工具材质 |
edit-tool.name | &e&l抽奖箱编辑工具 | 显示名 |
edit-tool.lore | 两行默认说明 | 右键编辑/创建说明 |
经济配置
| 键 | 默认值 | 说明 |
|---|---|---|
economy.player-currency.currencies | [] | 新箱 PlayerCurrency 类型白名单;空表示发现到的全部类型 |
economy.player-currency.costs | {} | 类型到后备价格的映射,键不带 playercurrency: |
economy.player-currency.names | {} | 类型到自定义显示名的映射 |
economy.player-currency.icons | {} | 类型到 Bukkit Material 图标的映射 |
economy.xconomy.display-name | 金币 | XConomy 显示名 |
economy.xconomy.icon | GOLD_INGOT | XConomy 图标 |
economy.vault.display-name | 金币 | Vault 显示名 |
economy.vault.icon | GOLD_INGOT | Vault 图标 |
economy.fallback.display-name | 金币 | 兼容旧 1.0.1 配置的后备显示名 |
economy.fallback.icon | GOLD_INGOT | 兼容旧配置的后备图标 |
示例:
economy:
player-currency:
currencies: [coin, point]
costs:
coin: 1000
point: 10
names:
point: 积分
icons:
point: EMERALD
钥匙
| 键 | 默认值 | 占位符/说明 |
|---|---|---|
key-item.material | TRIPWIRE_HOOK | 钥匙材质 |
key-item.default-box-name | &6&l抽奖箱 | 箱子没有自定义名称时使用 |
key-item.name | &6&l{box} 钥匙 | {box} 为箱名 |
key-item.lore | 三行默认说明 | {box} 为绑定箱名 |
GUI
| 键 | 默认行为 | 占位符 |
|---|---|---|
preview-gui.title | 54 格预览,每页 45 个奖品 | {page}、{pages} |
purchase-gui.title | KEY 的 27 格购买界面,每页最多九种货币 | {page}、{pages} |
purchase-gui.button-lore | 货币、单把价格、余额和购买提示 | {currency}、{price}、{balance} |
direct-payment-gui.title | DIRECT 的 27 格选择界面,每页最多九种货币 | {page}、{pages} |
direct-payment-gui.button-lore | 货币、单次价格、余额和抽奖提示 | {currency}、{price}、{balance} |
animation-gui.title | 36 格共用动画界面 | 无 |
animation-gui.status.name | &6&l正在抽奖… | 无 |
animation-gui.status.lore | 等待与关闭界面说明 | 无 |
动画
| 键 | 默认值 | 说明 |
|---|---|---|
animation.duration-ticks | 60 | 总时长,20 tick 约一秒仅在 20 TPS 时成立 |
animation.interval-ticks | 2 | 动画刷新周期 |
全息
| 键 | 默认值 | 说明 |
|---|---|---|
hologram.enabled | true | 全息总开关 |
hologram.y-offset | 1.4 | Y 偏移 |
hologram.view-range | 32.0 | 可视距离 |
hologram.see-through | false | 是否穿透可见 |
hologram.background-argb | 1073741824 | 背景 ARGB |
hologram.default-title | &6&l✦ 抽奖箱 ✦ | 默认标题 |
hologram.direct-line | 左键预览、右键付费抽奖 | DIRECT 交互行 |
hologram.key-line | 左键预览、右键购买/使用钥匙 | KEY 交互行 |
hologram.cost-line | 左键预览、右键付费抽奖 | 旧配置兼容;当前按 draw mode 使用前两项 |
音效
| 节点 | 默认 key | volume | pitch |
|---|---|---|---|
sound.start | UI_BUTTON_CLICK | 1.0 | 1.0 |
sound.spin | BLOCK_NOTE_BLOCK_HAT | 0.5 | 1.5 |
sound.win | UI_TOAST_CHALLENGE_COMPLETE | 1.0 | 1.0 |
sound.enabled: true 是总开关。三个 key 必须是目标核心支持的 Sound 名称。
全服播报
| 键 | 默认值 | 说明 |
|---|---|---|
broadcast.enabled | true | 总开关 |
broadcast.format | 当前中奖文案 | 支持 {player}、{prize}、{rarity}、{prize_count}、{category} |
broadcast.prefix | &6[抽奖系统] | 可选前缀 |
broadcast.use-prefix | true | 是否使用前缀 |
broadcast.only-epic | true | 只播报 EPIC |
消息
所有 messages.* 都是可本地化文本。当前键和动态占位符如下;“无”表示没有动态参数,但仍支持 & 颜色代码。
| 键 | 占位符 | 场景 |
|---|---|---|
messages.no-permission | 无 | 权限不足 |
messages.player-only | 无 | 控制台执行玩家专用命令 |
messages.not-enough-money | {amount} | 旧通用余额不足文案 |
messages.cost-deducted | {amount}、{balance} | 旧通用扣款成功文案 |
messages.daily-limit-reached | 无 | 每日次数用完 |
messages.pool-empty | 无 | 没有有效奖品 |
messages.prize-unavailable | 无 | 奖品无法解析,提交前取消 |
messages.draw-start-failed | 无 | 动画启动失败、次数回滚和退款/退钥匙提示 |
messages.drawing-in-progress | 无 | 玩家已有付款或抽奖 token |
messages.inventory-full-drop | 无 | 奖品背包溢出后掉落 |
messages.reload-success | 无 | 配置和经济重载成功 |
messages.reset-success | {player} | 重置单个玩家 |
messages.reset-all-success | 无 | 重置所有玩家 |
messages.give-success | {player}、{amount} | 给予额外次数 |
messages.edit-tool-given | 无 | 发放编辑工具 |
messages.box-created | 无 | 新箱创建成功 |
messages.box-create-conflict | 无 | 位置已有配置,拒绝覆盖 |
messages.box-create-failed | 无 | 创建失败,复制状态保留 |
messages.box-editing | 无 | 打开编辑界面 |
messages.clone-prepared | 无 | 复制快照已冻结 |
messages.clone-created | 无 | 一次复制成功 |
messages.clone-cancelled | 无 | 取消复制 |
messages.clone-not-pending | 无 | 没有待复制状态 |
messages.box-deleted | 无 | 删除成功 |
messages.box-not-found | 无 | 目标不是 LotteryBox |
messages.not-a-chest | 无 | 目标不是允许的箱子 |
messages.look-at-box | 无 | 未瞄准六格内箱子 |
messages.name-set | {name} | 设置箱名 |
messages.name-cleared | 无 | 清除箱名 |
messages.box-protected | 无 | 抽奖箱受保护 |
messages.remaining-draws | {remaining} | 显示剩余次数 |
messages.already-editing | 无 | 另一管理员持有编辑锁 |
messages.no-economy | 无 | 无可用经济后端,已有钥匙仍可用 |
messages.no-payment-methods | 无 | 当前箱没有支付 ID |
messages.payment-method-unavailable | 无 | 已配置支付 ID 目前均不可用 |
messages.payment-selection-expired | 无 | 模式、方法或价格快照变化 |
messages.not-enough-currency | {currency}、{amount} | 指定货币余额不足 |
messages.refund-success | {amount}、{currency} | 原路退款成功 |
messages.refund-failed | {amount}、{currency} | 自动退款失败,要求人工对账 |
messages.wrong-key | 无 | 钥匙属于其他箱子 |
messages.key-required | 无 | KEY 模式要求手持正确钥匙 |
messages.purchase-in-progress | 无 | 上一笔钥匙购买处理中 |
messages.purchase-failed | 无 | 购买失败或已退款 |
messages.key-purchase-success | {amount}、{currency}、{balance} | 购买成功 |
messages.key-inventory-full-drop | 无 | 钥匙背包溢出后掉落 |
messages.payment-failed | 无 | DIRECT 付款失败或已退款 |
messages.invalid-draw-mode | {mode} | 非 direct/key 输入 |
messages.draw-mode-set | {mode}、{display} | 模式切换成功 |
messages.currency-not-found | {currency} | 未检测到支付方式 |
messages.currency-already-added | {currency} | 重复添加 |
messages.currency-added | {currency}、{name} | 添加成功,价格继续走后备规则 |
messages.currency-not-added | {currency} | 设置尚未添加的货币 |
messages.currency-removed | {currency} | 从当前箱移除 |
messages.currency-cost-set | {currency}、{amount} | 独立价格设置成功 |
messages.invalid-amount | {amount} | 金额非法或小于零 |
启动或 /lb reload 会把 JAR 默认配置中缺失的新键补入旧配置,同时保留已有自定义值。修改占位符时不要删除业务需要的参数,否则消息将失去关键对账信息。
旧版直接付费按钮
| 键 | 默认 | 占位符 |
|---|---|---|
draw-button.name | &6&l✦ 点击抽奖 ✦ | 无 |
draw-button.lore | 消耗、剩余次数和点击提示 | {cost}、{remaining}、{limit} |
draw-button.* 为旧版直接付费入口保留。1.0.4 当前 DIRECT 主入口是 27 格货币选择界面,配置兼容项存在不代表旧 GUI 行为仍是当前主流程。