Commit Graph
302 Commits
Author SHA1 Message Date
youpaishidifu 8b03ff4dcb 修复PVP崩溃/卡死 + 合并小票潜影盒 + ShopManager类缺失防护
1. PVP加入世界 WorldInitEvent 异步崩溃:createWorld 必须在主线程执行
   (WorldInitEvent/WorldLoadEvent 仅允许同步触发)。改为主线程同步创建,
   并通过 WorldCreator.keepSpawnInMemory(false) + 取消 reapplyWorldRules 的
   setKeepSpawnInMemory(true),使 createWorld 不再同步加载出生点区块,
   主线程毫秒级返回,彻底消除 Watchdog 卡死(上一版误用异步线程导致崩溃)。
   移除无用的 pvpWorldCreating 异步互斥锁。
2. 收银台合并发货:打包(潜影盒)模式不再单独发放'小票潜影盒',
   小票已塞入商品潜影盒内;不打包(塞背包)模式跳过发放小票书。
   解决玩家拿到两个潜影盒(商品+小票 / 仅小票)的问题。
3. 构建时确保 ShopManager$1 等匿名内部类完整打入 JAR,避免 NoClassDefFoundError。
2026-07-08 17:06:14 +08:00
youpaishidifu 2f29f3beb1 修复PVP:选装备被误遣返 + 加入世界主线程卡死
1. 装备确认/一键装备分支关闭GUI前加 guiReopening 标记,
   避免 Paper 延迟关闭事件在 selectedTier 已移除后误判为未选装备而遣返。
2. joinArena 的世界创建(Bukkit.createWorld 阻塞~8s)移到异步线程执行,
   主线程仅负责传送与打开装备GUI,修复 Watchdog 卡死;
   新增 pvpWorldCreating 互斥锁防止并发 /pvp join 重复创建世界。
2026-07-08 16:30:38 +08:00
youpaishidifu 2d84153571 订正NBT退款:移除散装退货退款路径中残留的旧签名调用,统一走OrderItem精确匹配收回实物 2026-07-08 15:25:57 +08:00
youpaishidifu ebd35f5c1c 修复三处问题:1.PVP创建看门狗超时(预生成区块改异步非阻塞) 2.NBT商品快速退款仅退款(OrderItem携带NBT快照并精确匹配收回实物) 3.订单退款校验支持NBT精确计数 2026-07-08 15:19:00 +08:00
youpaishidifu 0eca13f5a1 修复PVP种子忽略/退款仅退钱/潜影盒小票丢失三问题
PVPArenaManager:
- PVP世界改为每次随机世界名(pvp_arena_<随机数>)+随机种子,彻底绕开Windows文件锁导致旧世界目录删不掉、复用旧小岛地形的问题
- 删除deleteExistingPVPWorldFolder,改用deleteWorldFolderIfExists(String) best-effort移入trash;15处PVP_WORLD_NAME引用改为动态pvpWorldName
- cleanupOldTrashWorlds前缀匹配改用pvp_arena_前缀

