Fix storage port server-side scanning crash 修复服务端扫描仓储端口时崩溃 - #5140
PigeonNian merged 1 commit into
Conversation
仅在客户端拾取仓储端口时读取 Ctrl 按键并复制缓存、标记或流体数据,避免服务端扫描加载客户端类。 修复 Anvil-Dev#5137
|
已完成核对(PR 状态:opened,未合并;diff 24 行,2 文件 +2/-0;已通过 mclo.gs 原始日志与 1.21.1 mappings 交叉取证)。 代码审查摘要 — PR #5140操作: opened(开放中,未合并) 变更本质在 崩溃链路复核(issue #5137 / mclo.gs/8zamqcq,实测日志)触发者不是原版中键拾取(客户端路径),而是第三方模组在服务端 🟢 修复评估(正确且完整)
|
| 被测目标 | 场景 | 优先级 |
|---|---|---|
两个 getCloneItemStack |
专用服务端放置带缓存/标记/流体的仓储端口,用扫描类模组(Thaumometer 类)每 tick 扫该方块 → 不得抛 RuntimeDistCleaner、不得踢人、不得 mspt 飙升 |
🔴 |
| 同上 | 客户端创造模式 Ctrl+中键拾取 → 仍附带缓存/标记/流体数据 | 🔴 |
| 同上 | 客户端普通中键拾取(无 Ctrl)→ 不带数据(行为与修复前一致) | 🟡 |
📋 声称验证表
| PR 声称 | 状态 | 证据 |
|---|---|---|
| 仅在客户端拾取时读取 Ctrl 并复制数据 | ✅ | 两处新增 isClientSide 短路,服务端直接跳过整块分支 |
| 避免服务端扫描时加载客户端类 | ✅ | 与崩溃栈 RuntimeDistCleaner / IBlockStateExtension.getCloneItemStack 完全对应 |
| fixed #5137 | ✅ | issue 指定崩溃点 StoragePortBlock.java:81,正是本次修改的条件所在行 |
结论:APPROVE — 修复正确、最小、覆盖完整,可合并;仅建议补注释与抽公共判定。
标题核对:「Fix storage port server-side scanning crash 修复服务端扫描仓储端口时崩溃」已是「英文 + 中文」规范格式且描述准确,无需修改(另外
gh auth status显示 token 已失效,即使需要也无法自动改标题,本次未执行gh pr edit)。
|
💾 Self-improvement review: Patched SKILL.md in skill 'client-server-side-separation-review' (1 replacement). |
|
❌ Non-retryable error (HTTP 400): HTTP 400: You have insufficient credits to make this request. Please purchase more credits to continue using the service. |
|
HTTP 400: You have insufficient credits to make this request. Please purchase more credits to continue using the service. |
代码审查摘要 — PR #5140操作:
✅ 崩溃机理核对(与 issue #5137 描述一致)
✅ 修复正确性与覆盖度验证
🟢 与 dev/26.1/1.6 的交叉验证(重要正向证据)26.1 线( 💡 建议(非阻塞)
🧪 测试建议
📋 声称验证表
结论: APPROVE(comment 级) — 变更极小、机理核对无误、同类位点已穷尽、与 26.1 线方案对齐,未发现需要修复的问题,可合并。
由 Hermes Agent 审查 |
|
💾 Self-improvement review: Patched references/public-api-invoked-from-server-by-third-party-mods.md in skill 'client-server-side-separation-review' (1 replacement). · Patched references/common-side-client-class-linkage.md in skill 'client-server-side-separation-review' (1 replacement). · Patched SKILL.md in skill 'client-server-side-separation-review' (1 replacement). |
|
PR #5140 的 webhook 操作类型为 closed,按审查流程约束第 1 条(closed/labeled → 停止),本次不进行审查、不发布任何评论。 如需要该修复的审查意见,请在 PR 重新打开(reopened / ready_for_review)后再次触发。 |
- 优先使用原版 includeData 标志控制数据复制,避免服务端扫描读取客户端按键状态 - 保留 26.1 服务端中键克隆时的缓存、标记与流体数据 (cherry picked from commit d7c2f74)
…修复到26.1 (#5143) * The text regarding celestial death has been corrected, and some progress has been made. 修正了天体死亡文本,增加了一些进度 (#5129) * feat(advancement): 添加天体进化挑战成就及触发器 - 新增 CelestialEvolutionTrigger 用于天体质量进化判定 - 在触发 util 中添加 celestialEvolution 方法,触发成就判定 - 在加速器逻辑中调用触发方法进行成就检测 - 添加无残留(no_remnant)挑战成就,要求64质量铁砧的天体进化至终局 - 将成就文本翻译添加至英文语言文件和特殊字符文件 - 在成就数据中注册无残留成就及其触发条件 * feat(advancement): 添加行星毁灭成就及触发器支持 - 新增PlanetDetonationTrigger用于行星毁灭事件的判定 - 在ExcavatorHandler中增加触发行星毁灭触发器的逻辑 - 在AdvancementLineHelper中集成planetDetonation方法方便创建该成就 - 在AnvilCraftAdvancement中添加efficiency成就分支,绑定行星毁灭触发器 - 更新语言文件,添加行星毁灭成就的标题与描述 - 注册PlanetDetonationTrigger触发器并完善其触发实现 - 新增efficiency成就JSON配置文件,定义触发条件及显示信息 * feat(advancement): 新增因行星坍缩死亡的成就触发器 - 添加了 PlanetaryCollapseDeathTrigger 触发器类及其数据结构 - 在 ModCriterionTriggers 中注册 planetary_collapse_death 触发器 - 在 AdvancementLineHelper 中新增 planetaryCollapseDeath 方法便于调用 - 在 AnvilCraftAdvancement 中添加 Cannon Fodder 成就,绑定行星坍缩死亡触发器 - 在语言文件中添加 Cannon Fodder 成就标题与描述的多语言支持 - 在 OverworldLikeEventListener 中监听行星坍缩死亡事件并触发相应成就 - 在 TriggerUtil 中实现 planetaryCollapseDeath 方法来触发成就判定 - 新增 Cannon Fodder 成就的 JSON 配置文件,包含父级与图标等信息 - 修改效率成就添加隐藏属性,改善游戏内成就展示体验 * feat(advancement): 新增黑洞和中子星终局星体成就 - TriggerUtil新增支持根据StellarTerminal.Kind触发星体演化成就 - CelestialEvolutionTrigger增加对终局类型的判定和对应触发方法 - AdvancementLineHelper新增celestialEvolution重载方法支持终局类型参数 - AnvilCraftAdvancement中增加黑洞和中子星分支成就定义和保存 - AdvancementLang添加黑洞与中子星成就名称及描述多语言支持 - 语言文件(en_us, en_ud)增加对应成就的描述和标题 - 新增黑洞和中子星成就JSON数据文件,定义触发条件和显示信息 * feat(damage): 新增天体接触伤害类型及独立标签支持 - 添加黑洞接触、恒星接触及行星接触三种新伤害类型 - 天体接触伤害采用独立类型以实现专属死亡提示 - 更新伤害标签,支持新伤害类型绕过护甲、抗性、击退等效果 - 修改重力控制器中伤害来源,替换为对应新天体接触伤害类型 - 保持星体及行星接触伤害原版燃烧和摔落效果表现不变 - 增加对应的语言文本显示新伤害的死亡描述信息 - 修正玩家攻击混入对行星接触伤害的判定,保持原摔落伤害一致性 - 新增相关资源数据文件,完善伤害类型和标签配置 * feat(advancement): 添加“夜晚来访”星接触死亡进度条件 - 新增 StarContactDeathTrigger 实现星接触死亡触发器 - 注册并初始化星接触死亡触发条件 ModCriterionTriggers.STAR_CONTACT_DEATH - AdvancementLineHelper 新增 starContactDeath 方法支持该触发器 - AnvilCraftAdvancement 新增“come_at_night”任务,使用星接触死亡触发器 - AdvancementLang 中添加“come_at_night”进度名称及描述文本 - OverworldLikeEventListener 监听星接触死亡事件触发进度 - TriggerUtil 新增 starContactDeath 方法简化触发调用 * feat(locale): 添加“come_at_night”成就的中英文描述 - 新增“advancements.anvilcraft.come_at_night”标题的本地化文本 - 新增“advancements.anvilcraft.come_at_night”描述的本地化文本 - 中文描述内容为“被星光笼罩” - 英文标题内容为“Showdown at Night”倒转样式 * feat(advancement): 添加“come_at_night”隐藏成就 - 创建新的隐藏成就“come_at_night” - 设置成就触发器为“star_contact_death” - 指定成就图标为“celestial_forging_anvil” - 定义成就的父级为“the_start” - 启用成就的遥测事件发送 --------- Co-authored-by: Pigeon_Nian <adove2005@163.com> * fix(celestial): 修复演化音效衰减与锻造界面恢复 (#5131) (#5132) - 将演化音乐归入唱片音量分类,并以单声道音源实现 64 格原生距离衰减。 - 保持音效与字幕的听距一致。 - 通过实时同步入口恢复锻造状态,避免重开界面时丢失正在锻造的进度。 * fix(building): 修复幻灵铁砧虚影撤销时重复返还物品 (#5134) - 撤销无掉落幻灵铁砧虚影时不再结算基础物品 - 保留实体铁砧与其他下落方块的资源结算 fixed #5133 * fix(item-splitter): 修复物品分配器掉落物超出堆叠上限 (#5136) 按物品实际堆叠上限拆分每个目标位置的掉落物,保留均分份额、余数、零动量和拾取延迟。 修复 #5135 * fix(button): 修复大红按钮遮挡边缘交互与按压动画 (#5141) - 使用实际命中位置进行服务端射线校验,修复按钮可见但底座中心被遮挡时无法按下的问题。 - 按住按钮后等待服务端确认再播放手部动画,并忽略已释放或已切换目标的过期确认。 - fixed #5138 * fix(storage-port): 修复服务端扫描仓储端口时崩溃 (#5140) - 优先使用原版 includeData 标志控制数据复制,避免服务端扫描读取客户端按键状态 - 保留 26.1 服务端中键克隆时的缓存、标记与流体数据 (cherry picked from commit d7c2f74) --------- Co-authored-by: PigeonNian <78527064+PigeonNian@users.noreply.github.com> Co-authored-by: Pigeon_Nian <adove2005@163.com>
fix(storage-port): 修复服务端扫描仓储端口时崩溃 (#5137)