• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
💰【1.12-1.21+|Folia】WarZCrates - 商业级抽奖系统|38种动画|网页编辑器|保底+阶梯钥匙

原创 付费 💰【1.12-1.21+|Folia】WarZCrates - 商业级抽奖系统|38种动画|网页编辑器|保底+阶梯钥匙 1.4.2

请登录后获取
[MD] # WarZCrates 1.4.2 发布日期: 2026-08-12 ## 更新摘要 - 新增管理员指令 `/warzcrates resetpersonal <箱子ID> [玩家]`:可重置指定玩家在指定宝箱内所有带 `personalLimit` 奖励的单人抽取计数。指定玩家时仅重置该玩家;不指定玩家时重置该宝箱全部玩家的个人抽取计数。底层复用已有的 `PlayerDataManager.resetPersonalStocks()` 方法,无需改动数据层。 - 新增 PlaceholderAPI 变量 `%warzcrates_personalstock_<箱子ID>_<槽位>%`:返回指定玩家在指定宝箱指定槽位奖励的剩余可抽取次数。无限制返回 `-1`,已耗尽返回 `0`,仍有剩余返回实际次数。可用于 TrMenu 等 GUI 界面展示奖励锁定/可抽取状态。 - 新增对应的消息文本(`messages.yml`):`resetpersonal_usage`、`resetpersonal_success_player`、`resetpersonal_success_all`、`help_resetpersonal`,支持 Tab 补全。 ### 典型使用场景:幸运之门阶梯轮次抽奖 配合 WarZCrates 奖励内置的 `commands` 字段,可实现门票联动: ```yaml reward: id: ticket commands: - "warzcrates resetpersonal grand_prize %player%" - "warzcrates open grand_prize %player%" ``` 玩家抽到门票后,先重置其在大奖宝箱的个人抽取限制,再自动开启大奖宝箱,恢复稀有奖励的抽取资格。 ### 升级说明 - 直接替换插件并重启(或 `/warzcrates reload`)即可;无需数据迁移。 - 旧 `messages.yml` 缺少新增 key 时会自动补齐默认文案。 [/MD]
[MD] # WarZCrates 1.4.1 发布日期: 2026-07-23 ## 更新摘要 - 新增玩家抽奖日志:在开箱事务成功(钥匙/箱子物品已扣、结果已提交)后异步写入记录,包含玩家、箱子、奖励槽位/名称/材质、稀有度、概率、单抽/十连序号、是否触发保底及规则 ID。 - 日志支持多种存储:`YAML`(JSON Lines 文件 `draw_logs.jsonl`)、`SQLITE`、`MYSQL`;`storage-type: SAME` 时跟随 `storage.type`。SQLite/MySQL 可复用玩家数据连接,也可在 `draw-log` 下单独覆盖。 - 可配置总开关 `draw-log.enabled`,以及自动清理:`retention-days`、`max-entries`、`interval-minutes`;网页端支持按当前规则「立即清理」。 - 网页编辑器新增「抽奖日志」页:按玩家名/UUID、箱子 ID、稀有度、仅保底、时间范围筛选,分页浏览;API:`GET /api/logs`、`GET /api/logs/status`、`POST /api/logs/cleanup`。 - 日志写入不阻塞主线程开箱路径;关闭日志或存储异常时不影响正常抽奖。 ### 配置示例 ```yaml draw-log: enabled: true storage-type: SAME # SAME / YAML / SQLITE / MYSQL yaml: file: draw_logs.jsonl auto-cleanup: enabled: true retention-days: 30 max-entries: 100000 interval-minutes: 60 ``` ### 升级说明 - 直接替换插件并重启(或 `/warzcrates reload`)即可;默认启用日志且存储跟随 `storage.type`。 - 使用 SQLite/MySQL 时会自动创建表 `warzcrates_draw_logs`,无需手工迁移。 - 若旧 `config.yml` 没有 `draw-log` 节点,插件会采用上述默认值;需要关闭日志时设置 `draw-log.enabled: false`。 [/MD]
[MD] - Folia 的内置 `Built-in` provider 现在支持真正的玩家专属动态全息图:同一抽奖箱可以分别向每名玩家显示自己的虚拟钥匙数量和保底值,不再因为使用 Folia 而回退到静态 `hologram.lines`。 - 新增 Folia 私有实体渲染路径。盔甲架会通过 `World#spawn(..., Consumer)` 在加入世界前完成配置并设为默认不可见,只在所属玩家的 Entity Scheduler 上执行 `showEntity`;其他玩家在任何时刻都不会收到这套文本,也不需要全服逐人 `hideEntity`。 - 全息刷新拆分为“玩家 Entity Scheduler 解析内部占位符/PlaceholderAPI -> 箱子 Region Scheduler 生成或删除实体 -> 玩家 Entity Scheduler 显示私有实体”三阶段;任何调度或私有可见性能力失败都会安全保持隐藏或回退静态模板,不执行跨 Region 直接调用。 - 新增刷新票据与内容版本校验,快速连续修改钥匙/保底、玩家切世界、退出、区块恢复、重载或切换 provider 时,旧异步结果不会覆盖新值,也不会重新显示已经作废的全息实体。 - 新增 `hologram.built-in-view-distance`,默认 `64` 格,仅为附近玩家创建 Folia 私有全息;`<= 0` 表示不限距离。玩家跨区块或传送时会低频刷新,离开范围后自动删除对应实体,避免“箱子数 × 全服人数”持续膨胀。 - 修复内置全息部分行丢失时只要仍有一行存活就不恢复的问题;现在会校验整组实体是否完整。 - 更新动态全息能力警告:Folia 私有实体 API 不完整、旧 Spigot/Paper 缺少玩家实体可见性能力,以及外部 provider 缺少 PlaceholderAPI 时会分别给出准确原因,不再出现“已经使用 Built-in 却仍提示切换 BuiltIn”的矛盾文案。 - 新增 Folia 刷新票据、版本失效和三维可视距离回归测试。 [/MD]
[MD] - 修复动画期间的库存操作漏洞:动画 GUI、`Esc` 关闭、点击/拖拽、丢弃、拾取、切换副手、切换热栏、消耗物品、实体/展示框交互和放置操作都会被锁定;关闭动画界面后会在玩家线程重新打开并同步库存,避免客户端幽灵物品被误认为钥匙或箱子复制。 - 修复动画结算顺序:Spigot、Paper 和 Folia 都会先交付已预留奖励,确认结算回调完成后才解除库存锁;动画取消、玩家退出和异常路径仍会补发未结算奖励。 - 修复旧版保底在 `pity_reward` 概率为 0、库存耗尽或个人额度耗尽时错误提示保底并清零的问题;只有真正从保底专用池选中奖励才会标记触发。旧版 `max_pity` 的兼容语义保持不变(`max_pity: 200` 仍为达到 200 后的下一抽)。 - 修复网页编辑器高级保底规则被静默删除的问题:支持中文和普通冒号规则 ID,对格式错误、重复 ID、非法模式或非法次数会阻止保存并返回明确错误;含点号、换行或 NUL 的 ID 会被拒绝以避免 YAML 路径被改写。 - 修复游戏内奖励编辑器把奖励移动到空槽后丢失 `chance`、`rarity`、`pity_reward`、`reset_pity_on_win`、库存、个人限量和命令等元数据的问题;旧 YAML、SQLite、MySQL 数据无需迁移。 - 新增库存锁、保底回退、网页规则校验和奖励元数据复制回归测试,覆盖单抽、十连、动画取消与编辑器保存路径。 [/MD]
[MD] - 新增全服与个人双重限量模式 `GLOBAL_PERSONAL`。同一奖励可以同时配置全服共享库存和每名玩家的独立获取上限,例如 `stock: 100`、`initial_stock: 100`、`personal_limit: 1`,实现“全服最多产出 100 份,且每人最多抽中 1 次”。 - 新增奖励字段 `personal_limit`:仅在 `GLOBAL_PERSONAL` 下作为个人额度使用,`-1` 表示该奖励不限制个人次数,`0` 表示该玩家不可抽到。旧 `PERSONAL` 继续使用 `initial_stock`,旧 `GLOBAL` 继续使用 `stock / initial_stock`,没有修改任何旧配置语义。 - 单抽和十连现在会在同一箱子的短事务内完成选奖与库存预留。全服库存、个人额度和整批十连均采用“全部成功或全部失败”,多个 Folia 区域中的玩家同时争抢最后一份奖励时不会超发;奖励发放阶段不再二次扣库存。 - 修复十连只扣模拟库存、实际库存为零后仍可能继续发奖的问题。十连会先确认全部 10 个结果都能同时满足限量和保底条件,不足时不扣钥匙或箱子物品。 - 动画滚动展示改为只读抽取,不会因展示假奖励触发限量池重置。动画正常结束、取消或玩家退出时只交付已经预留的奖励,不会重复扣减或绕过限量。 - Spigot/Paper 在插件停用和任务取消前会先结算在线玩家尚未展示的已预留奖励,避免热重载时出现“钥匙已扣但奖励未发”。Folia 不会在停用线程中执行不安全的跨区域背包访问,仍建议不要在玩家播放抽奖动画时热卸载插件。 - 全服重置与个人重置在双重模式下独立计时:某个玩家用完个人额度不会重置全服库存,全服库存耗尽也不会清除玩家个人记录。 - 兼容旧数据直接升级:YAML、SQLite、MySQL 继续复用现有 `personal_stock` 结构,无需执行迁移命令或 SQL。降低 `personal_limit` 时已有剩余次数会自动夹紧;提高上限不会自动补充已消耗次数。 - 网页编辑器和游戏内设置 GUI 已接入双重限量模式;网页端可编辑 `personal_limit`,旧网页请求未携带该字段时会保留已有值。兼容别名 `BOTH`、`COMBINED`、`GLOBAL_AND_PERSONAL`,加载后统一规范为 `GLOBAL_PERSONAL`。 - 网页编辑器保存时会校验页面加载时的全服库存;若编辑期间已有玩家抽中并改变库存,将拒绝旧页面覆盖并提示刷新,避免仅修改名称或概率时意外补回已消耗库存。 - 网页读取、网页保存、游戏内设置与奖励分页保存统一使用“配置锁 -> 箱子锁”的顺序;GUI 每次设置或换页会在同一事务内落盘,避免与重载、开箱扣库并发时修改旧对象或丢失上一页内容。 ## 配置示例 ```yaml settings: limited_pool_type: GLOBAL_PERSONAL reset_interval_ms: -1 rewards: 0: material: NETHER_STAR chance: 1.0 stock: 100 initial_stock: 100 personal_limit: 1 [/MD]
  • 完整 ItemStack 发放时不再使用 display_name 覆盖原名。
  • 获奖消息支持旧式 custom_name 和 Minecraft 1.21/CraftEngine 的 item_name。
  • 网页编辑器不再把自动解析的 Diamond 等名称写回 YAML。
  • 游戏内编辑器会保留 Adventure 名称组件、颜色及其他元数据。
  • 可安全恢复旧编辑器写入、遮盖 item_name 的错误 custom_name。
  • 纯材质奖励的自定义命名保持兼容。
