Commit Graph
50 Commits
Author SHA1 Message Date
youpaishidifu 30e7f68c85 修复:农作物种植权限+管理员权限隐藏+成员权限合并到用户管理+领地同步列数修复 2026-06-26 22:11:20 +08:00
youpaishidifu a06f7a669b 修复4个区域防护问题:展示架SHELF匹配、领地主不能添加为成员、农作物权限分层(独立denyCropHarvest)、领地同步调试日志 2026-06-26 21:23:20 +08:00
youpaishidifu f333e59621 修复WebManager$2类加载错误: 匿名X509TrustManager改为静态具名内部类TrustAllX509Manager,解决Bukkit类加载器NoClassDefFoundError 2026-06-26 19:49:15 +08:00
youpaishidifu 80c8715264 fix: 3个问题修复
1. 展示架拦截: isUIBlock新增DISPLAY/SHOWCASE/DECORATED_POT宽泛匹配
2. 领地同步hash: 从6个字段扩展到全部关键字段(60+),任何字段变化都触发同步
3. Web自动登录安全: validateWebAccess的view操作增加web_login_verified检查
   - pushPlayerLoginStatus在online=1时同步写入web_login_verified
   - 未通过Java验证的token即使在线也要求密码
   - 防止偷token自动登录
2026-06-26 19:15:54 +08:00
youpaishidifu f67efd0f8d fix: 领地系统7个问题修复
1. 领地主禁止作为成员入库: addLandMember检查owner返回boolean
2. 成员独立权限编辑: permDefs补充denyMobAttack
3. 红石原件扩展: 拉杆、各种按钮、压力板、阳光传感器
4. 容器交互新增展示架: denyContainer同时拦截展示框
5. 管理员身份改为领地级: isLandAdmin/setLandAdmin基于area_land_permissions.role='admin'
6. Timer A定期同步在线玩家: 每10轮(~30-50秒)同步一次保持PHP心跳
7. 领地数据同步修复: PHP sync_lands补充deny_container/deny_mob_attack/deny_fire等新字段,hash检测改为精确字段hash
2026-06-26 18:47:26 +08:00
youpaishidifu 3a3f4f1cd2 fix: SQLite锁库问题 - 定时器串行化+全员下线暂停+PHP WAL checkpoint
Java端改动:
- Timer A 内3个请求串行化(原来并行), 每个间隔2-3秒, 彻底避免PHP锁库
- 新增phpBusyUntil全局退避: 检测到database is locked时暂停所有定时器10秒
- 错峰间隔从5秒提高到8秒
- 全员下线时暂停Timer B/C, 仅保留Timer A(注册登录)
- 玩家上线后自动恢复Timer B/C
- 首次启动加±5秒随机偏移避免精确对齐
- doGet/doPost/doGetHttpFallback/doPostHttpFallback全部加detectPhpBusy检测

