youpaishidifu
|
6892c47599
|
第58批死循环修复: 自动互动触发前更新时间戳+失败也节流
Check Source / check (push) Successful in 2s
Auto Release / build (push) Successful in 2m9s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
根因: lastAiReplyTime初始0且只在请求成功时更新。
请求失败→时间戳不更新→每秒检查都判定超时→每秒触发→无限死循环。
修复: 触发前先更新时间戳(请求挂起/超时/失败都不会被下一秒重复触发);
handleRequestFailure也更新时间戳双保险。
|
2026-10-28 12:49:08 +08:00 |
|
youpaishidifu
|
2da1f2be9e
|
第58批防御: buildRequestUrl 已含chat/completions则绝不再补(防双重地址)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 1m48s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-28 12:41:02 +08:00 |
|
youpaishidifu
|
59bf992162
|
第58批修复: AI聊天URL解析 + 信誉积分9格GUI重构
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m34s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
AI聊天修复(AIChatManager):
- Bug1 内置供应商URL解析: findProviderUrl把含分组名的完整数组传进分组对象查找,
国产.get(非国产)永远null → 改为先取顶层分组,再在分组内逐层查
- Bug2 自定义供应商双重路径: models.json已设自动补齐=false,
代码仍无条件拼chat/completions → 加autoAppendCompletions开关,
内置供应商总是拼接,自定义受开关控制
- 提取buildRequestUrl公共方法,sendToModel和checkAutoChat共用
|
2026-10-28 12:33:48 +08:00 |
|
youpaishidifu
|
a0f84ee542
|
第58批功能1+2: 信誉积分管理系统 + AI聊天介入
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m31s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
信誉积分管理系统(CreditManager):
- /credits 上报好人好事/举报,每人初始化100积分
- 管理员审批后加分/扣分,低于阈值触发行为限制(可配置规则)
- PHP端可提交线索,admin审批接口
- GUI: 待审批/历史记录/限制规则
- DB: credit_records + credit_rules 表 + users.credit_score列
AI聊天介入(AIChatManager):
- 兼容openai协议,读models.json/供应商.json/提示词.txt配置
- @//模型名/前缀触发直接提问,私聊回复
- 空闲1-10分钟自动抓聊天互动,广播回复
- 黑名单拦截不浪费token
- 对话留档issue.json,HTTP异步请求不阻塞主线程
- 已解除.gitignore对openai资源的屏蔽
|
2026-10-28 10:49:12 +08:00 |
|
youpaishidifu
|
cf84426bf6
|
第57批续22: 子领地权限失效修复 + 封禁播报时间被篡改修复
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m27s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
1. 子领地权限失效: onPlayerMove区域检测循环遇首个匹配领地即break,
子领地完全包含在主领地内,可能命中主领地导致子领地deny_move不生效。
修复: 收集所有匹配领地选面积最小的(子领地自然优先)。
2. 子领地创建时不继承主领地权限: confirm_create和handleApproval路径
新增copyLandPermissions方法,子领地创建时继承主领地权限一次。
3. 封禁播报时间被篡改: WebManager对账收回封禁时,banList.addBan()
把created设为当前时间写入banned-players.json,setCreated只改内存。
Bukkit BanList无updateBan API,文件里保留的是收回时间。
修复: 新增persistBanCreatedToFile方法直接改写文件持久化真实创建时间。
|
2026-10-27 21:45:45 +08:00 |
|
youpaishidifu
|
9443a5cf1b
|
第57批续21续2: 子领地owner=创建者(付款人)修复退款退错人bug + 圈地棒身份判定静默
|
2026-10-27 20:32:31 +08:00 |
|
youpaishidifu
|
74db3d022b
|
第57批续21-fix: 修子领地创建不落库+确认创建按钮显隐
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 2s
修1(问题2根因): saveAreaToDb INSERT VALUES 占位符76->77。续21加parent_id列(第77列)
但VALUES漏加第77个?,JDBC setInt(77,..)越界→SQLException被catch吞掉→DB未写入
→但代码继续areas.put+提示成功→loadAllAreas清空内存重读DB→子领地消失→传送/cli菜单找不到。
补全77个占位符后DB正常写入,loadAllAreas后子领地保留,传送/cli菜单可见。
修2(问题1): 圈地棒选区智能识别按钮显隐——身份不合格或部分重叠时不展示确认创建按钮。
canCreateSub标志:身份不合格→false,部分重叠→false,合格→true;false时隐藏一键创建链接,
提示'因身份或范围限制,已隐藏确认创建按钮'。confirm_create命令层闸门不变(双保险)。
|
2026-10-27 17:40:11 +08:00 |
|
youpaishidifu
|
7b8aa4e194
|
第57批续21: 领地子领地体系 + 重叠身份闸门(修绕过漏洞)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m36s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
【任务1 修绕过漏洞】confirm_create(圈地棒主路径)原零重叠检测,任何玩家都能在别人领地内
建重叠领地绕过权限限制。新增 findContainingMainLand(完全包含判定,排除子领地)+
isQualifiedLandManager(领地主/管理员/授权管理员身份校验):
- 选区完全包含于某主领地+身份合格→建子领地(parentId=主领地id,owner沿用主领地主)
- 身份不合格→拒绝'当前范围内已有领地'
- 部分重叠(跨边界)→一律拒绝
quickCreateLand(3×3)部分重叠仍拒绝;完全包含且身份合格则自动转 confirm_create 建子领地
审批 create 路径(handleApproval)同步套重叠闸门,防超面积审批绕过
【任务2 子领地体系】area_lands 加 parent_id 列(CREATE+ALTER迁移);AreaConfig 加 parentId
子领地权限挂父领地 land_id 的 area_land_permissions 表(可单独收紧/放行);
getPermissionLevel 加'父领地管理员在子领地内继承ADMIN'(封堵越权);新增 findLandNameById;
圈地棒选区后追加'智能识别领地'提示
约束:子领地仅1级、必须完全包含、按面积正常收费、命名冲突自动加序号
|
2026-10-27 16:47:28 +08:00 |
|
youpaishidifu
|
7c649675d6
|
修复.gitignore的一个错别字,并临时屏蔽没做完的开发内容
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m31s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-27 15:40:51 +08:00 |
|
youpaishidifu
|
a44bc88bd0
|
第57批续20: syncOnlinePlayers 改推全量在线玩家(不再筛loggedIn)——修刚注册未/login玩家PHP判'未在线'
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m29s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
根因: syncOnlinePlayers 此前只推 loggedIn 玩家, 刚注册未 /login 的玩家
在 loggedIn 集合里但漏推 → PHP online_players 表无该玩家记录 →
validateWebAccess 判 !isOnline → 网页弹'未在线, 无法批准'。
修复: 删除 if(!loggedInPlayers.contains(...)) continue 过滤,
推送 Bukkit.getOnlinePlayers() 全量在线玩家(已登录+未登录)。
loggedIn 集合保留仅用于日志变化检测。
能否绕过密码验证仍由 login_verified 位决定(续19-hotfix已纠偏),
'在线'与'已验证'两语义彻底解耦。
|
2026-10-27 15:17:27 +08:00 |
|
youpaishidifu
|
49d86c9e85
|
第57批续19-hotfix: login_verified 语义纠偏(严格按isLoggedIn推)
Check Source / check (push) Successful in 7s
Auto Release / build (push) Successful in 3m36s
Simple Test / test (push) Successful in 3s
Test Env / test (push) Successful in 4s
续19把login_verified按isRegistered推, 导致'已注册但未登录'的玩家也被推1
→ PHP validateWebAccess view路径直接放行(绕过密码), 游戏里还在提示/login
但php已判定登录成功(与游戏状态不一致)。
修复: autoGenerate/handleWebLogin 两处push URL的login_verified改回
isLoggedIn(只有/login密码验证成功才=1), 已注册但未登录=0(网页要求输密码)。
PHP侧续19已有的web_login_verified 10分钟窗口做'登录状态同步延迟'兜底不受影响。
mvn -q -o clean package 编译通过, jar 1546400字节。
|
2026-10-27 14:46:02 +08:00 |
|
youpaishidifu
|
2c006d35b5
|
第57批续19: Java 侧 token 0/1 状态位统一管理
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m35s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
1. autoGenerateWebLoginToken 加 10s 冷却去重(修"每次登录推2个token"刷屏)。
2. 三处 push URL 的 login_verified 值统一: 已注册/已登录→1(网页直接放行), 未注册→0(网页要求输密码/注册)。
3. pushLoginVerified 加注释说明(登录收口已保证玩家已登录, 此路径固定推1)。
4. 修复续17遗留损坏: submitWebEmailBindResult 5参重载方法体被吞, 保留委托调用(非递归)并加说明注释。
mvn -q -o clean package 编译通过。
|
2026-10-27 13:28:26 +08:00 |
|
youpaishidifu
|
687b592d69
|
第57批续17: Java拉取PHP邮箱回推队列写权威db——pullEmailBindings()幂等写db+触发syncUserRegistrations收敛,挂TimerA
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-27 11:27:10 +08:00 |
|
youpaishidifu
|
a2c92d9150
|
第57批续11:PVP弃用API修复(Paper 26.x)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 3m5s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
- GameRule.DO_DAYLIGHT_CYCLE → GameRules.ADVANCE_TIME
- GameRule.DO_WEATHER_CYCLE → GameRules.ADVANCE_WEATHER
- GameRule.DO_MOB_SPAWNING → GameRules.SPAWN_MONSTERS
- GameRule.KEEP_INVENTORY → GameRules.KEEP_INVENTORY
- AttributeModifier(String,...) → AttributeModifier(NamespacedKey,...)
|
2026-10-26 20:11:53 +08:00 |
|
youpaishidifu
|
325d363f4b
|
第57批续10:webbind绑邮箱密码验证接入统一风控+空行清理
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
- Main.java: /webbind approve 密码验证从独立webbindPwdFails内存计数器
接入RiskControlManager(与/login完全一致):密码错5次→Bukkit真实封禁
5分钟+踢出+报警邮件+重连拒绝+到期自动解封
- Main.java: 删除已无引用的webbindPwdFails字段
- RiskControlManager.java: 按8a693e规则清理方法内部空行(11行)
|
2026-10-26 19:20:05 +08:00 |
|
youpaishidifu
|
74e2c60d60
|
第57批续7: Java端验证密码后直接回传pwd_verified=1,PHP不再重复验密;简化绑定流程
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m31s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-26 16:27:17 +08:00 |
|
youpaishidifu
|
ad17f9ccba
|
第57批续6: 修复3个bug
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m31s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
2. /login成功后重新推送weblogin token(onJoin推送的token login_verified=0,Web端不认)
|
2026-10-26 14:58:37 +08:00 |
|
youpaishidifu
|
b65562850f
|
第57批续5: 修复4个bug
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m14s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
1. onJoin封禁缺口通知改可点击Component(Bug#1)
2. webbind approve改聊天框输入密码+拒绝选项(Bug#2)
3. PHP acctBindEmailFinish rejected状态简化为单关闭按钮(Bug#3)
4. drawer-card毛玻璃效果修正(Bug#4)
|
2026-10-26 13:10:41 +08:00 |
|
youpaishidifu
|
956ee0e940
|
第57批续4:autoGenerateWebLoginToken改用isEnabled()实时读文件
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m24s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-26 12:00:05 +08:00 |
|
youpaishidifu
|
f7f47e6178
|
第57批续4:confirm/cancel ban移到通用confirm/cancel之前 + 全文件\u00a7替换为§
|
2026-10-26 11:36:54 +08:00 |
|
youpaishidifu
|
7b62075dc7
|
第57批续3修正:/del ban拦截移到del分支内 + 管理员通知改为可点击消息
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 2s
|
2026-10-26 11:10:45 +08:00 |
|
youpaishidifu
|
d7d51cbb6b
|
第57批续3:登录推送补全+ban命令拦截+管理员广播
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m29s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
- LoginManager.finishPasswordLogin 补 pushLoginVerified(/login 统一收口推送 login_verified=1)
- Main: /delete ban 拦截(ban 不是玩家账号名);confirm/cancel ban 加 hasBanPending 检查
- WebManager: broadcastToAdmins 方法 + enterBanPendingMode 缺口较大时给在线管理员发 CLI 通知
|
2026-10-26 10:49:22 +08:00 |
|
youpaishidifu
|
6eaa883849
|
第57批续2:时间戳文件两份问题修复
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m23s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
- readTimestampFile:多份时间戳文件取最小值(用户手动放的固定值 < 插件启动创建的当前秒值)
- ensureTimestampFile:目录里已有任意时间戳文件就跳过,不重复创建
|
2026-10-26 09:53:03 +08:00 |
|
youpaishidifu
|
8a693e6417
|
第57批续:封禁播报时间戳文件+空行清理+补丁去重
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 3m0s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
- BanBroadcastManager:resolveStartCutoff 优先读数据目录10位时间戳文件,无则回退目录创建时间+180天保护;启动时自动创建时间戳文件
- WebManager:删除2075行空行+激进清理(方法内部空行全删,块注释/方法间空行保留);bans_intercept/post_scan去重
- Main/LoginManager:去重重复插入的confirm/cancel ban块和pushLoginVerified块
|
2026-10-26 00:10:06 +08:00 |
|
youpaishidifu
|
8718dc6e87
|
第57批修复:补上post_scan+bans_intercept(v3静默失败的CRLF不匹配补丁)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m55s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-25 22:38:33 +08:00 |
|
youpaishidifu
|
51f56b9e18
|
第57批:封禁数据只读+缺口待确认+登录状态推送login_verified=1
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m13s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-25 21:28:39 +08:00 |
|
youpaishidifu
|
0b3a8debdd
|
第56批:webbind批准Java端验密码(5次风控)+注册token附带邮箱后缀配置
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m37s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-25 18:40:35 +08:00 |
|
youpaishidifu
|
340726205c
|
第55批:登录状态主权修复 - token生成时按实际登录状态推login_verified(未登录推0让PHP清除旧记录)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m30s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-25 17:37:15 +08:00 |
|
youpaishidifu
|
ba73ebfdb2
|
第54批:登录验证主权反转 - 消息文案修正
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m25s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
根因:LoginManager.java:309 '正在核对网页端最新密码…' 暗示 PHP 有更高权威,
用户感知「主权搞反了」。
架构现状(已确认无需改动):
- PHP 不验证密码(sync.php verify_web_password 已禁用)
- Java 本地 checkPasswordWithFallback 为主
- Java 拉回 PHP 凭证入库主密码(applyPulledRow → updatePassword)
- Java 回传结果给 PHP(sendWebLoginResult → complete_web_login_request)
修复:
1. LoginManager.java: 消息文案改为中性「正在同步账号数据…」
2. WebManager.java:6550: 冻结解冻消息改为「请在游戏内执行 /sdf1_login pw」
3. 注释更新:明确「拉回PHP凭证入库为主密码」「以Java本地login.db为准」
验证:
- 括号配平 PASS(final=0, min=0)
- mvn clean compile BUILD SUCCESS (16.9s)
- 行尾:LoginManager LF, WebManager CRLF
|
2026-10-25 16:37:52 +08:00 |
|
youpaishidifu
|
5e9bd5f6bf
|
第53批:网页绑邮箱游戏内批准流——定时器A链尾轮询+clickable批准通知+/webbind命令
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-23 23:01:42 +08:00 |
|
youpaishidifu
|
474b912afe
|
第52批: 修复\/JSON转义脏值四层防护
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m34s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
- 解析根修: addParsedEntry/parseJsonArrayItem清洗链补\/还原(置于\\还原之前); extractJsonString扫描跳过转义序列并按JSON规则反转义
- 写库兜底: createUser/updatePassword入参b64Clean; applyPulledRow credentials的hash/salt/temp写库前白名单清洗
- 存量迁移: init启动时REPLACE char92清洗users表password_hash/password_salt/temp_password(仿一次性自愈范式,WHERE instr条件幂等)
- 读取容错: checkPassword/checkPasswordWithFallback/checkPasswordForChange比对前双侧b64Clean
- 根因: PHP json_encode把base64中的/转义成\/,历史解析层漏还原写进库,hash脏值致游戏端+网页端密码恒错
|
2026-10-23 19:21:14 +08:00 |
|
youpaishidifu
|
5b705d0af2
|
第49轮诊断:收回写库前后抓新旧hash/salt完整值入日志,抓对账ping-pong现行
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m33s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-23 16:04:22 +08:00 |
|
youpaishidifu
|
7525b8f6b5
|
第48批(1/2):修复对账指纹未落盘致网页改密被反向覆盖;登录失败自动对账重试;绑定2FA后游戏登录强制密码+动态码两关
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m24s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
- saveAlignSeen 自杀式节流修复:原节流条件 now-dirtyAt<5000 恒成立(调用点先设 dirtyAt 再调用)
→ align_seen.json 从未落盘 → 重启后 seen 全空 → 网页新密码被游戏旧密码反向覆盖;
改为以「上次成功写入」alignSeenLastWrite 为基准节流
- /login 密码不匹配:15秒/人限流 → 异步 pushWebLoginCredentials(含 alignGate 拉回) →
主线程自动重校验;重试仍败走正常风控计数(解决网页改密后游戏内密码对不上)
- 已绑定2FA(twofa_enabled=1)的玩家密码通过后不再直接放行:requireTwoFaIfEnabled
转入双验证第二步等 /2fa code(此前仅 IP 变更才触发两关,同IP登录第一层过关直接放行)
|
2026-10-23 11:27:38 +08:00 |
|
youpaishidifu
|
2090939e87
|
第47批:2FA绑定状态与网页端双向同步——users表新增twofa_bound_at;WebManager新增pull_state/push_state;TwoFactorManager同步合并逻辑(导入/新者胜/解绑传播)+4写入点推送+进服静默同步;Main进服挂点
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 6m8s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-22 23:25:01 +08:00 |
|
youpaishidifu
|
14c288a77c
|
第45批:垃圾站轮次播报——保留仅1轮时不提示本轮结束时倾倒垃圾(仅保留>1才提示)
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m32s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-22 19:18:53 +08:00 |
|
youpaishidifu
|
c92e79160c
|
合并远端 README 提交 a21e95d(仅 README)
|
2026-10-22 16:27:21 +08:00 |
|
youpaishidifu
|
a21e95df68
|
docs: 完善 README 使用手册(3.11)
|
2026-10-22 16:23:16 +08:00 |
|
youpaishidifu
|
0b5422395c
|
docs: 完善 README 使用手册(3.11)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 5m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-22 16:22:35 +08:00 |
|
youpaishidifu
|
b7b564a091
|
3.11内测版:plugin.yml版本号升级
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m35s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-22 15:52:23 +08:00 |
|
youpaishidifu
|
c5bd3d58f5
|
3.1正式版
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m16s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-22 15:00:45 +08:00 |
|
youpaishidifu
|
61fdd106b2
|
更新预置公告内容
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m22s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-22 14:55:30 +08:00 |
|
youpaishidifu
|
22e4d262dc
|
第42批:修复垃圾站启停状态热重载断链(日志喊了true→false但垃圾站照跑)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 4m10s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-22 14:28:17 +08:00 |
|
youpaishidifu
|
a5cb5afba7
|
第41批收尾:正则层残留 Unicode 转义全部字面化(可见字符写字面量/不可见字符用具名常量)
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m5s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-22 13:05:46 +08:00 |
|
youpaishidifu
|
855e45cb7f
|
第41批补:修 INVISIBLE 正则字符类开括号丢失 + 清 IDE inspection(空if体/未使用字段注释)
- ChatFilterManager INVISIBLE 字符类 '[' 被清理脚本误删 → 补回(否则不可见字符剔除失效)
- ConfigManager 删死分支(恒空 if)+ else-if 空体改 continue(语义等价,21场景验证)
- garbageTag/smtpConfiguringPlayer 加注释说明为历史遗留字段(保留兼容,不删)
|
2026-10-22 12:29:14 +08:00 |
|
youpaishidifu
|
ac64aee365
|
第41批:全量转译 \uXXXX 转义为可读字面量/UnicodeChars具名常量 + 修复IDE插坏代码
- 新增 UnicodeChars 常量表:不可见字符(零宽/BOM/全角空格/U+0001)统一用具名常量
- 可见字符直接写字面量(§、:、全角数字、汉字区间等),读代码无需心算码位
- 正则层转义(\\uXXXX)保持原样并补注释说明,避免改变正则语义
- 注释里的 \uXXXX 改双写(javac 预处理期生效,注释躲不掉)
- 修复IDE插坏的 ConfigManager/UnicodeChars 括号
|
2026-10-22 12:17:04 +08:00 |
|
youpaishidifu
|
14db0aa10c
|
第39批:垃圾站轮次提示恒发+口径改为刚开启的新一轮(原倒垃圾轮整轮静默+播报差一轮)
|
2026-10-22 11:18:09 +08:00 |
|
youpaishidifu
|
d0821b1ebe
|
第38批:公告.md json块更新器修正(新键补到顶层最前而非末尾+尾逗号容错+防选块跳到示例块)+公告板尾逗号容错
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m14s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-22 10:34:35 +08:00 |
|
youpaishidifu
|
77f8289c64
|
第37批:通用更新器补md内嵌json块缺键合并 + 垃圾站保留轮数热更
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 3m22s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
bug1: safeUpgradeDoc只认配置区标记且只补表格行,公告.md头部json块新增键永不合并 → 新增mergeMdJsonBlock(第一个可解析json围栏块缺键补入,前置##标题配对防错位,.bak逐字节校验+写后复解析校验+失败还原),返回值组合jsonMerged,模板无配置区时静默;bug2: 计时器每tick只重读cleanupInterval → 同步重读maxRounds,改垃圾站_保留轮数即时生效
|
2026-10-21 23:46:03 +08:00 |
|
youpaishidifu
|
2a1ce02e71
|
第36批:垃圾站播报改周期内轮次(不再显示2000+)+血条加上轮清扫/倒垃圾数+公告板开关与翻页(开关状态/翻页时间)+公告键兼容中文消息颜色+color继承最近一条+修复顶层标量配置致解析全空
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 3m25s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-21 22:46:50 +08:00 |
|
youpaishidifu
|
04678b29b0
|
第35批:公告计分板(公告.md json块解码/排序位冲突自动进位/15字截断换行/链接可点击/颜色三形态)+PVP侧边栏共存+垃圾站播报加轮次信息
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m57s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-21 21:39:52 +08:00 |
|
youpaishidifu
|
f084304cda
|
第34批:垃圾站倒计时改墙钟唯一时间源(血条/抢救/指令±0秒)+ 保留轮次改N-k余数语义(每N轮才倒一次垃圾)
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m32s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-21 18:49:28 +08:00 |
|
youpaishidifu
|
d9fe2818ab
|
第33批:垃圾箱保留次数差一修复+血条按剩余时间分段+拉黑到期自动解除与耻辱台插播+拉黑硬拦截
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m20s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
- 垃圾箱保留轮数:deleteRound=currentRound+1-maxRounds(旧公式少算1,R=1要到第3次清理才删第1批)
- 血条色段改纯剩余时间:>=180绿/30~180黄(快动作了注意安全控好量)/<=30红;Q拦截改末5秒拦第一次、1秒窗口内第二次放行
- 黑名单时长:parseExpireMs 识别相对时长(30分/2小时/3天/1周)带双护栏;5秒定时器新增 sweepExpired 扫墙钟到期→自动解除+删md行+回响PHP
- 耻辱台:applyBlacklist 即时插播拉黑公示(轮播6页x110~400s短时拉黑轮不到)+轮播排序黑名单置顶
- 拉黑硬拦截:不能打开任何容器/不能拾取物品/不能与村民交易(2秒节流提示)
- addblack 帮助与黑名单.md 模板补相对时长格式说明
|
2026-10-21 17:05:38 +08:00 |
|
youpaishidifu
|
8311c412a1
|
第32批:垃圾站血条与启发式开关解耦;拉黑信号回响PHP(CDK双链路拦截+syncBlacklist名单同步)
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-21 15:09:06 +08:00 |
|
youpaishidifu
|
311138b3a6
|
第31批(7条修正):血条色段改墙钟绝对时刻(3:00黄/4:30红)、罪人签名移到消息尾部、抢救限最后1分钟、插件设置.txt双路增量自动重载(无变化静默)、/sdf1_login reload补loadSettings、兑换码web关闭直接返回
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m3s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-21 12:25:07 +08:00 |
|
youpaishidifu
|
55d24c2d99
|
修正plugin.yml的语法错误
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-21 10:58:20 +08:00 |
|
youpaishidifu
|
3cd1999b85
|
第30批:群控黑名单(软折磨)+ 垃圾箱抢救模式 + 顶部血条软提醒
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m22s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
【一、群控黑名单 BlacklistManager(新增)】
- 数据源:plugins/Sdf1_login/black/黑名单.md 配置区表格
| 玩家名字 | 拉黑时长 | 理由 |
- 时长口径:空/0/终身=永久;yyyy-MM-dd HH:mm=到点;仅日期=当天23:59:59
- 5秒增量重载(mtime+size 变化才解析),加行5秒生效、删行5秒恢复
- 拉黑处罚三件套:冻结债券账户 + 撤销全部领地管理员身份(admin→visitor)
+ 备份背包并清空(异步落库快照后回主线程清空)
- 解除拉黑两件套:解冻债券 + 从最新自动备份恢复背包
- 新增 DatabaseManager.getLatestAutoBackup(inv_backup_auto 按 save_time 倒序取1)
- 新增 AreaProtection.demoteBlacklistAdmins(normName 定位逐行 UPDATE)
【二、黑名单拦截点】
- CDKManager.redeem 入口:fail:blacklisted(联控 Sdf1 插件 fail:blacklisted 分支)
- WebManager.handleWebLogin / autoGenerateWebLoginToken:禁止签发 PHP 后端 token
- AreaProtection:创建/confirm_create/quickCreateLand 禁止建领地;
addvisitor 禁止把黑名单玩家加进授权名单
- AreaCLIManager:showLandManage/togglePerm/toggleAdmin/clearPlayerPerm 禁止管理领地
- Main:onBlockBreak/onBlockPlace2/onBlockPlace 禁止破坏与放置方块
- InventoryAutoBackup:黑名单玩家跳过自动备份(保护拉黑前快照)
- BanBroadcastManager:collectBlacklistBans 并入耻辱台公示(独立数据源)
- 聊天消息末尾追加「----我是罪人user」称号
【三、垃圾箱抢救模式 + 顶部血条】
- 指令 /垃圾抢救:跳过本轮清理并重新计时(countdown 提为字段)
- 顶部 BossBar 常驻倒计时:前60%浅绿安全 / 60%~90%黄色警告
「垃圾箱快动作了,别丢了」/ 最后10%红色危险
- PlayerDropItemEvent:红区发小标题警告;最后10秒单击Q被拦截、
2秒内双击Q确认放行,其他时段完全不干涉
- 插件设置.txt 新增「垃圾站_启发式拦截」开关(默认true,关闭后撤血条不提示不拦截,
仅重载后控制台打一条 warn)
【四、指令】
- /addblack <玩家> [时长] [理由]、/removeblack <玩家>
- 插件.yml 注册 addblack/removeblack/垃圾抢救
【五、Paper 26.x 适配】
- BossBar 改用 Adventure API(net.kyori.adventure.bossbar.BossBar),
org.bukkit.boss.BossBar 在 26.x 已移除
|
2026-10-21 10:34:34 +08:00 |
|
youpaishidifu
|
c7d89a972d
|
第35批修订2+3:机翻收紧(≥3字母/域名IP不翻/在线玩家名摘除不翻);清理IDE残留_seg_tx.txt
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m13s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-20 14:02:42 +08:00 |
|
youpaishidifu
|
afcce6b3e0
|
第35批:机翻无条件执行;IPv4/IPv6未加白即拦;通用resources模板同步补缺
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m39s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-20 13:36:19 +08:00 |
|
youpaishidifu
|
0fdeb88559
|
第28批:英文聊天机翻双语展示 + 域名过滤按illegal_domains.txt后缀判定修误伤
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m29s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
任务1(新增)英文聊天机翻:
- 所有消息一律不拦截原样放行,仅「整条消息不含中文字符」时异步机翻
- 原始消息由MC正常广播后,追加[机翻]双语展示行
- 中文夹杂英文(如「用water免伤」)原样输出不机翻
- 复用领地系统YOUDAO→JIANXIN→GOOGLE降级链,MaterialTranslator新增
translateChatText公开入口+独立缓存(上限500)
- 专用2线程池隔离HTTP阻塞,10秒/人冷却防刷,onDisable关闭线程池
任务2(修复)域名过滤误伤:
- extractUrls裸域名token必须命中illegal_domains.txt后缀(含中文后缀)
才收录,显式协议URL(含://)无条件收录——修「今天.天气真好啊」整句误判
- shouldBlockUrl同步改后缀判定,不再对点分隔无条件拦截
- illegal_domains.txt补全TLD+中文后缀节(工作区遗留扩展一并入库)
|
2026-10-20 11:29:37 +08:00 |
|
youpaishidifu
|
67f4438f0d
|
33批二十七次修正:两翼都不空一律退回(删硬接现有木箱分支)+退回清方块走clearChestBlock,修地上残留半箱+空箱
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m25s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-19 11:29:48 +08:00 |
|
youpaishidifu
|
0d4e1e6f33
|
33批二十六次修正:放置接双箱只看左右两翼(空气翼优先/现有箱翼次之/全挡死退回+提醒),修环境紧张炸开
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m38s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-18 21:02:35 +08:00 |
|
youpaishidifu
|
644a8c4744
|
33批二十五次修正:拆大箱子清孤半方块前先清空真实库存(修onRemove吐双箱共享库存散落一地+打包箱双倍凋落)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m9s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-18 20:27:41 +08:00 |
|
youpaishidifu
|
e67015f7a3
|
33批二十四次修正:restoreInventory从DB备份恢复背包前先拆超大打包箱(修登录自愈被DB备份炸弹覆盖照样被踢)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m7s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-18 19:48:52 +08:00 |
|
youpaishidifu
|
4cff8236b6
|
33批二十三次修正:PlayerLoginEvent登录自愈扫描背包超大PDC打包箱拆分替换(修存档卡旧超大物品每次登录被踢)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m9s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-18 19:21:10 +08:00 |
|
youpaishidifu
|
7b648d8729
|
33批二十二次修正:双半LEFT/RIGHT配对+拆分打包防PDC超64KB踢出(修双箱不连接/拆箱被踢两根因)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m18s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-18 19:04:31 +08:00 |
|
youpaishidifu
|
0c9543d63e
|
33批二十一次修正:空气位摆箱applyPhysics=true+未连成改27格回填剩余寄回(修大箱必炸/必须挨现有箱)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m32s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-18 18:31:08 +08:00 |
|
youpaishidifu
|
9c05d81047
|
33批二十次修正:接双箱双半LEFT+2tick实测+双箱已连单54格全量回填(修大箱必炸/必须挨现有箱才安全两条根因)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m16s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-18 17:52:35 +08:00 |
|
youpaishidifu
|
7eb5bdc093
|
第33批十九次修正:双箱54格全量回填+消灭双倍掉落+双连箱合并强制大箱
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
生产服 latest.log 实锤两个根因:
Bug1「物品≤27 永远给小箱」:双连箱54格物品被引擎分摊在左右两半,
newMergedContents 读双半27格快照,物品≤27时全挤在一半边、
合并 countSlots≤27 → buildPackedChest 判小箱给27格铜箱。
Bug2「物品≥27 永远双倍掉落」:放置侧 doBackfill(placedFinal) 读
placedFinal.getState().getInventory(),双箱左半 BlockState 只覆盖
27格,≥28件塞不下→触发重新打包寄玩家(一份),右半27格原版物品
没被 clear() 清掉→拆箱时原版掉落一份=双倍。
修复:
① 新增 doBackfillDouble(placed,twin,...):双半各自读27格inventory,
先 clear() 双半全54格杜绝原版残留,再按54格全量回填(左半0-26、
右半0-26物理格)。塞不下的重新打包寄玩家(不残地)。
② 放置侧双箱已连分支 doBackfill 改 doBackfillDouble(placedFinal,twinFinal,...)
③ buildPackedChest 加 force54 参数:双连箱合并交付强制54格CHEST大箱,
不再靠 countSlots>27 猜(物品少也按54格打包)。
④ deliver 双连箱合并分支(半名含「大箱子」)传 force54=true。
配平 0(173/173),编译 EXIT=0,jar sha 7a4e14f8
|
2026-10-18 16:27:33 +08:00 |
|
youpaishidifu
|
1a5487a25e
|
第33批十八次修正:双箱合并真根因——update applyPhysics 改 true 触发引擎双箱检测
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m23s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
生产服 latest.log 实锤:接双箱 connected=是 但主箱实测 placed=27格(需29)→
双箱未连回退寄玩家,连续 8 次全失败。
根因(已核实 MC 原版双箱合并机制):
- 两箱 XZ 紧邻、Y 相同、facing 一致 → 才构成双箱(代码 L493/L519 的 facing 对齐正确,勿改)
- 合并检测由引擎在方块物理更新时触发。代码全程 update(true,false)
(applyPhysics=false) 跳过检测 → 主箱永远 27 格、永不 54 格
- 这是十三/十四/十五/十六次全失败的真正根因
修复(最小改动,仅 4 处 update true,false → true,true):
① 接已有箱分支 placed/c 两处
② 接空气位分支 placed/air 两处
facing 对齐逻辑保持不变;实测 <54 回退兜底保留(环境不安全仍清双箱+重打包)
配平 0(149/149),编译 EXIT=0
|
2026-10-18 15:47:18 +08:00 |
|
youpaishidifu
|
8abdb368a7
|
第33批十七次修正:小箱(≤27格)空箱根因修复——嵌套if死代码else提外层
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
根因实锤(生产服日志+代码分析):
- L468 if(slotCount>27) 外层块内 L570 又嵌套 if(slotCount>27)(条件恒true冗余)
- L612 else(单箱doBackfill) 对应 L570 的嵌套if → 死代码永不执行
- 小箱 slotCount≤27 走 L468 条件false → 整个 L469-617 块跳过 → L618 } 关闭
→ 没有 doBackfill 调用 → 箱子内容从未回填 → 空箱
修复:
- 移除 L570 冗余嵌套 if(slotCount>27)
- 双箱实测代码块缩进去一级(28→24空格)
- L612 else 提外层对应 L468 的 if/else,小箱立即 doBackfill 单箱回填
- 配平不变(open/close各减1)
|
2026-10-18 15:16:59 +08:00 |
|
youpaishidifu
|
1b02f16816
|
第33批十六次修正(诊断增强v2):放置入口+清CustomName后容器size+doBackfill入口三处日志,实锤小箱空箱根因
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m23s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-18 14:59:45 +08:00 |
|
youpaishidifu
|
d3d6c7b67c
|
第33批十五次修正(诊断增强):给双箱/单箱回填路径加成功诊断日志(cap/filled/塞入数),定位小箱也发空箱根因
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m46s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-18 14:36:04 +08:00 |
|
youpaishidifu
|
24ecdf1ac9
|
第33批十四次修正:接双箱弃用setBlockData(LEFT)手动连接,引擎原生setType(CHEST)自动连双箱+立即实测真实size(同步读54/27格,修复空白箱/残疾版)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m21s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-18 14:18:22 +08:00 |
|
youpaishidifu
|
a91b51f26d
|
第33批十三次修正:接双箱后2tick实测真实size判断54/27,未连成清双箱+全部物品重新打包寄玩家(不残地,修复残疾版)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m36s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-18 13:45:15 +08:00 |
|
youpaishidifu
|
46ee04a880
|
第33批十二次修正:接双箱失败/塞不下→重新打包寄玩家(不丢一地,防岩浆/垃圾箱环境物品丢失)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-18 13:25:25 +08:00 |
|
youpaishidifu
|
aca8c31cc7
|
第33批十一次修正:接双箱固定顺序改4独立Location方位偏置+全被占回退27格单箱 + clearChestBlock加固防双箱回弹(清后2tick再清一次)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m46s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-18 13:04:48 +08:00 |
|
youpaishidifu
|
3635a0c3ae
|
第33批十次修正:合并分支清孤半方块本体(孤半物品丢失根因)+修复竞态损坏({}}裸括号/1plugin/getState(;)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m34s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-18 12:00:14 +08:00 |
|
youpaishidifu
|
806e2f6ed0
|
第33批九次修正:判定口径改非空格子数 + 接双箱update强制落盘 + 回填兜底零丢失
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 2s
用户实测两图:①"小箱"239件实为15个非空格子堆叠,旧 count(amount)>27 误判大箱强接双箱
错位;②27件27格该接双箱但 setBlockData(LEFT) 连接态没建立→前后错位切断。
四条根因一次修死:
1. 判定口径错:countItems(amount累加) 把堆叠误判成"塞满"。改 countSlots(非空格子数)
——27个非空格子=小箱(27格塞满),>27个才接双箱。
2. 接双箱连接态没建立:setBlockData 只改 block data 缓存,方块实体库存没真连成54格。
改:双块 setBlockData(LEFT)+facing对齐后 调 update(true,false) 强制落盘连接态。
3. 回填塞不下丢物品:废弃嵌套 lambda,改单次回填读真实库存(连接生效=54格/未生效=27格),
塞不下的物品 dropItemNaturally 掉在箱子旁(零丢失)。
4. 加诊断日志「接双箱结果 connected=... 需塞入格子数=...」定位连接态是否真建立。
|
2026-10-18 11:19:04 +08:00 |
|
youpaishidifu
|
5816391b56
|
第33批八次修正:大箱子强制普通CHEST(不沿用陷阱箱来源) + 接双箱facing对齐
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m32s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
用户实测两问题:
1. 给的大箱子还是陷阱箱:buildPackedChest 用 sourceMat(来源材质),
拆陷阱箱时打包箱沿用 TRAPPED_CHEST。修正:大箱子(>27件)强制用
Material.CHEST(原版普通木箱),小箱子(≤27件)仍沿用来源材质保持
铜箱观感。
2. 前后错位切断:接双箱只 setType(LEFT) 未对齐 facing(Chest 继承
Directional,朝向不同则双箱不连接)。修正:接已有邻接木箱时双块
都设 LEFT + bd.setFacing(bdN.getFacing()) 对齐;放第二个 CHEST 时
bd2.setFacing(bd1.getFacing()) 对齐。
|
2026-10-18 10:25:18 +08:00 |
|
youpaishidifu
|
b22c1342b1
|
第33批七次修正:孤立小箱误标大箱子+误接双箱→2个右半边 根因
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m25s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
用户实测图「已打包 小箱子(24件)」却是大箱子且放下来2个右半边。
四条根因与修正:
1. 接双箱判定口径错:onChestPlace 用 contentCount(物品总数量 amount 累加)>27
判定接双箱,24件物品若多组堆叠 amount 总和可能>27 → 孤立小箱被强接双箱 →
两块都设 LEFT 渲染成"两个独立右半"。改:用「非空格子数 slotCount」判定
(一个双箱 54 格,>27 格才接双箱),amount 不再影响判定。
2. 标签误标:Paper 26 的 Chest.Type 对孤立半箱可能返回 LEFT/RIGHT 而非 SINGLE,
直接按 Type 判定会把孤立小箱误标"大箱子"。改:按连接态判定——有水平邻接
箱(twin)才算"大箱子·左/右半",无邻接箱一律"小箱子"。
3. 接双箱双块都设 LEFT:原接已有邻接木箱时只设新块 LEFT、相邻块保持原 type,
双箱未真正共享 54 格库存。改:双块都 setBlockData(LEFT) 才合并成 54 格容器。
4. 取数保留孤半 54 格全量(双半 getSnapshotInventory 27+27)。
备份原则:jar 滚动备份 .old → .old.1 → .old.2(deploy_sftp_jar.py
next_old_name 自动递增,本地+生产双端各一套)。
|
2026-10-18 00:50:47 +08:00 |
|
youpaishidifu
|
e40614282d
|
第33批六次修正:双连箱拆箱合二为一 + 不用陷阱箱 + 修翻倍
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
1. 别用陷阱箱(用户明令):buildPackedChest>27件改回 CHEST/来源材质,
onChestPlace 放下来自动在空气位再放一个 CHEST+双块setBlockData(LEFT)
接成54格双箱,TRAPPED_CHEST 一律不用(避免红石电路误联控)。
2. 翻倍根因:onChestDropItem 旧版 suppressDrops.remove(loc) 一次性移除,
双箱内容经 loot 表批量抛多个 BlockDropItemEvent 时第一个事件后 loc
被删、后续漏出→翻倍。改为 contains 命中就拦不删 loc,靠 markSuppressDrop
的 60 tick 定时任务自动清除,期间同位置所有掉落事件全拦。
3. 放下来丢另一半:onChestPlace 接双箱后重取 getState 回填,双箱连接后
getInventory 返回 54 格全量,28~54件不再被 27 格截断。
|
2026-10-18 00:15:40 +08:00 |
|
youpaishidifu
|
ca7d35b252
|
第33批五次修正:双连箱翻倍+散落根因——删clearChestBlock(setType触发二次事件)+幂等守卫;buildPackedChest>27件用TRAPPED_CHEST(54格)+onChestPlace自动接双箱
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m33s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-17 23:33:01 +08:00 |
|
youpaishidifu
|
7dd5fef5f9
|
第33批四次修正:双连箱0件根因=BlockBreakEvent时刻getInventory未同步→统一双半getSnapshotInventory(27+27),连箱=54全量/独立小箱=各27独立,弃getInventory与isSimilar
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 2s
|
2026-10-17 23:02:13 +08:00 |
|
youpaishidifu
|
c947ef57ab
|
第33批三次修正:双连箱合并物品数错乱根因——newMergedContents连箱直接读54格全量(readContents(self))放弃isSimilar去重(误删同类型不同组+2x54翻倍),独立小箱selfSnap+twin各27不去重
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m34s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-17 22:50:58 +08:00 |
|
youpaishidifu
|
4d4fee6f2e
|
第33批修正:双连箱合并0件根因——newMergedContents改读selfSnap+readContents(twin)双源/连箱去重(按bigHalf),clearChestBlock前补markSuppressDrop(twin)拦孤半内容散落
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m7s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 2s
|
2026-10-17 22:37:28 +08:00 |
|
youpaishidifu
|
49190f0fc1
|
第33批:邻接箱合并口径改『紧挨着就算』(四向x±1z±1)+合并门槛去isBigChest(小箱也合)+全量诊断(invSize/双半twinInvSize/enter分支)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m41s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 22:14:52 +08:00 |
|
youpaishidifu
|
f58e73ca9e
|
第32批补充:双连箱合并加全量诊断(数据类型/invSize/邻接twin/enter分支),定位snap=27孤半不合并根因
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 21:44:40 +08:00 |
|
youpaishidifu
|
fef3f51203
|
第32批修正:双连木箱拆箱合二为一(setType清孤半+读54格全量,废弃breakBlock)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m33s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 2s
|
2026-10-17 21:06:01 +08:00 |
|
youpaishidifu
|
53af7bc23b
|
第32批补充:拆箱加诊断日志(snap格数/首破vs成组/间隔ms/mergeTwo),待实测后据此定合并路径
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m44s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-17 20:42:03 +08:00 |
|
youpaishidifu
|
9f155eecb0
|
第32批:铜双箱拆箱直接deliver 54格快照(不依赖第二刀)/who+banget非OP近似建议最小化披露
|
2026-10-17 20:35:08 +08:00 |
|
youpaishidifu
|
8d5fa288a4
|
第31批:title接管收窄仅JSON载荷/合箱cancel旧超时任务/json非OP走近似建议隐藏存在性
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m29s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 20:09:03 +08:00 |
|
youpaishidifu
|
08b2233fc3
|
第30批修正:chest/cfg.json 键值改回中文(与opwl.json项目惯例对齐,Gson解析中文键)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m17s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 19:06:34 +08:00 |
|
youpaishidifu
|
699d455bab
|
第30批:拆箱权限改看容器管理/合二为一/chest cfg热重载/actionbar接管/json调OP
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m23s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-17 18:53:06 +08:00 |
|
youpaishidifu
|
6c233939de
|
第29批验收修正:打包箱放置权限回退——放置侧不拦任何人交还原版回填,隔离改由下游链路实现(非授权用户拆箱交原版散落一地+领地deny_pickup禁拾取拿不走,开箱由deny_container拦)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 13:52:40 +08:00 |
|
youpaishidifu
|
12e68060fa
|
第29批:title/tellraw报错接管恢复压制原生报错并直接打开JSON构造器(附标准示例+/json超链接) + 打包箱放置仅限领地主/授权成员且放下清除自定义名 + 封禁对账收回回填created创建时间(修复拷贝生产封禁数据后全员播报乱叫)
Check Source / check (push) Successful in 3s
Auto Release / build (push) Successful in 2m44s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-17 13:37:16 +08:00 |
|
youpaishidifu
|
2ee874eeda
|
28批验收修复:裸CHEST搬运判定、封禁播报起点回退180天、JSON构造器超链接唤醒+剪贴板复制+选择器剥离+subtitle同屏显示
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-17 11:39:59 +08:00 |
|
youpaishidifu
|
d7d5ce7039
|
第二十七批:修线上验收4个bug——箱子搬运认铜箱族、/json选色语义改状态、样式4按钮+发送回显JSON、封禁公示改读banned-players.json
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m28s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
1. 箱子搬运不生效:26.2新增铜箱族(COPPER_CHEST/WAXED_/WEATHERED_/OXIDIZED_/EXPOSED_ 共8种),
原判定只认 CHEST/TRAPPED_CHEST,拆铜箱第一步就早退交原版散落。改 isChestMaterial()
(*_CHEST 且非 ENDER_CHEST,走枚举名不引用常量);快照/回填改走 Container 接口
getSnapshotInventory();打包箱沿用来源材质;setDropItems 之外补 BlockDropItemEvent 兜底抑制。
2. /json 设置绿色输出白色:颜色原是 append 进 text 末尾,「先打字后选色」对已发文字无效,
「先选色后打字」色码裸挂段首被 toTellrawJson 丢弃。改为选色是状态(pendingColor),
空内容只记住、输入时前置;已有内容则剥码后整段按新色+样式重建。
3. /json 补加粗/斜体/下划线/删除线 4 个样式按钮(格位18/19/20/23),对应 JSON bold/italic/
underlined/strikethrough 布尔字段,预览项与输入按钮显示当前开关态。
4. /json 发送后(成功与失败都)把实际指令与生成的 JSON 原样折行回显执行者,仅本人可见。
5. 封禁公示数据源改为原版 banned-players.json(用户明令唯一源):每轮重读文件到内存解析,
按 created 过滤插件数据目录创建时间之前的历史封禁;缺失/为空/语法坏/过滤空一律闭嘴。
同时删掉 resolveStartCutoff 的「距今不足7天就不过滤」守卫 —— 插件刚装上服时它退化成
不过滤,正是「一个都没封却公示一堆人」的第二重根因。
|
2026-10-16 23:18:54 +08:00 |
|
youpaishidifu
|
cbc3cb4db7
|
第二十六批:箱子搬运(精准采集斧拆箱2秒窗口打包+放置回填)、/json消息构造器GUI(tellraw/标题/字幕+颜色+原版报错接管)、背包备份改每小时0/15/30/45分准点
Check Source / check (push) Successful in 5s
Auto Release / build (push) Successful in 2m12s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-16 19:03:47 +08:00 |
|
youpaishidifu
|
6f831f065b
|
第二十五批:订正领地权限倒反天罡——denyItemFrame玩家路径回归getEffectiveDeny豁免链(领地主/授权成员/服务器管理员3组豁免),非玩家路径保留24批防爆硬保护
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m15s
Simple Test / test (push) Successful in 2s
Test Env / test (push) Successful in 1s
|
2026-10-16 12:45:09 +08:00 |
|
youpaishidifu
|
3ecadd3228
|
第二十四批:展示框防爆——denyItemFrame开启即硬保护,拦截所有破坏路径(爆炸/闪电/非玩家投射物/授权玩家手动)
Check Source / check (push) Successful in 4s
Auto Release / build (push) Successful in 2m26s
Simple Test / test (push) Successful in 1s
Test Env / test (push) Successful in 1s
|
2026-10-16 12:01:30 +08:00 |
|