[MD] - 修复已绑定的 CraftEngine `furniture_item` 家具仍可能被玩家直接破坏的问题:现在确认绑定后会先取消 `FurnitureAttemptBreakEvent` / `FurnitureHitEvent` / `FurnitureBreakEvent`,再执行左键预览;即使预览 GUI 或奖励展示发生异常,保护状态也不会失效。 - CraftEngine 动态事件改为 `HIGHEST` 优先级,并同时注册当前版本存在的 AttemptBreak 与 Hit 事件;最终 Break 事件继续作为双保险。 - 启动日志现在会列出 interact、attempt-break、hit、final-break 和实体查询接口的实际注册状态;如果没有任何可用的家具破坏事件,兼容层不会再错误宣称保护已启用。 - 新增 GROUND 家具承载块保护:插件会读取 CraftEngine 的真实 `anchorType`,玩家挖掘或爆炸破坏家具锚点正下方的地板时,会确认该位置确实存在已绑定的 GROUND 家具并阻止破坏,且不会误保护 WALL / CEILING 家具下方的普通方块。 - 家具事件坐标优先从 `event.furniture().location()` 获取,避免未来/分支版本将事件级 `location` 改成命中点后造成绑定漏判。 - 修复 `hologram.provider: AUTO` 在服务器安装了外部全息插件、但未启用 PlaceholderAPI 时静默改用三行静态模板,导致虚拟钥匙和保底行完全不显示的问题。 - `AUTO` 现在会根据动态显示能力选择 provider:Paper/Spigot 未启用 PlaceholderAPI 时,自动使用支持玩家专属渲染的 `Built-in`;安装 PlaceholderAPI 后仍优先使用 DecentHolograms、HolographicDisplays 或 CMI。 - 显式指定外部 provider 时继续尊重管理员选择;若当前组合无法解析玩家专属占位符,控制台会说明正在使用静态模板,并给出启用 PlaceholderAPI 或切换 Built-in 的建议。 - DecentHolograms 在发放、扣除或设置虚拟钥匙后会立即刷新目标玩家的全息图,不再只依赖外部插件的周期刷新。 - Folia 未启用 PlaceholderAPI 时仍无法安全生成玩家隔离的全息文本;插件现在会明确警告,不会把未解析占位符直接展示给玩家。 [/MD]
[MD] - 修复网页编辑器预览会把 `&#RRGGBB` 十六进制颜色码剥离、导致箱子名称和奖励名称显示为白色的问题。 - 网页预览现已支持 `&#RRGGBB`、传统 `&0`-`&f` 颜色码,以及加粗、斜体、下划线、删除线和重置格式;奖励槽位简称也会保留对应颜色。 - 彩色预览会先转义用户文本再生成受控样式,避免名称中的 HTML 被当作网页代码执行;保存时仍写入原始 Minecraft 颜色字符串,不会把预览标签写入 YAML。 - 新增 CraftEngine `furniture_item` 家具兼容,支持家具绑定、解绑、预览、单抽和十连抽,并拦截已绑定家具的误破坏。 - 新增 CraftEngine `furniture_item` 家具兼容,`/warzcrates set <id>` 与 `/warzcrates remove` 会优先识别当前看向的 CE 家具,不再误选家具后方或下方方块。 - 已绑定家具支持左键预览、右键单抽以及 `Shift + 右键` 十连抽,交互方式与普通方块抽奖箱保持一致。 - 已绑定家具会拦截 CraftEngine 的破坏事件,避免玩家预览奖池时误拆家具。 - CraftEngine 继续作为可选依赖,通过反射兼容不同事件版本;未安装 CraftEngine 时不会改变原有方块绑定和开箱行为。 [/MD]
  • 更新内容总结:
    1. 修复 /warzcrates edit 箱子名; 编辑器里把奖励物品拿到背包时,插件展示用的“稀有度/概率” lore 被一起带走的问题。
    2. 新增展示 lore 标签识别,只清理插件自己追加的临时展示行,不误删物品原本手写 lore。
    3. 点击、拖拽、移动编辑器奖励物品后,会自动清理玩家光标和背包里的展示 lore。
    4. 没有新增全局概率开关;show_chance_lore: false 仍只管“概率”行,reward-display.show_rarity_lore: false 仍只管“稀有度”行。
WarZCrates 1.3.0

  • 修复保底值悬浮字出现两条重叠"花字"的问题。根因:悬浮字实体会随区块存盘,玩家远离箱子后触发刷新时旧实体删不掉,区块重载后带着旧保底值复活并与新字重叠。由于两套文字只有保底数字不同,视觉上只有保底值一行乱码。
  • 新增区块加载兜底清理:旧版本已残留在存档里的重影实体,更新后走近箱子即自动清除,无需手动处理。
  • 区块卸载再加载后悬浮字自动恢复,不用等重新进服/开箱。
后退
顶部 底部