820 Commits
Author SHA1 Message Date
youpaishidifu 84285e5009 opwl改回独立目录OP白名单/(目录隔离,任意json都当配置;模板resources/OP白名单/opwl.json)
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m15s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-07 23:58:12 +08:00
youpaishidifu a39e26caf7 opwl接管原生OP名单:加载时导入原生OP,非法持有一律撤销+报警(新增非法持有报警信息模板,支持user/time变量中英文),改为单文件opwl.json
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m0s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 23:05:29 +08:00
youpaishidifu d19ecc5ce0 新增OP白名单功能(opwl):读OP白名单目录json授OP,读失败一次性卸载全部OP,15秒增量热重载,命令仅控台
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m12s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 22:09:01 +08:00
youpaishidifu e745010220 修复pushShopCatalog对账后回退本地hash翻案:对账needPush=false直接回,不再整包推975项
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m1s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 18:02:31 +08:00
youpaishidifu a580fbbcb7 领地/商城目录接入alignGate差集对账,重启不再整包推,多退少补
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m18s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 17:32:15 +08:00
youpaishidifu dfdb951c8a 修复bans收回死循环:已过期临时封禁不再拉回Bukkit,避免每轮extra=1无限收回1条
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m8s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 16:21:40 +08:00
youpaishidifu f3a987dde9 修复setField对null写成字面量null导致credentials每轮恒定补推1:改setNull并启动自愈清理存量脏数据
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m17s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
2026-10-07 13:47:56 +08:00
youpaishidifu ed558517ba 修复credentials对账恒changed全量:凭证行补指纹键password_salt/temp_password,推送改对账差集不再整包硬推611条
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m56s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-07 12:07:25 +08:00
youpaishidifu 9f8a881d62 IP同步改为只推对账差集,删除全量硬推;补上users/bonds/shop三处补推守卫
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m15s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
- syncAllPlayerIps 去掉 forceFullIpPush:以前只要对账发现缺口就跳过 ipCache
  过滤、把本机全部IP整包推给PHP(生产实测 missing=0/changed=110 却推了609条),
  现在只推 alignGate 裁决出的 pushKeys(missing + 本机改过的 changed);
  对账没做成时本轮不推不收,绝不回退全量硬推。
- 日志改为「对账补推 N/M 个玩家IP(PHP 侧共 X 条)」,与实际发送量一致。
- shop/bonds/users 三处补上 alignNeedsPush 守卫:PHP 库被清空但本地数据没变时,
  本地 hash 会永久短路补推(与 10-06 修过的 admins/providers/bans/credentials 同款 bug)。
2026-10-07 11:17:09 +08:00
youpaishidifu d0d3b48000 临时屏蔽一下没做完的功能和配置文件
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m1s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-07 00:21:41 +08:00
youpaishidifu d8d8c18d53 修复配置类对账推送在404后永久卡死:5处hash改为推送成功后才提交
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m11s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
灾备演练(删PHP库+404+空白库重建)实测发现:
- admins/providers/credentials/bans/lands 5处 lastXxxHash 在HTTP推送前就提交
- 404期间唯一一次推送失败,hash却已写脏
- 之后 alignGate 每轮判「PHP缺N条要补推」,全被本地hash短路挡回
- 表现为日志反复打「补推N」却永远发不出去,PHP端表永久0行
  (web_plugin_admins/web_service_providers/weblogin_credentials/web_player_bans/web_area_lands)

修复:
1. 对账明确 needPush 时本地hash不得拦截(alignNeedsPush 绕过短路)
2. hash 一律改为 PHP 明确返回 success=true 后才提交
   与 syncUserRegistrations(2026-10-04)/syncShopData/syncBonds 的既有规矩对齐