OrderManager:
- 修复管理员审批全额退款'两段处理'bug:原逻辑status提前变2导致退货分支永不可达,表现为只退钱不退货
- 改为status==0时同步收回物品(潜影盒按lore标签#orderId定位清除,普通物品按mat/qty移除)后再addBonds

WebManager:
- 修复打包发货小票落入被丢弃盒子副本:改为先addBookToShulker塞入首个潜影盒,再整体addItem进背包
2026-07-08 13:53:52 +08:00
youpaishidifu e658aa3274 修复6项问题:#804菜单[玩家名]方括号占位符、#805 PVP装备选择宽限期防误遣返、#808收银台附魔书NBT重建、#809商店退货精确扣货 2026-07-08 12:34:44 +08:00
youpaishidifu 121c12c71d 修复3个问题:#801菜单玩家名中文占位符 #802 PVP种子被MC忽略 #803 .web.md同步PHP
#801 菜单控制台指令+玩家名变量(Main.java 两处处理器)
- 原代码只匹配英文 {player} 等模式,实际菜单用中文 {玩家名}
- 新增5种中文占位符支持:{玩家名} %玩家名% <玩家名> [玩家名] (玩家名)
- 控制台权限检测本身正常(日志确认走了console路径)

#802 PVP世界种子固定问题(PVPArenaManager.java createPVPWorld)
- creator.createWorld() 改为 Bukkit.createWorld(creator)(完整Bukkit管线更可靠处理seed)
- 新增种子验证:创建后比对期望种子 vs MC实际种子,日志明确报告是否匹配
- 种子不匹配时输出警告(Paper 26.x 已知行为,需观察 Bukkit.createWorld 是否解决)

#803 .web.md PHP专属商品同步(ShopManager.java buildCatalogJson)
- loadCategories() 继续跳过 .web.md(游戏内不加载,行为不变)
- buildCatalogJson() 新增第二遍扫描:单独读取 .web.md 文件并纳入同步JSON
- PHP 收银台现在能展示 .web.md 中的专属商品
2026-07-08 11:42:15 +08:00
youpaishidifu 7631e30e2a 修复: PVP显式随机种子(根除固定-5092种子) + 菜单控制台指令+玩家名变量 + 商店跳过.web.md(PHP专属商品)
- PVPArenaManager: createPVPWorld改用worldSeedRandom.nextLong()显式设定随机种子(用户实测连续多次createWorld返回相同种子-5092048402667366605);增加删除后验证日志(确认目录消失或告警)
- Main.java(两处菜单点击): 新增permType提取→控制台/console身份执行(Bukkit.getConsoleSender);玩家名变量替换{player}/%player%/<player>/[player]/(player)等所有括号形式
- ShopManager: loadCategories文件过滤器增加!.web.md条件,游戏内不加载.web.md文件(PHP端专属商品)
2026-07-08 10:57:46 +08:00
youpaishidifu 3c15e6b060 修复PVP地形被切小岛/出生点干预、药水NBT缺失,以及商店附魔书NBT解析
- PVPArenaManager: 删除forceTerraformSpawnArea等184行小岛死代码;新增deleteExistingPVPWorldFolder确保每次进入都是自然生成的纯净主世界(彻底消除旧版setSpawnLocation/小岛误加载);pvpEquipment与makePotion改用PotionMeta写入INSTANT_HEALTH真实治疗NBT(1.21.4 PotionType.HEALING)
- ShopManager: 新增ENCHANT_MAP与inferEnchantedBook,按中文名解析附魔等级并写入EnchantmentStorageMeta,商店附魔书现在带正确附魔NBT
2026-07-08 01:37:46 +08:00
youpaishidifu 3c3d7cdbf2 修复PVP世界逻辑:不再锁定出生点、去除删世界重建死循环、有玩家直接加入无人即删 2026-07-08 01:05:51 +08:00
youpaishidifu caa58977a4 修复: green_discount语义从减免百分比改为折扣率(折数)——10不打折/9.9=9.9折(支付99%),命令/计算/显示文案全链路修正 2026-07-08 00:18:26 +08:00
youpaishidifu e18587c432 修复: packmoney和green_discount全面支持小数(int→double,去掉Math.floor截断),PHP侧packmoney强转int改为float 2026-07-07 23:54:20 +08:00
youpaishidifu 6bf3fceed6 修复: PVP世界生成改为每次强制删除现有世界后重新生成全新主世界(彻底杜绝复用小平台/环形岛),移除无用的正版标记逻辑 2026-07-07 23:39:37 +08:00
youpaishidifu ebece189e1 修复: PVP世界生成加诊断日志+遗留世界识别强制重置(环形岛/小平台不再复用) + 正版世界标记 2026-07-07 22:43:51 +08:00
youpaishidifu a5a63dc5d8 修复: PVP世界生成改为仅检测出生点非实体方块则删除重建(插件放手不干预地形); shop子命令新增packmoney/green参数; 彻底移除商店.md文件运行时复写(onDisable与定时任务不再saveAll, saveCategory改为空操作) 2026-07-07 22:14:24 +08:00
youpaishidifu 4297e0e02d 修复:PVP世界改为纯NORMAL主世界(插件零干预地形,仅只读定位出生点);商店保存改为合并感知,避免服务器关闭时覆盖管理员手工新增的商品/分类 2026-07-07 21:25:57 +08:00
youpaishidifu 3ebd8f0d5f 修复: PVP世界改FLAT+噪声圆形岛根除方形切割区块丢失 + 商城目录定时全量同步给PHP + 装备GUI响应优化(延迟20->5tick) 2026-07-07 19:40:47 +08:00
youpaishidifu 7c8c7f7818 修复: PVP世界种子重试机制+强制造陆兜底,根除小平台地形 2026-07-07 16:53:44 +08:00
youpaishidifu 49461ac042 修复: PVP世界旧虚空世界Windows删除锁致地形失效(重命名回收站强制刷新NORMAL地形) + /weblogin命令主线程同步HTTP卡服改为异步 2026-07-07 14:26:45 +08:00
youpaishidifu dd7166d73e 修复: PVP加入即被遣返(跨世界强制关背包误触遣返) + 打包小票书改为潜影盒包装并改用黑色文字 2026-07-07 13:37:50 +08:00
youpaishidifu 6d655787ce 功能+修复: PVP地形陆地优先搜索+打包小票 Written Book
PVP地形 (PVPArenaManager.java):
1. findSafeSpawn 大幅改进: 搜索半径32→64格, 新增陆地质量评分
   系统(草地3>沙子2>其它1), 海洋biome自动远距离扫掠找陆地
2. 区块预生成半径4→8(256格), 减少虚空可见范围
3. 保底平台扩大20x20 + 围栏 + 四角萤石标记

小票书 (WebManager.java):
4. 新增 give_receipt_book 变更类型处理(pollAdminChanges拾取)
5. 新增 giveReceiptBook() 方法生成 Written Book(§颜色热敏小票风格)
6. 书本含订单号/时间/玩家/操作员/结算方式/商品明细/合计多页
2026-07-07 12:28:40 +08:00
youpaishidifu d18884a3ee 修复: PVP装备选择彻底改判(已选档位则自动重开GUI不遣返) + 60秒超时安全网 2026-07-07 11:37:57 +08:00
youpaishidifu 751eeecfd5 修复: PVP装备选择误遣返(新增GUI打开宽限期3秒忽略地形加载期间的InventoryClose) 2026-07-07 10:39:35 +08:00
youpaishidifu 79b5af66b2 修复PVP装备选择误遣返并改用自然主世界地形生成 2026-07-07 00:33:24 +08:00
youpaishidifu 164267208a 商店打包费/环保减免配置化与收银台双模式收款
- ConfigManager 新增 packingFee/greenDiscount 公共配置字段
- ShopManager 颜色选择框对齐原色(SHULKER_BOX),打包费改读配置;新增 shop setgreen 命令
- WebManager 购物车结算支持现金模式(跳过扣债券),小票书塞入首个潜影盒;新增 pullShopConfig/pushShopConfig 与定时器拉取
- Main 新增 set packmoney 命令,修复 getConfigMgr()/webManager 访问方式
- 修复 openColorSelect 名字错乱(索引错位)与硬编码打包费显示
2026-07-06 23:51:01 +08:00
youpaishidifu 4cdd32913e 修复PVP背包被覆盖问题(独立备份表+未退场不覆盖)、优化随机地形生成、TPA传送请求有效期下限保护 2026-07-06 21:48:43 +08:00
youpaishidifu 122850f6f4 修复PVP竞技场三项问题:世界重建、进入流程与背包序列化
- 加入世界版本检测机制,磁盘残留的旧版小平台世界自动删除并重建为完整主世界地形
- 补全 PlayerChangedWorldEvent 事件处理器,进入/离开PVP世界时正确触发装备选择GUI与背包还原
- joinArena 传送后立即直接触发进入流程,杜绝跳过选装备清背包阶段
- 实现背包物品序列化(BukkitObjectOutputStream+Base64),真正支持清背包后还原玩家物品
2026-07-06 20:01:49 +08:00
youpaishidifu 035dd418fc 修复PVP世界生成小平台问题:先强制生成出生点区块再寻找安全点,避免误判虚空铺设漂浮平台(#735) 2026-07-06 19:27:03 +08:00
youpaishidifu 24e5248cec 新增maxhome全局传送点上限参数,并联动用户组home_limit(#726)
- AreaProtection新增max_home_per_player全局配置,复用现有area_config/web_area_config通路
- updateAreaConfig同步刷新内存字段,Web后台修改后立即生效
- HomeManager.getGlobalHomeLimit改为读取area_config,解析失败或<=0回退默认5
- 用户组home_limit(>0覆盖/0跟随/-1无限)逻辑不变,形成完整联动
2026-07-06 18:10:06 +08:00
youpaishidifu 28198114e6 修复购物车结算潜影盒颜色变量作用域;重构PVP竞技场为独立主世界(装备选择+背包备份还原);新增商品价格同步接口 2026-07-06 17:33:15 +08:00
youpaishidifu f0b0f23827 修复PVP竞技场无法进入:新增/pvp join进入与/pvp leave离开指令,世界生成时铺设出生平台防止掉虚空 2026-07-06 16:48:33 +08:00
youpaishidifu d62b61ef51 新增购物车结算shop_cart类型处理:Gson解析多商品detail,支持塞背包和潜影盒打包两种发货模式,含CartEntry内部类及辅助方法 2026-07-06 16:39:47 +08:00
youpaishidifu 273a462cd3 商品价格同步API:PHP admin改价→Java拉取应用
PHP端:
- core.php: shop_items表新增admin_buy_price/admin_sell_price列
- admin.php: adminShopUpdate()支持修改buy_price/sell_price,写入admin覆盖字段
- sync.php: 新增pull_shop_prices/clear_admin_prices/check_shop_prices_changed接口

Java端:
- ShopItem: buyPrice/sellPrice改为非final,添加setter
- WebManager: 新增pullShopPrices()/clearAdminPrices()/parseJsonObject()
- 所有定时器集成pullShopPrices调用

附带修复:
- Main: handlePVPArenaCommand重定向到pvpManager.onCommand
- PVPArenaManager: 适配Paper 1.21.4 ChunkGenerator API
- DatabaseManager: 新增getInventoryBackup(String)方法
- ShopItem: 添加setBuyPrice/setSellPrice
2026-07-06 15:49:13 +08:00
youpaishidifu 893b431757 修复:非法URL检测误踢含下划线玩家名(如Wings_of_Ashes)
- Main.java: 移除用户名的extractUrls检查,仅保留containsIllegalDomain
- URL_PATTERN的下划线分隔域名模式会误匹配合法MC用户名
- containsIllegalDomain已能正确检测非法域名后缀(baidu_com等)
2026-07-06 13:20:55 +08:00
youpaishidifu e847a72079 修正门禁交互分类:按钮/压力板移至红石电路,门禁只控制门/栅栏门 2026-07-06 13:03:33 +08:00
youpaishidifu 18000efb62 修复门禁交互和容器交互权限bug:DoubleChest容器检测+移除无权限级别拦截 2026-07-06 12:41:29 +08:00
youpaishidifu b403e4298d 修复<br>标签导致颜色变白和交易同步缺少id字段 2026-07-06 10:57:43 +08:00
youpaishidifu 6d40243fd2 修复HTML标签下划线切断:<u>/<b>/<i>标签内使用§r切断,防止样式溢出 2.7 2026-07-06 10:42:07 +08:00
youpaishidifu 8a54123d3a 修复HTML标签处理:移除<u>标签的下划线效果,只保留文本内容 2026-07-06 10:35:38 +08:00
youpaishidifu a306a00908 修复<b><u><i>标签处理:移除§r结尾,让<p>color统一控制整段文字颜色 2026-07-06 00:01:38 +08:00
youpaishidifu b901a72140 修复HTML颜色标签正则表达式:允许引号和尖括号之间有空格 2026-07-05 23:17:34 +08:00
youpaishidifu cc8727a2f9 扩展颜色名称映射:支持chartreuse、orange、pink、brown等CSS颜色名称,修复正则表达式匹配分号 2026-07-05 22:58:55 +08:00
youpaishidifu 57e9ba46a0 修复HTML颜色标签解析:支持rgb/rgba/hsl/hsla颜色函数 2026-07-05 22:48:04 +08:00
youpaishidifu 0c3478d1ff 修复出售限额提示关闭后仍打印消息bug,新增颜色代码和HTML标签支持 2026-07-05 22:24:46 +08:00
youpaishidifu ba0b7fb879 修改快速返回冷却时间+移除广告机挂机消息 2026-07-05 18:05:40 +08:00
youpaishidifu 3118f9bd1a @2026-07-05 00:40 Java修复: 1) 验证码核心修复-回答错误不再永久放行玩家,保持PENDING状态重试 2) URL正则扩展支持_.混合格式 3) 过期验证码不自动放行 4) 编译成功 2026-07-05 00:44:49 +08:00
youpaishidifu f18e7485c7 @2026-07-05 00:30 Java修复: 1) N+1验证码核心修复-回答错误不再永久放行,玩家需持续答对才能验证通过 2) 验证码过期后仍需重新验证(不自动放行) 3) URL正则扩展支持_.混合格式如123_ypshidifu.cn 4) GUI验证码跳过聊天答案 5) 编译成功 2026-07-05 00:35:11 +08:00
youpaishidifu 8b147b2531 @2026-07-04 23:40 Java修复: 1) illegal_domains.txt 热更新恢复-每次玩家加入时重读配置文件 2) N+1验证码机制-pendingMessages改为List缓存列表,答对第N题释放N条消息 3) 非法域名Kick抑制join/quit消息 4) onEnable自动释放illegal_domains.txt到插件目录 5) 编译打包通过 2026-07-04 23:43:55 +08:00
youpaishidifu b1ea407f3f 修复: 验证码GUI关闭逻辑 + Inner Class NoClassDefFoundError + 重复注册问题 + deploy脚本增强 2026-07-04 21:46:03 +08:00
youpaishidifu c9e740d4c9 fix: 非法域名支持underscore格式+GUI关闭拦截+验证码关闭后重抽题+修复内联类可见性 2026-07-04 19:45:27 +08:00