PHP端改动:
- busy_timeout从30秒提升到60秒
- 新增walCheckpoint()函数, 每个API请求结束后执行WAL checkpoint释放锁
- sync.php/shop.php/ticket.php/cdk.php/register.php/balance.php全部加checkpoint
2026-06-26 16:58:37 +08:00
youpaishidifu 11e1d27013 修复6项区域防护问题:
1. 移除独立成员权限面板,合并到成员列表左键编辑
2. 新增攻击生物权限(denyMobAttack):字段/DB迁移/事件处理/GUI/CLI
3. CLI效果编辑:增益效果添加等级/时长编辑按钮+聊天输入
4. 投喂动物修复:isAnimalFood检测动物食物+动态命名(禁止投喂/允许投喂)
5. 领地传送修复:GUI传送优先传送点→安全位置搜索(中心+40次随机)
6. 拾取节流:5~10秒随机间隔+5条随机提示轮换
2026-06-26 16:31:39 +08:00
youpaishidifu 3402a56d1c 修复容器管理开关:添加deny_container列的ALTER TABLE迁移\n旧数据库表缺少该列导致INSERT OR REPLACE失败,开关切换后数据丢失 2026-06-26 14:46:31 +08:00
youpaishidifu f2866ada9e 修复GUI管理员按钮和权限切换:
1. 管理员面板显示管理按钮(可切换setadmin/unsetadmin)
2. togglePerm支持动态权限名(禁止点燃/启用点燃等)
3. 管理员提示不再阻止显示管理按钮
2026-06-26 14:13:15 +08:00
youpaishidifu 48e1692822 修复5项区域防护问题:
1. 点燃权限:onIgnite检查denyFire而非denyFireSpread
2. 农作物收获:BlockBreak+右键检测作物方块
3. 权限显示名称:点燃/农作物收获动态命名
4. GUI效果管理tooltip:修正为GUI选择描述
5. 容器扩展:isUIBlock覆盖工作台/铁砧/砂轮等
2026-06-26 14:03:12 +08:00
youpaishidifu 44a9edca1b 修复6项问题:
- GUI袭击开关(启用袭击/禁止袭击双向切换)
- GUI增益效果添加改为可点击选择列表
- GUI添加成员排除领地主人
- 成员权限面板添加管理员状态显示和命令提示
- 新增setadmin/unsetadmin命令设置管理员
- 容器权限独立控制已验证
2026-06-26 13:18:41 +08:00
youpaishidifu ca54dd61ba 修复6项领地系统问题:
- 删除轮询空日志(pollWebLoginConfirmations)
- 添加拾取限制事件监听(PlayerPickupItemEvent)
- 新增独立容器管理权限(denyContainer)
- 管理员权限自动隐藏(per-player编辑跳过)
- GUI添加成员排除自身
- 验证破坏方块权限覆盖所有方块
2026-06-26 12:28:20 +08:00
youpaishidifu 47e1ad3be5 修复和平模式扫描范围+在线玩家同步+领地数据同步 2026-06-26 11:25:57 +08:00
youpaishidifu 46b483848c 修复问题4: GUI效果管理改为可点击选择列表
问题4修复: GUI效果管理
- 移除点击后在聊天栏输入模式
- 新增可点击效果选择列表(与CLI一致)
- 负面效果(16种)、中性效果(3种)、正面效果(20种)
- 点击效果直接添加到清除/增益列表
- 支持重复检测,已添加的效果显示灰色

新增方法:
- openEffectsSelection(): 打开效果选择列表GUI
- getEffectNameBySlot(): 根据槽位获取效果名
- pendingEffectSelection: 存储选择状态
2026-06-26 11:13:12 +08:00
youpaishidifu 40edd85ea7 修复多个问题:空白日志+禁止袭击更名+CDK逻辑简化
问题1修复: 移除空白日志
- 移除Web登录确认轮询和密码验证轮询的PHP响应日志
- 这些日志在data为空时输出无意义内容

问题6修复: 禁止袭击更名
- 启用状态(denyRaid=true)显示禁止袭击
- 禁用状态(denyRaid=false)显示启用袭击
- 修改AreaGUIManager和AreaCLIManager显示逻辑

问题3修复: CDK兑换逻辑简化
- PHP不再更新bond_cache,只记录pending交易
- Java端负责拉取交易并处理加债券
- 远程CDK和本地CDK统一处理逻辑
2026-06-26 10:59:50 +08:00
youpaishidifu 59313d4f32 问题10修复: CDK兑换不到账+假密码+隐藏密码框
CDK兑换修复:
- PHP远程CDK兑换改为写pending交易(cdK_redeem+pending)
- PHP远程CDK兑换同时更新bond_cache
- Java端移除sdf1反射调用(不必要的复杂度)
- 远程/本地CDK兑换链路统一:PHP更新cache→写pending→Java拉取→addBonds

假密码/密码框修复:
- player.php商城购买: 总价≤1000时隐藏密码输入框
- player.phpCDK兑换: 完全移除密码输入框(CDK免验证)
- shop.php移除硬性密码检查,交给validateWebAccess处理
- 动态切换:调整数量时密码框实时显示/隐藏
2026-06-26 10:21:35 +08:00
youpaishidifu c86e9f76b9 @ SeniorDeveloper 修复领地系统10项问题:空白日志、CLI效果管理、GUI验证、在线玩家同步、领地数据同步、领地所有权验证、用户端UI优化、效果管理、和平模式修复 2026-06-25 23:46:57 +08:00
youpaishidifu 142b15973a v23: 修复定时器A启动延迟 - 双条件判断
问题:
- 定时器A每次执行都检查initialSyncComplete,只有全量同步完成后才执行轮询
- 全量同步耗时60+秒,导致Web登录后60秒才开始轮询
- 玩家在20:09:19加入,20:10:01超时下线,20:10:19才开始轮询(延迟60秒)