交易流水多退少补在本次演练中表现正常:空白库→443/443全量补推成功
2026-10-06 23:00:27 +08:00
youpaishidifu c118e8e708 周期对账通过时也打印两边笔数,让对齐结论随时可验证
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m17s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-06 21:50:01 +08:00
youpaishidifu 07d0a5a192 交易流水补运行期周期对账,修复PHP库被重载清空后的假对齐
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m34s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-06 21:25:13 +08:00
youpaishidifu 9c2d5db41e 充值回执对账排进首次全量同步队列:无人在线时启动即点差集,不再只依赖玩家上线的周期批次
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m0s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-06 19:58:08 +08:00
youpaishidifu 64cb501321 充值回执一式两份对账:Java持web_tx_receipts镜像,随全量同步多退少补热回补PHP缺失流水
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m17s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-06 18:18:00 +08:00
youpaishidifu e5e460ce20 WebManager:超时日志节流降噪、连接4秒判死换连接重试、对账无答复一律不推不收、system/sync token软硬双到期异步续期
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m23s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-06 15:14:29 +08:00
youpaishidifu 19aecebc90 WebManager:修正DB队列硬超时线程标记错位,对账硬超时不回退全量硬推,加队列节奏与商品目录hash静默
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m6s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-06 13:12:15 +08:00
youpaishidifu 53cadf2282 WebManager:DB队列HTTP改10秒硬超时并移交旁路线程放行,任务加10秒预算防堵门
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m5s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-06 12:06:31 +08:00
youpaishidifu ec4bd415d2 双向对账改造:全量/周期同步与PHP指纹对账多退少补,null整数列归一防每轮changed
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-05 22:29:50 +08:00
youpaishidifu 6a2bfaf1ff 修复开关关闭时插件设置.txt热重载永不触发:start()不再因未启用而跳过启动合并定时器
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m11s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-05 18:58:23 +08:00
youpaishidifu 5d89ff54c9 修复交易推流死等:批调度毫秒误当tick(15秒被排成12.5分钟);改单次15秒必答复三态日志;轮次卡死自愈不需手动reload;双向对账多退少补(PHP缺的补推、PHP多的收回导入本地)
Check Source / check (push) Successful in 1s
Auto Release / build (push) Successful in 2m10s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-05 17:46:34 +08:00
youpaishidifu ebb17d69bf 交易推流加15秒回执窗口:收到PHP回执才推下一批,未收到则等15秒重试同一批(带20次上限),批调度纳入锁库退避
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m30s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-05 17:00:25 +08:00
youpaishidifu 478aa97ca8 修复两处同步缺陷:parseJson漏嵌套对象分支致流水对齐恒判PHP无响应;热重载/reload后排全量同步
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m36s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-05 15:44:02 +08:00
youpaishidifu 88db479ede 交易流水同步改为节流+两边对账:开服先点验,一致则跳过补推;逐批只补PHP缺失序列号;推进异步化不阻塞DB队列
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m13s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-04 23:52:17 +08:00
youpaishidifu 2822ba9c9a 负面效果从增益里拆出独立子菜单 + 药水成就防作弊
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m15s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
用户要求:增益只归纳增益,负面另开子菜单;移除指定效果那套不动。
插件给的效果必须打标记,靠插件凑齐原版药水成就的立刻撤销。

效果拆分
- AreaConfig 新增 badEffects 字段,area_lands 加 bad_effects 列(73 列)
- GUI:效果管理主菜单 11~15 连排五格(清负面/禁效果/单清/增益/负面),
  新增 subPage 4 负面效果列表;选择页按 clear/give/bad 分别只列对应档位
- CLI:新增 effectsmgmt 6/7 子页与 effectsbadadd/effectsbadremove/effectsbadedit
  指令、editBad_ 回写分支,与 GUI 同一份效果口径
- 施加点全部合流 giveRegionEffects/applyEffectList,并修正 handleEnter
  的先清后给顺序(否则负面配置会被 clearBadEffects 清掉)
- 数量上限改为增益+负面合计(用户组 max_effects 是同一份预算)

成就防作弊
- 新增 AchievementEffectGuard:接管 nether/all_potions(17种) 与
  nether/all_effects(34种),清单抄自服务端 advancement json
- EntityPotionEffectEvent(Cause.PLUGIN) + PlayerAdvancementCriterionGrantEvent
  双钩子,revokeCriteria 撤销,进服复核一次,离场清标记
2026-10-04 22:57:14 +08:00
youpaishidifu 0c18137401 修正药效生存上限表:村庄英雄5级、挖掘疲劳3级、伤害吸收4级、不祥类5级
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-04 20:32:03 +08:00
youpaishidifu b64e7e336c 修正药效等级上限口径:按各效果的生存可获取上限封顶
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m15s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
用户纠正:上一版把 /effect 命令的作弊上限(amplifier 255 = 强度 256)
当成了「原版最大上限」,口径错了。真实含义是**生存模式下正常探索、
合成、建造能拿到的最大等级**:
  · 抗性提升 —— 信标最高 2 级(4级金字塔选「提升至II」)
  · 海豚的恩惠 —— 只有潮涌能量块一个来源,最高 1 级(截图里的 Lv255 即此)
