youpaishidifu
|
b21835d00a
|
移除废弃的LEGACY_BREWING_STAND材料枚举 + 清理AreaCLIManager未使用的import
|
2026-06-28 11:52:00 +08:00 |
|
youpaishidifu
|
e9eea049d9
|
feat: 领地创建确认交互+用户组GUI成员管理+领地限制DB兜底+PHP统计修复
- 创建领地改为预览模式:显示面积/单价/费用,点击确认按钮直接创建
- 新增confirm_create命令处理交互式创建
- 用户组GUI面板:左键打开成员管理,右键删除组
- 新增用户组成员管理面板:显示成员列表、添加在线玩家、移除成员
- 新增openGroupAddPlayerPanel:在线玩家选择面板
- 领地限制增加DB级别兜底检查,防止内存过期导致限制失效
- 创建后立即areas.put同步内存
- UserGroupManager新增getGroupMembers()公开方法
- PHP adminGetStatsEx: catch(Exception)改为catch(\Throwable),修复PHP8兼容
- GUIManager: BiomeScanTask修正为Main类型
|
2026-06-28 11:45:17 +08:00 |
|
youpaishidifu
|
2dfdad3a81
|
fix: GUIManager匿名BukkitRunnable改为命名静态内部类,修复Paper 26 ClassLoader兼容性
|
2026-06-28 11:03:56 +08:00 |
|
youpaishidifu
|
e23b2df365
|
fix: 用户组JSON数组解析去错前导花括号导致解析失败
|
2026-06-28 10:54:52 +08:00 |
|
youpaishidifu
|
4105501ec6
|
fix: 用户组同步修复+CLI面板重构+调试日志增强
- pullUserGroupsFromPHP: 错误日志从fine升级到warning,添加raw response输出
- parseGroupJson: 新增decodeJsonUnicode()解码\uXXXX转义(如\u00a7→§)
- showGroupListPanel: 提取可复用方法,groupset/groupdelconfig/sync后自动重打印面板
- 每个用户组显示[编辑][删除]可点击操作入口
- sync.php handleListUserGroups添加JSON_UNESCAPED_UNICODE
|
2026-06-28 10:32:21 +08:00 |
|
youpaishidifu
|
b26f979924
|
fix: 用户组PHP→Java拉取JSON解析bug + owner_change重复打印
1. pullUserGroupsFromPHP: 数组结束查找逻辑修复
- 旧代码用[]计数找数组边界,但去掉开头[后内容是{},遇到]时depth=-1永远不匹配
- 改为用{}计数+objDepth==0时匹配],正确解析[{...},{...}]格式
2. setLandOwnerFromWeb: 幂等检查
- 如果所有者已相同(equalsIgnoreCase),跳过DB更新和日志打印
- 防止ack失败后同一条owner_change重复打印
3. processedChangeIds清理优化
- 超500时不再粗暴清空全部,先移除已过游标的旧ID(id < lastPollAdminChangesId)
- 只在清理后仍然过大时才全部清空
4. pullUserGroupsFromPHP: 增加调试日志
- 空响应/success!=true/无groups数组/解析失败都记录fine级别日志
|
2026-06-28 09:57:52 +08:00 |
|
youpaishidifu
|
06f8bd68cd
|
fix: pullUserGroupsFromPHP添加secret认证参数
|
2026-06-28 00:49:51 +08:00 |
|
youpaishidifu
|
6d0c3a820a
|
fix: 用户组PHP↔Java双向同步 + CLI/GUI管理入口修复
1. WebManager新增pullUserGroupsFromPHP():从PHP拉取用户组配置到Java本地
- 简单JSON解析(无Gson依赖),支持嵌套括号解析
- group_change变更处理改为调用pullUserGroupsFromPHP而非仅reload本地DB
2. CLI grouplist:打开管理面板而非仅打印列表,空列表时显示创建说明
- 新增groupset sync命令:手动从PHP拉取用户组
- 管理面板显示组数量、价格、上限等完整信息
3. GUI用户组管理:改为打开真正的GUI面板
- 显示所有用户组(物品展示),支持右键删除
- 空状态显示创建说明
- 删除操作同时通知PHP同步
|
2026-06-28 00:44:56 +08:00 |
|
youpaishidifu
|
ae018f57e5
|
fix: CLI/GUI交互优化 + 用户组PHP双向同步
1. CLI用户组列表:空列表时显示可点击创建链接,有列表时也显示创建入口
2. CLI公共建筑列表:每项显示可点击[传送到此]按钮,直接传送
3. GUI公共设施传送:改为打开GUI面板,点击建筑物品直接传送(非执行命令)
4. GUI管理员面板:新增用户组管理入口(slot31),显示组数量
5. Java pollAdminChanges:新增group_change类型处理,PHP变更后自动重载用户组
6. AreaProtection:补全Adventure API imports
|
2026-06-28 00:15:44 +08:00 |
|
youpaishidifu
|
8ef4744cbd
|
fix: 清理旧版资源包代码+CLI/GUI补全用户组和公共设施入口
1. UserGroupManager: 移除旧版txt文件加载/解析、过期检查、displayEmoji/permanent/durationMinutes
2. CLI主菜单: 新增公共设施列表/传送入口、管理员用户组管理入口
3. GUI主菜单: 新增公共设施传送按钮(slot41)
4. CLI权限列表: 新增公共建筑设施切换项
5. GUI权限列表: 新增公共建筑设施切换项
6. WebManager同步: 移除displayEmoji字段
|
2026-06-27 23:37:49 +08:00 |
|
youpaishidifu
|
282930bfe6
|
feat: 用户组系统重构 - 领地创建价格/上限/默认权限差异化
- 重构UserGroupManager: 废弃资源包功能,新增领地相关字段
- land_price_per_sqm: 每㎡创建价格(-1=全局)
- max_lands: 每人最大领地数(-1=全局)
- default_perms: 默认deny_*权限JSON
- 领地创建时自动读取用户组专属价格和上限
- CLI命令: grouplist/groupset/groupadd/groupdel/groupdelconfig
- syncLandData新增用户组同步到PHP
- PHP后端: list_user_groups/get_user_group/update_user_group等API
- DB: usergroup.db表结构自动迁移
|
2026-06-27 23:04:29 +08:00 |
|
youpaishidifu
|
09a4b1d869
|
feat: 和平模式攻击免疫+公共建筑设施+syncLandData静默优化
1. 和平模式: 敌对生物(含投射物)对玩家攻击无效
2. 和平白名单: 保护期内贴标立即确认+取消清理
3. 公共建筑: /protect public <领地>设为公共, /protect listpublic列出, /protect tpb传送到访
4. 公共建筑自动授予: 访客获得攻击敌对生物权限(覆盖denyMobAttack)
5. syncLandData: 去掉Timer D强制hash重置, 减少冗余日志(fine级别)
|
2026-06-27 22:43:02 +08:00 |
|
youpaishidifu
|
a7ff29cdc3
|
fix: syncLandData去掉强制hash重置+减少冗余日志
|
2026-06-27 22:21:56 +08:00 |
|
youpaishidifu
|
6c738d484f
|
fix: pollAdminChanges去重+ack修复,防止owner_change重复打印
|
2026-06-27 22:03:25 +08:00 |
|
youpaishidifu
|
a8005e6666
|
修复领地管理员权限bug:getPermissionLevel增加per-land admin检查
- getPermissionLevel新增isLandAdmin检查(DB role='admin')
- 优先级:全局管理员 > 所有者 > 领地管理员 > 访客
- 解决通过/protect setadmin设置的管理员被当作VISITOR处理的问题
- 管理员身份现在正确跳过所有per-player deny权限检查
|
2026-06-27 21:23:16 +08:00 |
|
youpaishidifu
|
8c06b48989
|
修复配置值前导零bug:updateAreaConfig去除前导0
- Integer.parseInt去前导零:01→1,防止静默失败
|
2026-06-27 20:14:26 +08:00 |
|
youpaishidifu
|
d0c4f45928
|
修复PHP→Java配置同步:双向同步全链路修复
1. PHP handleUpdateConfig 写入 web_admin_changes 变更队列
2. Java pollAdminChanges 新增 config_change 处理,调用 setAreaConfigValue
3. Timer A 新增 pollAdminChanges 轮询(永不暂停),确保全员离线也能拉取PHP变更
4. 双向同步验证:Java→PHP(Timer D) ✅ / PHP→Java(Timer A) ✅
|
2026-06-27 19:55:42 +08:00 |
|
youpaishidifu
|
7efa78dbf9
|
修复三个同步bug:配置即时同步+Timer D独立+债券余额即时推送
1. 配置同步:AreaProtection.updateAreaConfig()后立即触发requestImmediateLandSync()
2. Timer D独立:移除timersBCPaused检查,不再被全员离线暂停
3. Timer D不重复调度:玩家上线时不再重启Timer D(已独立运行)
4. syncLandData增加hash变化日志(便于排查同步问题)
5. 债券余额即时推送(上一轮已修复,本次重新编译)
|
2026-06-27 19:39:03 +08:00 |
|
youpaishidifu
|
179f3a8355
|
修复Java CDK离线兑付bug:Timer A增加CDK回拉逻辑
- 在Timer A(永不暂停)中添加本地CDK回拉(doTransactionPollCheck)
- 在Timer A中添加远程CDK验证(pullWebCdkRequestsAndValidate)
- 解决全员离线时Timer B暂停导致PHP兑换的CDK无法到账
- 修复ChatInputManager ClassNotFoundException(重新编译即可)
|
2026-06-27 18:54:43 +08:00 |
|
youpaishidifu
|
f72875f0f7
|
添加Java→PHP成员权限同步 + getAllPermsForSync方法
1. WebManager新增syncPermissions()方法:读取area_land_permissions全表,推送到PHP的web_area_permissions
2. syncLandData()末尾调用syncPermissions(),每次领地同步时一并推送权限
3. AreaProtection新增getAllPermsForSync():JOIN area_lands获取领地名,返回所有成员权限数据
4. pollAdminChanges已支持perm_change/perm_clear/land_field_change三种回写
修复:玩家端权限页空白(web_area_permissions表永远为空)
|
2026-06-27 16:53:25 +08:00 |
|
youpaishidifu
|
f6d5540b16
|
修复领地同步:添加land_field_change处理 + effects格式兼容
1. WebManager.pollAdminChanges添加land_field_change处理
- PHP端玩家修改效果后,Java自动同步到本地DB
- 防止下次推送时覆盖玩家的修改
2. AreaProtection新增updateLandFieldFromWeb方法
- 支持白名单字段校验防SQL注入
- 更新DB后刷新内存缓存
|
2026-06-27 14:52:34 +08:00 |
|
youpaishidifu
|
3c3e902a6a
|
领地同步独立定时器D(15~25秒) + 移除批处理中的syncLandData
问题:syncLandData在doActiveSyncBatch第9个任务位,60-90秒批处理+6-8秒间隔=116-146秒延迟
修复:
1. 新增TIMER_D独立定时器,15~25秒随机±5秒,错峰避开A/B/C
2. calcStaggeredDelay支持4个定时器互锁(≥8秒间隔)
3. doActiveSyncBatch移除syncLandData(不再重复调用)
4. 玩家上线恢复时同步重启Timer D
|
2026-06-27 14:12:23 +08:00 |
|
youpaishidifu
|
b83202c08e
|
修复领地设置不同步:添加即时推送触发器
问题:游戏内修改领地设置后,PHP端超过180秒仍未同步
根因:syncLandData()在doActiveSyncBatch()第9个任务位,每任务间隔6-8秒,加上60-90秒批处理等待,总计116-146秒
修复:
1. WebManager新增requestImmediateLandSync()方法,防抖10秒
2. AreaProtection.saveAreaToDb()调用后立即触发PHP同步
3. deleteAreaFromDb()同样触发即时同步
4. 同步时强制清空hash确保一定推送
|
2026-06-27 13:32:05 +08:00 |
|
youpaishidifu
|
ce0052cdfb
|
修复:CLI设为管理员按钮全局置顶、返回成员列表按钮、PHP配置同步
|
2026-06-27 12:27:30 +08:00 |
|
youpaishidifu
|
ae2ae77a02
|
修复:权限切换静默失败(setPlayerPermJson仅UPDATE无行时失败)、管理员切换成员名大小写匹配
|
2026-06-27 12:03:02 +08:00 |
|
youpaishidifu
|
e8c83bba98
|
CLI权限面板:管理员目标走简化面板,领地主可切换管理员身份
|
2026-06-26 23:36:55 +08:00 |
|
youpaishidifu
|
642e587cdd
|
CLI权限面板:领地主可切换管理员身份,非领地主仅显示发光权限
|
2026-06-26 23:33:21 +08:00 |
|
youpaishidifu
|
ffd11a0b9c
|
修复:领地主可操作管理员权限(GUI/CLI)、农作物种植权限补充新作物
|
2026-06-26 23:19:53 +08:00 |
|
youpaishidifu
|
33afe26b46
|
修复管理员权限显示和领地配置同步问题
|
2026-06-26 22:55:23 +08:00 |
|
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 |
|