修复:
- 新增allowLoginPolling标志,双条件:initialSyncComplete OR 玩家在线
- 玩家onJoin时立即设置allowLoginPolling=true(不等全量同步完成)
- 定时器A改为检查allowLoginPolling,有玩家在线时立即开始轮询
- 确保不影响定时器B/C的initialSyncComplete逻辑
2026-06-25 20:17:24 +08:00
youpaishidifu 3e21bbb112 v22: 简化Web登录确认逻辑+缩短轮询间隔到3~5秒
问题1 - 玩家Web登录后,Java拒绝自动登录(phpVerified=false):
- pollWebLoginConfirmations双重验证太严格:Java内存记录 AND PHP验证状态都为空时拒绝
- 根因:Java重启/内存清理后verifiedWebLogins为空,PHP的web_login_verified也无记录
- 但web_login_confirmations记录本身已代表通过安全验证(PHP verifyWebPassword 已禁用)

修复1 - 安全逻辑简化:
- 有确认记录 = 已通过某种安全验证,直接允许自动登录
- 移除「Java和PHP均无验证记录则拒绝」的严格检查
- 记录PHP验证状态仅用于日志诊断,不再作为拦截条件

问题2 - 轮询间隔8~15秒太长,导致Web登录后66秒才自动登录:
- 修复2:定时器A间隔缩短到3~5秒,快速响应登录请求
2026-06-25 20:00:38 +08:00
youpaishidifu df6cc2bea8 v21: 修复Web登录同步失败+全链路日志
问题根因:
- pollWebLoginConfirmations只检查Java内存isWebLoginVerified
- 邮箱验证码登录时PHP直接写web_login_confirmations,Java从未调用recordWebLogin
- 导致hasVerifiedRecord=false,自动登录被安全拦截

修复内容:
- PHP端:check_web_login_confirmations返回php_verified字段(查询web_login_verified表)
- Java端:pollWebLoginConfirmations信任PHP验证状态,Java无记录但PHP有→信任PHP并写入
- 全链路日志增强:轮询开始/PHP响应/安全检查/回写结果全部打印详细日志
- PHP端:webLoginRequest/completeWebLoginRequest/checkPendingWebLogins增加debugLog
2026-06-25 19:35:10 +08:00
youpaishidifu d23ce56606 v20: 修复锁库频率+URI undefined scheme错误
问题1 - 锁库超预期(每分钟2次):
- 定时器A间隔0~5秒太短,三个并行任务同时打PHP
- 修复:定时器A间隔改为8~15秒,减少锁库概率

问题2 - URI with undefined scheme:
- pollAdminChanges的ackUrl是相对路径/api/land_api.php?...,缺少webBaseUrl前缀
- 修复:ackUrl加上webBaseUrl前缀
- 附带修复:poll_admin_changes的secretKey未URL编码,已加上URLEncoder.encode
2026-06-25 19:15:57 +08:00
youpaishidifu eb3c336e38 v19: 修复Web登录验证链路 - verifiedWebLogins永不写入导致自动登录失败
问题根因:
- pollWebLoginRequests验证密码成功后不写verifiedWebLogins(注释写了'不在验证成功时写入')
- pollWebLoginConfirmations检查isWebLoginVerified永远返回false → 自动登录被拒绝
- 导致PHP确认登录成功但Java不自动登录玩家

修复内容:
- 新增recordWebLogin()方法:密码验证成功时立即写入verifiedWebLogins
- pollWebLoginRequests:密码验证成功后调用recordWebLogin
- pollWebLoginConfirmations:增强安全检查日志
- isJavaLoginRecorded:增加详细诊断日志(记录数、过期时间等)
2026-06-25 18:58:44 +08:00
youpaishidifu f1cd0da7d4 v18 修复快速重连:新增javaLoginRecords持久化登录记录(5分钟),检查点1放行同IP重连;添加PHP响应日志 2026-06-25 18:44:42 +08:00
youpaishidifu 329bca61a9 v17 合并定时器重构:6个独立定时器→3个合并错峰定时器(A注册登录0~5s B交易0~10s C其它10~20s),自动错峰≥5秒,消灭锁库 2026-06-25 18:22:03 +08:00
youpaishidifu b6863c45c7 修复: 自动登录逻辑重构+轮询间隔增大降低DB锁 2026-06-25 18:03:45 +08:00
youpaishidifu 2867c7614a 优化数据库锁检测:修复注册轮询锁库逻辑,为CDK轮询和领地同步添加锁库检测,调整交易/库存轮询间隔为8±5秒 2026-06-25 17:33:43 +08:00
youpaishidifu 23337695b4 v15: 修复PHP假密码绕过 + 快速重连安全检查
安全修复(严重):
- WebManager.pollWebLoginRequests(): 不再在handleWebPasswordVerify成功后写入verifiedWebLogins
  - 之前逻辑:PHP推送密码给Java → Java验证成功 → 自动写入verifiedWebLogins → onJoin自动登录
  - 漏洞:PHP端如果输入假密码/错误密码,Java不会验证(Java验证只基于login.db),verifiedWebLogins不会被设置
  - 但pollWebLoginConfirmations()检查isWebLoginVerified()失败后,玩家快速重连仍被canAutoLogin放行