所以「统一按 256 封顶」仍然等于没封。

改为按效果逐个封顶,两层上限同时生效:
  1) 生存可获取上限(硬顶):getSurvivalMaxLevel() 逐项查表
     · 可升 II 的:迅捷/急迫/抗性提升/跳跃提升/力量(信标)、
       瞬间治疗/瞬间伤害/缓慢/挖掘疲劳/中毒/生命恢复(发光石粉)
     · 生存单一来源恒为 1:海豚的恩惠、潮涌能量、抗火、水下呼吸、
       隐身、夜视、缓降、虚弱、反胃、饥饿、凋零、失明、黑暗、
       发光、飘浮、各类事件效果等
     · 生存无来源:生命提升/伤害吸收/饱和/幸运/霉运 → 1
     · 未知效果兜底 1(宁可少给,绝不超发)
  2) 用户组配置 max_effect_level(软顶):组里配多少就是多少
  最终 cap = min(两者),getEffectLevelCap() 统一出口

表项与 paper-api 26.1.2 的 39 个 PotionEffectType 完全对齐(已核对无遗漏)。
注意:生命恢复取 2 而非旧版附魔金苹果的 V —— 那是 1.6.1 前的历史数据,
      附魔金苹果早已改为给伤害吸收。

应用点全部改走 clampEffectLevel(raw, effectName, owner)(5 处):
首次给予、热更新、handleEnter、applyEffects、PHP 推送字段。
CLI 添加/编辑的报错信息改为报该效果的真实上限,并说明生存上限是多少。

PHP 侧 land_api.php 同步加入同一张表(134 个 case 标签与 Java 端
逐项对账一致),web 端写入时即按效果封顶,不再等 Java 兜底。
2026-10-04 19:56:45 +08:00
youpaishidifu 6f9202859d 修复领地增益药效等级无上限,新增用户组药效等级上限配置
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m32s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
问题:领地增益效果的等级完全没校验,管理员配了 255 级就会原样
生效(截图里出现的 Lv255 即源于此)。原版 /effect 的 amplifier 硬
上限是 255(对应药效强度 1~256),插件此前允许写入并施加远超原版
范围的等级。

修复(2026-10-04 任务4):
- UserGroupManager 新增 maxEffectLevel 字段,默认 256
  · 常量 DEFAULT_MAX_EFFECT_LEVEL = 256 集中定义原版上限
  · user_group_config 建表补列 + ALTER 迁移(老库自动升级)
  · loadGroupConfigs 读取、saveGroupConfigToDB 加为第 14 列
  · 新增 getPlayerMaxEffectLevel:普通玩家走原版 256,用户组按组配置
- AreaProtection 新增 getMaxGiveEffectLevel / clampGiveEffectLevel,
  在全部 4 个应用点封顶:首次给予(applyRegionEffects)、热更新、
  handleEnter、applyEffects;另在 PHP 字段推送(applyFieldToAreaConfig)
  与 CLI 添加/编辑两处入口按同一上限做输入校验与提示
- WebManager 用户组同步双向补 max_effect_level(推 PHP + 回读)

规则:普通玩家(未加入任何用户组)严格按原版 256 封顶,严禁超限;
用户组玩家按组配置封顶,组里配多少就是多少,但任何情况下都不得
突破原版 256。原先散落各处的硬编码 255 已统一为该口径。
2026-10-04 19:25:39 +08:00
youpaishidifu f2808a5923 修复 denyMove 对访客/路人失效:GUI显示已禁用但实际畅通无阻
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m20s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
现象:领地访客授权页显示「移动 已禁用」,玩家在领地内却能自由走动。

根因:getEffectiveDeny 是所有 deny* 权限的共用入口,其第3步
    if (level == PermissionLevel.VISITOR) return false;
  对全部权限无条件豁免。denyMove 走同一入口,访客在此被放行,
  永远到不了第4步读 ac.denyMove。而 GUI(AreaGUIManager:586)
  显示读的正是 land.denyMove=true —— 显示与实际判定脱节。

判定链(修复前,访客):
  第1步 非ADMIN/OWNER → 不豁免
  第2步 playerPerms 无 denyMove 键 → containsKey=false,不命中
  第3步 level==VISITOR → return false ← 绕过点
  第4步 getLandDefaultDeny(ac,"denyMove")  永远到不了

