Powerful overseer. - #4354
Conversation
Reason: script execution via -e/-c flag Reply |
Reason: Security scan — [HIGH] Pipe to interpreter: curl | python3: Command pipes output from 'curl' directly to interpreter 'python3'. Downloaded content will be executed without inspection. Reply |
|
All verifications complete. Compile-level references check out (all 16 series blocks exist on the target branch). Here is the review. 代码审查摘要 — PR #4354操作: edited 🔴 关键
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| resolved #1582(监督者加强) | ✅ | 4 级金字塔、底座扩展、特性区分、/overseer 命令 |
| 一个底座方块对应一个区块 | ✅(边界 ±1 偏移 bug 除外) | LoadChunkData.createLoadChunkData + scanPyramidBase |
| 最高 4 级 | ✅ | TIER_RADIUS {1,2,3,4}、MAX_LEVEL=4 |
| 铁/金/绿宝石/钻石升级但不加载 | ✅ | tier_0 tag + blockTier >= 1 过滤 |
| 皇家钢 = 强加载 + 随机刻 | ✅ | DEFAULT=0 |
| 浮霜 = 强加载不随机刻 | ✅ | FROST=NO_RANDOM_TICK |
| 下界合金/余烬 = +火焰蔓延 | ✅ | FIRE |
| 多相物质 = 不随机刻 + 火焰蔓延 | ✅ | MULTIPHASE |
| 超限合金 = 自然刷新 + 刷怪笼刷新 | TRANSCENDIUM 额外禁用了随机刻(描述未提) | |
| /overseer 显示等级/区块数/总数 | 总数跨维度统计与列表维度不一致 |
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
OverseerBlockEntity.tick() |
敲掉顶部方块→原样补回→断言重新 register(复现 stale 状态 bug) | 🔴 |
LoadChunkData.createLoadChunkData() |
监督者摆放在 x/z mod 16 ∈ {13,14,15,0,1,2} 边界位置,断言各底座方块实际区块被加载 | 🔴 |
ChunkFeatureManager |
两个维度同坐标区块,断言特性不串扰 | 🟡 |
ServerLevelRandomTickMixin |
浮霜/皇家钢同区块重叠时随机刻行为(确认 any-source-wins 是否符合预期) | 🟡 |
BaseSpawnerMixin / ChunkMapMixin |
无玩家在场时刷怪笼是否持续刷怪;玩家 >128 但 <2048 区块时自然刷新 | 🟡 |
结论: REQUEST_CHANGES — 架构与方向正确,但存在两个必须修复的逻辑缺陷:结构重建后不重新注册(静默丢失加载),以及区块边界处底座→区块映射错位。另有跨维度串扰与描述不一致问题建议一并确认。
由 Hermes Agent 审查
代码审查摘要 — PR #4354操作: opened 整体架构清晰: 🔴 关键
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| resolved #1582 | 无法从 diff 验证 issue 内容 | |
| 一个底座方块对应一个区块 | ✅ | createLoadChunkData 方块偏移→区块偏移(区块边缘 ±1 漂移见警告) |
| 最高 4 级 | ✅ | TIER_RADIUS {1,2,3,4}、MAX_LEVEL=4、tooltip 更新 |
| 更多方块可作底座 | ✅ | overseer_base_tier_0..3 四个 tag |
| 铁/金/绿宝石/钻石提升等级但不加载 | ✅ | blockTier >= 1 过滤,tier-0 不产生映射 |
| 皇家钢:强加载+随机刻 | ✅ | SourceFlags.DEFAULT |
| 浮霜:强加载、不随机刻 | ✅ | FROST + ServerLevelRandomTickMixin |
| 下界合金/余烬:+随机刻+火焰蔓延 | ✅ | FIRE |
| 多相物质:不随机刻+火焰蔓延 | ✅ | MULTIPHASE |
| 超限合金:自然刷新+刷怪笼刷新(2048 区块内) | ✅ | TRANSCENDIUM + ChunkMapMixin/DistanceManagerMixin/MobMixin 等(附赠禁用随机刻,待确认) |
结论: REQUEST_CHANGES — 核心机制与版本描述一致,但 ChunkFeatureManager 无维度隔离、removeAll 跨维度清空 + BE 不重注册这两个问题会让多维度使用场景(本模组的常态)出现区块泄漏和加载失效,建议修复后再合并。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
LevelLoadManager.removeAll |
下界无玩家卸载后,主世界监督者仍保持加载/可解除加载 | 🔴 |
ChunkFeatureManager.* |
主世界 + 下界同坐标各放一个监督者,验证 feature 不串维度 | 🔴 |
OverseerBlockEntity.tick |
拆掉上部方块再复原(底座不变),验证重新加载 | 🟡 |
LoadChunkData.createLoadChunkData |
监督者放区块边界处,验证加载区块与底座方块实际所在区块一致 | 🟡 |
ServerLevelRandomTickMixin |
浮霜与皇家钢混合底座,验证内圈核心随机刻行为 | 🟡 |
OverseerCommand list |
多维度监督者时总数与分维度列表口径一致 | 🟢 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
💾 Self-improvement review: Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
交叉引用验证完毕,信息足够。整理审查意见。 代码审查摘要 — PR #4354操作: converted_to_draft(按流程仅报严重问题,comment 级别) 🔴 关键
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 一个底座方块对应一个区块 | ✅ | scanPyramidBase → BlockOffsetMapping(dx,dz) → ChunkPos(center+dx, center+dz) |
| 监督者最高 4 级 | ✅ | TIER_RADIUS={1,2,3,4}、MAX_LEVEL=4 |
| 更多方块可作为底座 | ✅ | 4 个 overseer_base_tier_N tag |
| 铁/金/绿宝石/钻石提升等级但不加载 | ✅ | tier_0 tag;仅 blockTier>=1 加入 offsetMappings |
| 皇家钢强加载+随机刻 | ✅ | DEFAULT=0 → 不跳过随机刻 |
| 浮霜强加载不运算随机刻 | ✅ | FROST + ServerLevelRandomTickMixin |
| 下界合金/余烬强加载+随机刻+火焰蔓延 | ✅ | FIRE + ServerLevelFireSpreadMixin |
| 多相物质强加载+不随机刻+火焰蔓延 | ✅ | MULTIPHASE |
| 超限合金强加载+自然刷新+刷怪笼刷新(2048 区块) | ✅ | TRANSCENDIUM + NaturalSpawner/ChunkMap/DistanceManager/Mob/BaseSpawner mixins |
| /overseer 显示等级、加载区块数、总数 | 等级与单监督者区块数 ✅;总数跨维度串数(见 #5) |
结论: COMMENT — 整体设计与声称一致,实现质量良好。建议转正式 review 前优先处理 🔴#1(塔身恢复后不重新注册)和
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
分析完成。所有交叉引用验证完毕,现在输出审查意见。 代码审查摘要 — PR #4354操作: synchronize 🔴 关键
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 解决 #1582,重写加载方式 | ✅ | LoadChunkData(新)/ LevelLoadManager / ChunkFeatureManager |
| 一个底座方块对应一个区块 | 偏移映射实现(见警告),语义需确认 | |
| 监督者最高 4 级 | ✅ | TIER_RADIUS {1,2,3,4},tooltip "max 4 layers, 9x9 range" |
| 更多方块可作底座 | ✅ | tier 0-3 tags(铁/金/钻/绿宝石 → 皇家/浮霜 → 下界合金/余烬/多相 → 超限) |
| 铁金绿钻提升等级但不加载 | ✅ | getBlockTier >= 1 过滤 + getBlockSourceFlags |
| 皇家钢默认加载(强加载+随机刻) | DEFAULT flags — 依赖强加载区块原生 tickChunk 的假设(见警告) | |
| 浮霜强加载不随机刻 | ✅ | FROST=NO_RANDOM_TICK + ServerLevelRandomTickMixin |
| 下界合金+余烬:随机刻+火焰蔓延 | ✅ | FIRE flag + ServerLevelFireSpreadMixin |
| 多相物质块:不随机刻+火焰蔓延 | ✅ | MULTIPHASE flags |
| 超限合金块:自然刷新+刷怪笼刷新(2048区块内) | ❌ | 刷怪笼 ✅(BaseSpawnerMixin);自然刷新 🔴 失效(ThreadLocal 未 set) |
| /overseer 显示等级、加载区块数、总数 | ✅ | OverseerCommand + getOverseerChunkCount + getAllOverseerForcedChunkCount |
结论: REQUEST_CHANGES — 必须修复 🔴(CURRENT_SPAWNING_DIMENSION 从未 set 导致超限合金块的自然刷新特性静默失效),并确认强加载区块随机刻的运行时行为;其余警告项请逐条确认。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
OverseerBlockEntity.tick |
跨维度同坐标监督者并存;结构破坏后 /overseer 显示 | 🔴 |
ServerLevelRandomTickMixin |
皇家钢 vs 浮霜区块随机刻差异;randomTickSpeed=0 游戏规则 | 🔴 |
ChunkFeatureManager 自然刷怪链路 |
超限合金块区块在玩家 >128 块外是否刷怪、怪物防消失 | 🔴 |
LevelLoadManager.forceChunk |
两个监督者重叠加载同一区块的增减计数 | 🟡 |
LoadChunkData.createLoadChunkData |
混合底座(tier0 填充 + tier1 加载)的区块集合与 flags | 🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
分析完成。以下是审查意见。 代码审查摘要 — PR #4354操作: synchronize 架构总览
🔴 关键
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 一个底座方块对应一个区块 | ✅ | scanPyramidBase → BlockOffsetMapping(dx,dz,...) → chunk 偏移 |
| 监督者最高 4 级 | ✅ | TIER_RADIUS={1,2,3,4}、MAX_LEVEL=4、tooltip "max 4 layers, 9x9 range" |
| 更多方块可作为底座 | ✅ | overseer_base_tier_0..3 标签(铁/金/钻/绿宝石 + 系列方块 + 下界合金 + 多相 + 超限合金) |
| 铁/金/绿宝石/钻石提升等级但不加载 | ✅ | blockTier>=1 才加入 offsetMappings,tier_0 方块只过 isTierComplete |
| 皇家钢默认加载(强加载+随机刻) | ✅ | SourceFlags.DEFAULT=0 → 不跳过随机刻 |
| 浮霜强加载但不运算随机刻 | ✅ | FROST=NO_RANDOM_TICK + ServerLevelRandomTickMixin |
| 下界合金+余烬:随机刻+火焰蔓延 | ✅ | FIRE=ALLOW_FIRE_SPREAD(不含 NO_RANDOM_TICK)+ ServerLevelFireSpreadMixin |
| 多相物质:不随机刻+火焰蔓延 | ✅ | MULTIPHASE=NO_RANDOM_TICK|ALLOW_FIRE_SPREAD |
| 超限合金:自然刷新+刷怪笼刷新(玩家 2048 区块内) | 刷怪笼 ✅(BaseSpawnerMixin);自然刷怪 ❌(CURRENT_SPAWNING_DIMENSION 从未 set,DistanceManagerMixin 失效);despawn 距离 ✅(MobMixin) |
|
/overseer 命令显示等级/区块数/总数 |
✅ | OverseerCommand + getOverseerChunkCount/getAllOverseerForcedChunkCount |
| resolved #1582 | ✅ | 功能重做方向一致(issue 内容无法从 diff 验证) |
结论: REQUEST_CHANGES — 两个关键问题:① 超限合金"自然刷怪 2048 区块扩展"因 CURRENT_SPAWNING_DIMENSION 从未赋值而整体失效(功能声称未落地);② 监督者上部方块破坏后修复无法恢复区块加载(用户可见的恢复性 bug)。修复后建议实测验证:超限合金底座上无玩家(但 2048 区块内)时怪物是否自然刷新、监督者 MID/TOP 破坏再修复后是否恢复强加载。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
OverseerBlockEntity.tick |
MID/TOP 方块破坏→修复后注册恢复;底座方块替换为同 tier/flags 方块(hash 不变不重复注册);tier_0 铁底座 4 层 vs royal 4 层的加载范围差异 | 🔴 |
ChunkFeatureManager 特性聚合 |
同一区块被 frost+royal 重叠加载 → 随机刻被跳过;ember+royal 重叠 → 火焰允许;多维度同坐标不串扰 | 🔴 |
LevelLoadManager.forceChunk 引用计数 |
两个监督者重叠加载同一区块,逐个移除 → 最后一个移除才 unforce | 🟡 |
BaseSpawnerMixin |
超限合金区块内无玩家时刷怪笼激活;royal 区块内刷怪笼保持原版行为 | 🟡 |
ServerLevelRandomTickMixin |
重入后调度刻/BE tick 仍执行;游戏规则 randomTickSpeed=0 时不干预 | 🟢 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
|
||
| import dev.dubhe.anvilcraft.api.world.load.ChunkFeatureManager; | ||
| import net.minecraft.world.level.BaseSpawner; | ||
| import net.minecraft.core.BlockPos; |
There was a problem hiding this comment.
Wrong lexicographical order for 'net.minecraft.core.BlockPos' import. Should be before 'net.minecraft.world.level.BaseSpawner'.
Reason: Security scan — [HIGH] Pipe to interpreter: curl | python3: Command pipes output from 'curl' directly to interpreter 'python3'. Downloaded content will be executed without inspection. Reply |
|
All analysis complete. Here's my review: 代码审查摘要 — PR #4354操作: synchronize 🔴 关键问题1.
|
| 声称 | 状态 | 证据 |
|---|---|---|
| resolved #1582(监督者加强建议) | ✅ | 1底座=1区块、4级上限、更多底座、分级效果、/overseer 命令均在 diff 中实现 |
| 一个底座方块对应一个区块 | ✅ | BlockOffsetMapping(dx,dz) 直接作为区块偏移进入 createLoadChunkData |
| 最高 4 级 | ✅ | TIER_RADIUS = {1,2,3,4} + MAX_LEVEL = 4 |
| 更多方块可作为底座 | ✅ | overseer_base_tier_0..3 四个新 tag |
| 铁/金/绿宝/钻石提级不加载 | ✅ | tier-0 块 blockTier>=1 门控被排除出 mappings |
| 皇家钢=强加载+随机刻 | ✅ | DEFAULT flags(0),随机刻不跳过 |
| 浮霜=强加载不随机刻 | ✅ | FROST = NO_RANDOM_TICK |
| 下界合金/余烬=+随机刻+火焰蔓延 | ✅ | FIRE = ALLOW_FIRE_SPREAD |
| 多相=不随机刻+火焰蔓延 | ✅ | MULTIPHASE = NO_RANDOM_TICK|ALLOW_FIRE_SPREAD |
| 超限=自然刷新+刷怪笼刷新 | 实现齐全但整条自然刷新链路因 CURRENT_SPAWNING_DIMENSION 从未赋值而失效(见 🔴1) |
|
| /overseer 显示等级、加载区块数、总数 | ✅ | OverseerCommand + getOverseerChunkCount + getAllOverseerForcedChunkCount |
结论: REQUEST_CHANGES — 架构重构方向清晰、删除与生命周期处理干净,但超限合金块核心卖点"生物自然刷新"当前完全不可用(ThreadLocal 未赋值导致 spawn 候选链路全断),且修复不能只靠补一个 set()(getSpawnCandidateChunks 的调用时机在 spawnForChunk 之前),需要调整维度上下文的传递方式后再合入。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
| 超限合金块自然刷新链路 | 玩家远离 128+ 格(2048 区块内)时超限金字塔区块仍生成生物;修复 ThreadLocal 后验证 getSpawnCandidateChunks 包含目标区块 |
🔴 |
ServerLevelRandomTickMixin |
浮霜/多相/超限区块随机刻停用且方块实体 tick 不受影响;皇家钢区块随机刻正常 | 🟡 |
引用计数 forceChunk |
两个监督者共享区块,先后拆除,确认最后一个释放时区块才真正卸载 | 🟡 |
| 监督者结构失效/恢复 | 拆装 MID/TOP 监督者方块后,金字塔配置不变时加载是否恢复(当前会失败) | 🔴 |
| 虫洞稳定器 | 3x3 加载区随机刻行为变更确认(现为开启) | 🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
|
两个关键问题均已确认。审查完成,输出审查意见。 代码审查摘要 — PR #4354(synchronize: Powerful overseer)操作: synchronize 已通过 🔴 关键问题
|
| 声称 | 状态 | 对应实现 |
|---|---|---|
| 一个底座方块对应一个区块 | ✅(近似) | offsetMappings → centerChunk + (dx,dz),中心区块恒加载 |
| 监督者最高 4 级 | ✅ | MAX_LEVEL=4、TIER_RADIUS={1,2,3,4} |
| 更多方块可作为底座 | ✅ | 4 个 tier tag 覆盖铁/金/钻/绿宝石/皇家钢/浮霜/下界合金/余烬/多相/超限 |
| 铁/金/绿宝石/钻石提升等级但不加载 | ✅ | blockTier >= 1 才生成 mapping,tier-0 仅作结构 |
| 皇家钢=强加载+随机刻 | ✅ | DEFAULT flags |
| 浮霜=强加载、无随机刻 | ✅ | FROST = NO_RANDOM_TICK |
| 下界合金+余烬=强加载+随机刻+火焰蔓延 | ✅ | FIRE = ALLOW_FIRE_SPREAD(随机刻为默认开启) |
| 多相物质=强加载、无随机刻、火焰蔓延 | MULTIPHASE 标志齐全,但无随机刻则火焰不会扩散,火焰蔓延实际无效 |
|
| 超限合金=强加载+自然刷新+刷怪笼刷新 | TRANSCENDIUM 标志齐全,但 CURRENT_SPAWNING_DIMENSION 未赋值 → 3 处 mixin 死代码,功能不完整(见 🔴#1) |
|
/overseer 显示等级/加载数/总数 |
✅ | OverseerCommand + getOverseerChunkCount + getAllOverseerForcedChunkCount |
结论: REQUEST_CHANGES — 架构重构方向正确、迁移干净,但存在两个功能性问题需修复:① 自然刷新特性因未赋值的 ThreadLocal 而半失效(3 处 mixin 死代码);② 监督者结构破坏后按原样修复时区块加载不会重新注册。
🧪 测试建议
| 被测目标 | 推荐测试场景 | 优先级 |
|---|---|---|
OverseerBlockEntity.tick |
敲掉 MID 格 → 补回同结构 → 断言 chunk 重新强加载(复现 🔴#2);纯 tier-0 底座 4 级 → 仅 1 区块 | 🔴 |
LevelLoadManager.forceChunk |
两个监督者共享同一区块 → 移除其一 → 区块仍加载;全部移除 → 卸载 | 🔴 |
ChunkFeatureManager |
不同维度同坐标注册互不干扰;同区块多源 skip/allow 聚合语义 | 🟡 |
ServerLevelRandomTickMixin |
浮霜区块:随机刻被跳过但方块刻/流体刻/实体刻仍执行 | 🟡 |
WormholeStabilizerHandler |
虫洞加载区随机刻行为变化确认(有意 or 回归) | 🟡 |
LoadChunkData.createLoadChunkData |
混合材质底座的 flag 并集、中心区块恒加载、偏移映射边界(监督者位于区块边缘) | 🟡 |
由 Hermes Agent 审查
|
💾 Self-improvement review: Patched references/chunk-loading-review-patterns.md in skill 'minecraft-mod-pr-review' (1 replacement). · Patched SKILL.md in skill 'minecraft-mod-pr-review' (1 replacement). |
Uh oh!
There was an error while loading. Please reload this page.