- Main.onJoin(): 快速重连检查(canAutoLogin)之前增加isWebLoginVerified()检查
  - 玩家在Web端通过Java验证登录过 → verifiedWebLogins有记录 → 5分钟内重连放行
  - 玩家无Java验证记录 → 拒绝快速重连(即使用IP快速重连也不行)
  - 解决:PHP假密码/错误密码 → Java不会设置verifiedWebLogins → 快速重连被拒
2026-06-25 16:24:15 +08:00
youpaishidifu 15f473abc8 v14: Java快速重连三层检查(纯内存)+ 回退DB持久化
快速重连修复(按流程图严格实现):
- 检查点1: 检查loggedIn集合中是否有Java手动登录记录 → 有则继续正常流程
- 检查点2: 检查verifiedWebLogins内存中是否有PHP验证记录 → 有则自动登录
- 检查点3: 上述2路都失败 → 强制重新验证密码
- autoGenerateWebLoginToken和syncUserOnJoin移到检查点1/2之间执行

回退DB持久化:
- DatabaseManager.java删除web_verified_at列定义
- WebManager.java isWebLoginVerified()回退为纯内存检查
- WebManager.java clearWebLoginVerified()回退为纯内存清除
- pollWebLoginRequests()验证成功后不再写入login.db

部署:
- JAR: 733300 bytes → SFTP ✅
2026-06-25 15:15:07 +08:00
youpaishidifu d47997294d v13: 安全加固 - PHP禁止自验证密码 + Java本地验证记录持久化
安全修复(严重隐患):
- PHP端: verifyWebPassword()函数体改为error(),禁止PHP直接验证密码
- Java端: pollWebLoginConfirmations()增加本地验证记录检查,PHP推送的登录确认必须有Java本地验证记录才允许自动登录
- Java端: 验证成功后写入login.db的web_verified_at字段(重启不丢失)
- Java端: isWebLoginVerified()增加login.db回查(内存没有时从DB恢复)
- Java端: clearWebLoginVerified()同时清除DB记录
- Java端: pollWebLoginConfirmations消费后立即清除验证记录(防重放)
2026-06-25 14:41:25 +08:00
youpaishidifu 6d569fed23 v12: PHP密码验证安全修复 + 任务间延迟6-14秒随机
安全修复:
- sync.php: 删除verify_web_password端点,禁止PHP自验证密码
- core.php: validateWebAccess大额交易密码验证改为检查web_login_verified(Java验证结果)
- 密码验证强制走web_login_request流程(Java端handleWebPasswordVerify)

锁库优化:
- 任务间随机延迟从10-12秒改为6-14秒(8秒变异范围)
- 增大随机性,避免周期性锁争用
2026-06-25 14:13:31 +08:00
youpaishidifu 6e24546a6c v11: SSL断路器防重复触发 + HTTP降级延长冷却 + 启动同步锁库修复
SSL断路器:
- 新增triggerCircuitBreaker()安全方法,并发请求不再重复触发
- HTTP降级也失败时立即延长冷却(CDN完全不可达场景)
- 基础冷却30秒→60秒(CF恢复通常1-5分钟)
- GET/POST/HTTP降级失败统一走triggerCircuitBreaker