修复(按用户决策:仅 denyMove 改,其余权限保持现状):
  第3步增加 denyMove 特例 —— 访客若无 per-player 显式 denyMove,
  不再豁免,继续落到第4步按领地默认 denyMove 判定。
  level==null(纯路人)本就落在第4步,行为正确,未改动。

顺带恢复 logDenyExempt 诊断输出(此前整段被注释,
是当初现场无法定位该问题的直接原因)。

验证:离线回归测试 13/13 通过,覆盖 ADMIN/OWNER 豁免、
per-player 显式放行与禁止、访客回落、路人回落、白名单访客,
并断言 denyBlockBreak/denyContainer/denyBlockPlace/denyWax
的访客豁免语义未被破坏。mvn -o clean package 编译通过。
2026-10-04 18:47:05 +08:00
youpaishidifu 494ab22227 修复首次全量同步的三处根因(假成功+流水永久丢失+同步过慢)
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 1m58s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
【BUG-1 假成功(核心)】hash 在请求发出前就提交,导致同步失败后永不重试
  位置:syncUserRegistrations / syncBondBalances / syncShopData
  现象:日志打印"已同步 3人",PHP 端 users 表实测 0 条
  原因:lastXxxHash = currentHash 写在 httpPostWithToken 之前,密钥错/网络断/500
        时 hash 已被写脏,这份数据再也不会重推
  修复:hash 仅在 PHP 明确返回 success=true 后提交;失败不提交,下轮周期自动重试

【BUG-2 历史流水永久丢失(不可恢复)】
  实测:bond.db 419 笔(最早 2026-05-21),web_sync.db 水位线已推到 2026-10-04
        17:18:02,419 笔全部 <= 水位线,晚于水位 0 笔;PHP 端 game_transactions 仅 3 笔
  原因:水位线语义是"我以为 PHP 已经有了"。Web 端被清空(全新部署/隔离目录重置/
        低版本插件首升 PHP)后两者失联且无法自愈,只推了水位线之后的 1 笔
  修复:
   1) 新增 resetTxWatermarkForFullSync(),首次全量同步前强制归零水位线重推全部历史
   2) 新增 pushTxBatch(),每批最多 300 笔(TX_SYNC_BATCH_SIZE),失败即中止且
      不推进水位线 → 下轮从同一位置重试,不丢数据
   3) 分批后打"第 N/M 批 已同步 X 笔"与总计日志

【BUG-3 全量同步串行 sleep 过长 + 无进度可见】
  原因:12 项任务之间各 sleep 6~14 秒,总计 72~168 秒串行阻塞(用户"等 3 分钟没数据")
  修复:间隔缩短为 1.5~3.5 秒;开头判 isEnabled() 跳过;开头打地址+密钥长度;
       每项提交打一行"已排队";结尾打 12 项汇总与耗时

兼容性:纯 CRLF 行尾已保持(0 裸 LF);mvn -o clean package 编译通过
2026-10-04 17:53:59 +08:00
youpaishidifu ba613ff953 修复:Web通信关闭后仍在出网(热重载暴露的可见性 bug)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m4s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
现象(用户日志实证):
  16:41:36 配置已热重载: 启用=false 密钥长度=30 [开关已关闭]
  16:41:45 syncOnlinePlayers: enabled=false, 跳过     ← 有守卫,正常
  16:42:12 推送游戏内商品目录 ... 已同步 975 项         ← ★ 无守卫,仍在出网
  16:42:46 服务商数据变更,已同步: 1人                 ← ★ 无守卫,仍在出网

根因两层:
1) 约 22 个同步方法(pushShopCatalog/syncServiceProviders/syncPermissions/
   pullShopStock/pullShopPrices/pullBondChanges 等)压根没有 !enabled 守卫;
2) 即使有守卫也拦不住 —— 任务是在「开关还是 true 时」就已 submitDbTask 入队的,
   db-worker 单线程排队轮到它时开关早已关闭,方法开头的守卫已经执行完了。

修法:出网最后一公里统一加闸,三道防线
1) 7 个 HTTP 收口方法开头加 isEnabled() 闸。doGet 是 46 处调用的唯一总出口,
   一处改动覆盖全部 GET 路径,零遗漏;两个 HTTP 降级方法一并覆盖。
