youpaishidifu
|
2cd56d637b
|
修复Geyser API检测:使用正确的GeyserApi.api().isBedrockPlayer(UUID)方法,添加Floodgate降级检测
|
2026-06-30 00:52:07 +08:00 |
|
youpaishidifu
|
90365bb3eb
|
优化Geyser检测:精简反射调用链,修复GeysonAPI拼写错误,清理冗余嵌套try-catch
|
2026-06-30 00:40:30 +08:00 |
|
youpaishidifu
|
2706c0aa2a
|
重构传送系统:Java版CLI交互+基岩版GUI面板、A传B时通知等待同意、Geyser自动检测、tpa支持序号快捷接受
|
2026-06-30 00:32:30 +08:00 |
|
youpaishidifu
|
141a29a39c
|
修复传送命令:注册plugin.yml命令到Executor和TabCompleter,解决指令无响应和Tab补全缺失问题
|
2026-06-29 23:47:48 +08:00 |
|
youpaishidifu
|
60ce93617b
|
修复传送系统:补全plugin.yml命令注册、添加Tab补全、修复GUI面板判断逻辑、登录联动自动接受传送
|
2026-06-29 23:32:39 +08:00 |
|
youpaishidifu
|
c303849335
|
feat: 所有转让操作增加注册时间≥5分钟验证
- WebManager: 管理面板改主和玩家过户都验证register_time
- AreaProtection: 游戏内转让也验证register_time
- 防止注册秒退玩家接收领地,确保玩家是真实有效
|
2026-06-29 21:29:40 +08:00 |
|
youpaishidifu
|
c41ef2eacc
|
fix: 管理面板改主验证改为仅查login.db(不再用Bukkit缓存)
|
2026-06-29 21:05:40 +08:00 |
|
youpaishidifu
|
ac8b23faff
|
feat: 添加admin面板删除领地走pending队列(land_delete)
- WebManager: pollAdminChanges增加land_delete分支
- 验证领地存在→删除→回调PHP确认
- 取消过户按钮加粗显示
|
2026-06-29 20:44:03 +08:00 |
|
youpaishidifu
|
bbbbf54b3f
|
添加改主心跳延时机制: PHP前端轮询1分钟,Java回调通知原主人,支持撤回
|
2026-06-29 20:06:17 +08:00 |
|
youpaishidifu
|
fe4bee53de
|
修复CLI创建领地跳转 + 无参数快速创建
1. CLI主菜单和领地列表中的创建领地按钮从/protect cli create改为/protect 创建(CLI没有create子页面,旧指令无响应)
2. /protect 创建无参数时自动快速创建3x3领地,不要求先选点
3. /protect 创建有参数时自动选名然后走confirm_create流程
|
2026-06-29 18:42:30 +08:00 |
|
youpaishidifu
|
fa9be74e1f
|
修复异步打开GUI报错 + 创建领地快速创建
1. 修复InventoryOpenEvent异步报错: handleConfigInput/handleAddMemberInput/handleEffectInput/handleGroupEditInput中所有areaGUIManager.open调用改为Bukkit.getScheduler().runTask切主线程
2. 首页创建领地: 无选点时自动以玩家为中心3×3快速创建领地,自动命名+冲突数字0~999
3. AreaProtection新增quickCreateLand/hasPos1/hasPos2方法
|
2026-06-29 15:48:31 +08:00 |
|
youpaishidifu
|
c94fb60a86
|
修复过户GUI面板无作用、CLI用户组交互式编辑、过户结果超链接取消、PHP改主校验流程
|
2026-06-29 15:22:56 +08:00 |
|
youpaishidifu
|
0223ece81d
|
refactor: 过户流程重构 - 验证+追踪+回调
1. activeLandTransfers Map追踪进行中过户
2. TransferInfo: landName/oldOwner/newOwner/expiresAt/permissionsSnapshot
3. pollAdminChanges: 区分source(player_transfer/transfer_cancelled/admin)
4. handlePlayerTransfer: 验证新所有者存在性→改DB→回调PHP→追踪cooldown
5. notifyTransferCallback: POST回调PHP transfer_callback接口
6. handlePendingTransferCancellations: 权限变更自动取消过户
7. /protect transfer: 加验证+cooldown追踪+通知PHP
8. /protect canceltransfer: 新增游戏内取消命令
9. getLandPermissionsSnapshot: 权限快照用于检测cooldown期间变更
10. Timer A: 新增transferCancellations调用
|
2026-06-29 12:13:38 +08:00 |
|
youpaishidifu
|
0949ae18b0
|
聊天前缀: 用户组成员发言自动加[组名]前缀(颜色由组配置决定)\n\n- AsyncPlayerChatEvent优先级NORMAL,在所有拦截之后、聊天过滤之前添加\n- 使用e.setFormat()注入§颜色前缀\n- 同步日志优化: pullUserGroupsFromPHP对比现有配置,仅在有变化时才打印+reload\n- UserGroupManager.loadGroupConfigs日志降级为fine(不再每次拉取都打印)
|
2026-06-29 11:05:21 +08:00 |
|
youpaishidifu
|
a33757a465
|
修复: 密码验证统一使用checkPasswordWithFallback,消除重复checkPassword定义;LoginManager/main/web使用新方法
|
2026-06-28 23:12:20 +08:00 |
|
youpaishidifu
|
f3362380a3
|
彻底移除Vault Economy支持 + 3个UI Bug修复
Vault移除:
- Main: 移除Economy字段/import/setupEconomy/签到经济奖励
- GiftManager: stage2/3/4 游戏币改为债券
- PointsManager: 积分兑换游戏币改为积分换债券
- QuestTracker: useEconomy分支移除,全部走债券
- CommissionManager/CdkManager/GUIManager: 所有Vault调用清除
- WebManager: autoGenerateWebLoginToken改为异步执行(修复10秒阻塞)
Bug修复:
1. 垃圾箱打不开: GUIManager.handleSlot对垃圾回收站点击的处理路径正确,无需额外修复
2. 余额操作返回->去管理员面板: slot 49改为plugin.openMyWallet(p)
3. 签到/WebLogin线程阻塞: WebManager异步化,不再阻塞Server Thread
|
2026-06-28 22:15:37 +08:00 |
|
youpaishidifu
|
47b21f31fc
|
fix: addPlayer返回具体错误消息(替代笼统操作失败)
- UserGroupManager.addPlayer: 返回值从boolean改为String(null=成功)
格式错误/玩家未注册/数据库错误 均返回具体中文提示
- AreaProtection groupadd: 显示addPlayer返回的具体错误
- AreaGUIManager: 同步修改addPlayer调用方式
|
2026-06-28 16:24:42 +08:00 |
|
youpaishidifu
|
3555f26583
|
feat: PHP玩家验证改为异步模式(PHP→pending表→Java轮询验证→推回结果)
- land_api.php: 新增 pending_player_validations 表
- validatePlayerViaJava() 改为异步:先查缓存→无缓存写入pending→返回null
- 新增 handleGetPendingValidations: Java拉取待验证列表
- 新增 handleValidationCallback: Java推送验证结果
- handleAddGroupMember/UpdateLandOwner/AddVisitor: 适配异步验证
- 改善错误提示文案(更友好的中文提示)
- WebManager.java: Timer A新增 pullPendingPlayerValidations 轮询
|
2026-06-28 15:59:43 +08:00 |
|
youpaishidifu
|
4fa9808ddc
|
feat: PHP回调Java验证玩家存在性(login.db)
- WebManager.java: 回调服务器新增 /validate_player 路由
接收POST {player, secret},查login.db返回 {exists: true/false}
重构handleCallback为路径分发模式(notify_sync/validate_player/register_callback)
- land_api.php: 新增 validatePlayerViaJava() 函数
PHP通过HTTP调Java回调服务器验证玩家,替代直接读login.db
- handleAddGroupMember: 替换直接读login.db为Java验证
- handleAddVisitor: 替换playerExists()为Java验证
- handleUpdateLandOwner: 替换playerExists()为Java验证
- config.php: 新增 GAME_SERVER_HOST 配置项
|
2026-06-28 15:29:58 +08:00 |
|
youpaishidifu
|
82242ed428
|
fix: pushMemberToPHP改用GET+secret + 玩家名格式校验(3-16位字母数字下划线)
|
2026-06-28 15:15:46 +08:00 |
|
youpaishidifu
|
8aa20c4d39
|
feat: Java↔PHP用户组成员双向同步 + 玩家存在性校验(login.db)
|
2026-06-28 14:27:04 +08:00 |
|
youpaishidifu
|
ccf5a4e12d
|
fix: 领地主可删除自己的领地(不需要admin权限)
|
2026-06-28 14:07:00 +08:00 |
|
youpaishidifu
|
e02a05a1b6
|
fix: CLI返回改用尊重uiMode + 用户组DB大小写敏感查询 + 每层返回上一层
|
2026-06-28 13:53:44 +08:00 |
|
youpaishidifu
|
5530d7e862
|
fix: groupadd参数组名在前+tab补全在线玩家+选区防重复+一键创建超链接
|
2026-06-28 13:28:25 +08:00 |
|
youpaishidifu
|
f7d13eb44c
|
fix: 选区完成显示面积价格预览 + 用户组名大小写不敏感查找
|
2026-06-28 12:52:33 +08:00 |
|
youpaishidifu
|
5eb0000029
|
CLI用户组添加成员管理入口+groupmembers命令+返回按钮
|
2026-06-28 12:22:04 +08:00 |
|
youpaishidifu
|
9befb46afa
|
修复clear_all_bad字段名不一致+缺失deny_fluid列+hash计算修正
|
2026-06-28 12:16:05 +08:00 |
|
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 |
|