启动锁库:
- 新增initialSyncComplete标志,注册/CDK/库存轮询器等待全量同步完成
- 避免启动阶段多个轮询器与全量同步并发请求PHP导致SQLite锁
2026-06-25 13:42:34 +08:00
youpaishidifu eb0b39d8b9 v10: SSL断路器指数退避 + 超时统一10秒 + 延迟增到10-12秒
- SSL断路器冷却从固定30秒改为指数退避: 30s→60s→120s→240s→300s(上限)
- 新增sslCircuitOpenCount跟踪连续断路次数,成功时重置
- 请求超时统一10秒(connectTimeout和request timeout一致)
- 任务间随机延迟从8-10秒增到10-12秒,进一步减少锁库
- HTTP降级成功也重置退避计数
2026-06-25 13:27:05 +08:00
youpaishidifu 10e148be5f v9: 修复pollAdminChanges 404 + 延迟增到8-10秒
- 修复 ack_admin_changes double URL bug(httpPost重复拼接webBaseUrl)
- 改用GET方式发送ack,避免POST Content-Type不匹配
- land_api.php 支持GET参数ids
- 所有任务间随机延迟从6-8秒增到8-10秒
- 目标:锁库降到0-1次/分钟
2026-06-25 13:05:41 +08:00
youpaishidifu 9599a66cc5 增强: 随机间隔从±8秒扩大到±10秒;任务间随机延迟从4-6秒增加到6-8秒;减少PHP端SQLite锁冲突 2026-06-25 12:46:45 +08:00
youpaishidifu c05c6d9512 修复: SSL降级触发条件优化-任何连接异常都计数;任务间随机延迟从2-4秒增加到4-6秒;增加SSL计数器在POST最终失败时 2026-06-25 12:21:25 +08:00
youpaishidifu 2a976710e9 增强: 随机间隔扩大到±8秒;所有同步任务间改为随机2-4秒延迟;拆分同步添加0-2秒随机延迟避免并发锁库 2026-06-25 12:07:48 +08:00
youpaishidifu c2a8385895 优化: 首次全量同步和周期同步任务间错开1500ms,避免PHP端SQLite数据库锁 2026-06-25 11:53:58 +08:00
youpaishidifu 3c71664284 修复: 404问题-在线玩家同步GET返回404时触发分批POST拆分(每人一批); 库存轮询增加DB锁错误检测; 随机间隔扩大到±5秒 2026-06-25 01:44:46 +08:00
youpaishidifu c9e2f71361 增强: 随机间隔扩大到±5秒减少DB锁冲突;库存轮询增加数据库锁错误检测 2026-06-25 01:19:47 +08:00
youpaishidifu 3c085e086d 优化: 全量同步任务间错开800ms执行,避免瞬间堆叠导致DB队列等待过久和HTTP 404 2026-06-25 00:49:31 +08:00
youpaishidifu 28a120fea0 修复: 补充rebuildHttpClient方法和initPlainHttpClient方法,实现SSL降级到HTTP功能;添加randomIntervalSeconds随机间隔定时器,避免并发SQL锁死 2026-06-25 00:19:46 +08:00
youpaishidifu dee6ab8eed feat: SSL连续失败3次自动降级到HTTP + 编译部署 2026-06-24 23:06:03 +08:00
youpaishidifu 5273220716 修复:poll_admin_changes返回JSON包含Unicode转义序列导致解析404 2026-06-24 21:28:42 +08:00
youpaishidifu e416372a41 修复:GUI效果管理回调子页面保持、PVP双端检查、传送安全位置、游戏模式管理员豁免 2026-06-24 20:33:35 +08:00
youpaishidifu bbf23aad31 fix: 领地系统多项修复 - 管理员TAG验证/和平模式/袭击模式命名/效果管理GUI/添加成员功能 2026-06-24 18:32:25 +08:00
youpaishidifu 7ae4f46f75 fix: 修复CLI效果管理点击返回回到首页问题,去除返回按钮中的clickEvent导致 2026-06-24 15:38:17 +08:00
youpaishidifu 4a74a0a77f feat: 新增效果管理功能 — CLI/GUI可视化操作 1.CLI效果管理菜单: 全清负面/禁止所有效果/单清列表/增益列表 2.CLI快捷指令: effectsclearall effectsdenyall effectsclearadd effectsclearremove effectsaddadd effectsaddremove 3.GUI效果管理: 管理领地菜单新增效果管理入口, 3个子菜单(GUI可视化操作) 2026-06-24 14:27:02 +08:00
youpaishidifu 9944fd5f16 Fix area protection: perm renames, DB save fix, perm_change sync, teleport command 2026-06-24 13:07:11 +08:00
youpaishidifu 3662466434 chore: 从main分支移除web文件夹(PHP代码归php分支管辖) 2026-06-24 11:17:18 +08:00
youpaishidifu 302268d0da fix: 领地系统4个bug修复
1. CLI用户权限管理: 添加shortKeyToDenyField映射修复键名不匹配
2. 移除用户: 修复大小写敏感导致的移除失败
3. 权限组反转: 修复togglePerm反馈消息语义(deny=true→已禁止)
4. GUI工具: BLAZE_ROD替代STICK
2026-06-24 11:08:55 +08:00