2) submitDbTask / submitWebTask 入队前拦一道(省掉入队开销)。
3) startDbWorker 执行 task.run() 之前再查一次(治标兜底,拦存量任务),
   静默 continue 不打 WARN —— 关闭后每轮几十个任务全打日志会刷爆控制台,
   真正的开关变化已由 hotReloadIfChanged 打了一行「[开关已关闭]」,信息不丢。
另加 noteWebDisabledOnce():关闭状态下每 60 秒一条 INFO,说明「为什么没发」。

验证:mvn package 零错误;离线单测 18/18(闸的位置与结构均从真实源码抽取),
含端到端复现「关闭前入队、关闭后执行」这一用户日志场景。
2026-10-04 17:01:21 +08:00
youpaishidifu 932623ed88 Web通信配置热重载+密钥自愈:不再依赖 reload
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m6s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
背景:密钥错配导致 708 次 403。根因是运维改了服务器上的 插件设置.txt
却没重启也没 reload,插件一直握着旧密钥死循环重试。

改动(WebManager.java,+233/-3):
1. hotReloadIfChanged():5 个合并定时器每轮开头比对 插件设置.txt 指纹
   (lastModified+length),变了就热重载「启用开关/地址/密钥/三个数值项」。
   放在 enabled 守卫【之前】,开关关着时也能感知「改回 true」。
   3 秒节流 + 指纹闸,文件没动时连磁盘都不读。
2. 密钥自愈:doGet / doPostWithoutFallback / doPostWithSslFallback /
   doPostWithRetry 四个出网收口接入 withSecretAutoHeal(),
   命中「密钥验证失败/认证失败/invalid_secret」时重读配置的密钥并重试一次。
   30 秒冷却防刷日志;文件里就是当前值则不自愈(那是 PHP 侧问题,不死循环)。
3. isEnabled() 改为实时读文件,改开关下一毫秒生效。
4. reloadWebConfig() 保留为手动方式,强制清文件指纹确保真正重新解析。
5. 日志不再打印明文密钥,只打长度。

验证:mvn package 零错误;离线单测 32/32(判定串与解析规则均从源码抽取,
非另写等价实现),含端到端自愈、PHP 真拒不死循环、开关自动恢复、指纹节流。
2026-10-04 16:32:07 +08:00
youpaishidifu dc5633c740 新增4项功能:tempban参数可选+债券冻结时长+领地增益上限+用户组max_effects同步
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m52s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-04 14:48:26 +08:00
youpaishidifu 24897c2b97 命令语法报错补充标准示例与一句话用法,示例仅对控制台与OP玩家展示
Check Source / check (push) Successful in 1s
Auto Release / build (push) Successful in 2m5s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-04 13:06:22 +08:00
youpaishidifu ab0f15f248 新增命令参数不全/语法错误的中文友好报错(Brigadier 重解析 + 出错指针 + 下一步可填提示)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m39s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-04 12:43:38 +08:00
youpaishidifu 77635b8db2 保留原生JSON解析:控制台未命中分流增加JSON快速通道,与&色码写法并存
Check Source / check (push) Successful in 1s
Auto Release / build (push) Successful in 2m9s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
2026-10-04 11:40:36 +08:00
youpaishidifu 8486adb53c 修复:控制台未命中原生指令被当聊天全服广播导致刷屏
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m11s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-04 11:19:07 +08:00
youpaishidifu c07c97b7ea conmsg: clear 作为保留子参数,恢复默认署名(不再当名字设置出去)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m22s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 23:26:51 +08:00
youpaishidifu c17c606ff2 转发聊天: 正文支持JSON组件+&色码+换行并存, 署名仅&色码且强制单行
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m39s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 23:06:28 +08:00
youpaishidifu f8756a24df 无感切换: 新增 conmsg 控制台署名 + 按权限分层提示 + 找不到时温和告知
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m0s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 22:17:37 +08:00
youpaishidifu be8d0cb615 无感切换分流: 玩家未命中出相似建议, 控制台未命中转发聊天
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m58s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 21:31:49 +08:00
youpaishidifu 2e0fdea5be 无感切换修复控制台接管 + 压制方式改为 message(null)
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 1m47s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 20:48:01 +08:00
youpaishidifu 21e23bbc89 无感切换限定为 sdf1 系列 4 插件,未命中时回指令清单
Check Source / check (push) Successful in 1s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
按用户口径收窄管辖范围:
- 只接管 CY_beibao / sdf1 / Sdf1_game / Sdf1_login 四个插件的指令
- 命中我们 4 插件的指令(大小写不敏感)-> 直接执行
- 命中别人插件或原版指令 -> 完全不干预,不破坏别人的判断链
- 确实啥都没命中 -> 压制原生 unknown,把我们 4 插件的指令清单分组回给玩家手动执行
- 控制台不接管(运维输错保留原声报错)

技术要点(Paper 26.2 实测签名):
- 拦截点 UnknownCommandEvent.setMessage(String)(父类非 Cancellable)
- 归属判定靠 PluginCommand.getPlugin(),名单 OWN_PLUGIN_NAMES
- 遍历用 CommandMap.getKnownCommands() 返回 Map<String,Command>
2026-10-03 19:39:05 +08:00
youpaishidifu 1e15bfb523 无感切换改用 Paper 26.x 正确拦截点 + 编译目标切到 26.2
Check Source / check (push) Successful in 1s
Auto Release / build (push) Successful in 1m56s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
根因:Paper 26.x 命令分发改走 Brigadier,PlayerCommandPreprocessEvent
已 @Deprecated 且只在 ServerGamePacketListenerImpl 作为遗留兼容路径保留,
实测事件从未被调用(日志一行都打不出来),改优先级无效。

改动:
- pom.xml: paper-api 1.21.4-R0.1-SNAPSHOT -> 26.2.build.129-stable(与运行时一致)
- 删除失效的 onSeamlessCommandSwitch / getCommandMapSafe
- 新增 UnknownCommandEvent 监听:setMessage("") 压制原生 unknown
- 新增 dispatchCaseInsensitive:输入为大写时小写复核并补执行
- forwardAsChat 改用 26.2 真实签名 AsyncChatEvent + AbstractChatEvent.message()/viewers()
2026-10-03 19:01:53 +08:00
youpaishidifu a1007a19f9 无感切换: 使用 Paper API 获取 CommandMap + 诊断日志
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 1m36s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
- getCommandMapSafe 优先使用 Bukkit.getCommandMap() Paper API
- 添加详细诊断日志(事件触发、label、hit 结果)
- 便于排查大写指令返回 unknown 问题
2026-10-03 18:07:10 +08:00
youpaishidifu dd4bb7baba 修复无感切换优先级 + 改判系统兼容反向操作
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m14s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
- onSeamlessCommandSwitch: MONITOR -> LOWEST(在服务端处理命令前拦截)
- doTempBan: 新增反向改判(永久封禁可被 tempban 改判有期徒刑)
2026-10-03 16:49:19 +08:00
youpaishidifu 31c7077a64 屏蔽除了readme.md以外的md文件
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m59s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 16:12:00 +08:00
youpaishidifu 9656ff4e8f 再次删除脚本部署的凭据文件
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m46s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 15:56:02 +08:00
youpaishidifu 14cc943068 屏蔽部署所需要的凭据文件
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m5s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
2026-10-03 15:54:07 +08:00
youpaishidifu 96aef279cf 批次B3异步化 + 任务48改判系统/注册校验 + 任务50无感切换
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m6s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
批次B3(混合型定时器拆分):
- Main: quest PlayTime 计时器 DB 下沉异步
- Main: 工单自动处理定时器改 runTaskTimerAsynchronously
- TicketManager: 新增 sync() 辅助,autoProcessCompleted/settleTicket/processDeleteAccount Bukkit 操作回主线程
- GarbageManager: doCleanup 两段式(DB删旧异步+收集回主线程),collectItems 落库异步
- SnManager: startAutoSweepTask 分片(每 tick 只清点 1 人)
- AreaProtection: sweepBannedOwnerLands 两阶段(Bukkit主线程判定 + DB/HTTP异步删除)

任务48(改判系统 + 注册校验):
- DatabaseManager: 新增 userExistsIgnoreCase(COLLATE NOCASE)
- Main: 新增 ensureRegistered 辅助,doTempBan/doBanIp 入口加注册校验
- Main: 新增 guardVanillaBan 守卫(HIGH优先级双事件),未注册拒绝+临时封禁改判永久

任务50(无感切换):
- Main: 新增 onSeamlessCommandSwitch(MONITOR),命中指令直接执行/大小写不敏感/未命中转公屏
- Main: 新增 getCommandMapSafe + forwardAsChat
2026-10-03 15:36:31 +08:00