Skip to content

[BUG] 新生成下界区块缺少层状结构,地表被填成对应群系的裸方块 #17

Description

@tlipoca-desu

现象

CoreSwap 启用后,下界新生成区块的基岩屋顶(顶部 y≈128)与基岩地板(底部 y≈0)这两层基岩没有生成,而是被填成了该区块对应的普通地形方块(下界岩 / 玄武岩等)。与原版区块交界处出现明显分界:

  • 图1(坐标 (7, 138, -251),y=138 下界顶部):左侧原版区块是一整层黑色基岩屋顶,右侧 CoreSwap 新生成区块的该位置没有基岩层,而是下界岩/玄武岩地形,两者交界清晰。
  • 图2(坐标 (-18, 6, -250),下界底部):左侧原版区块是一整层黑色基岩地板,CoreSwap 新生成区块的该位置没有基岩,而是普通地形方块

简单说:下界本应"上下各有一层基岩封层"(基岩顶 + 基岩底),CoreSwap 新生成区块里这两层基岩都被普通地形方块取代。从日志看,这是 CoreSwap 在下界绕过了 vanilla 的表面(buildSurface)处理导致的,不是用户环境问题(主世界地形生成正常,仅下界/末地受影响)。

游戏环境

Minecraft 1.20.1
Fabric Loader 0.19.3
Java 21.0.6.0 LTS
Windows 10 64bit (19041.6456)
AMD Ryzen 5 9600X (6C12T)
NVIDIA GeForce RTX 5060 Ti 16G
种子:4565066326920384869

Mod列表

coreswap 1.20.1-1.0.18
sodium 0.5.13+mc1.20.1
iris 1.7.6+mc1.20.1
fabric-api 0.92.11+1.20.1
modmenu 7.2.2
wthit 8.21.1
xaerominimap 26.4.2
xaeroworldmap 1.45.0
replaymod 1.20.1-2.6.23
minihud 0.27.1
malilib 0.16.3
badpackets 0.4.3

重现步骤

  1. 不带 CoreSwap(原版 Fabric 配置)生成世界,进入下界
  2. 分别飞到 y=128 以上(下界基岩屋顶上方)与 下界底部(y≈0 附近,基岩地板处),使该处地形被生成,保存退出。
  3. mods/ 里加上 coreswap-1.20.1-1.0.18.jar,重新启动。
  4. 确认日志出现 [BenchMod] CoreSwap replace mode: C++ worldgen active
  5. 重进该存档,向下界未加载方向飞行约 32 个区块左右的距离(视距32)。
  6. 原版区块与 CoreSwap 新生成区块的交界处停下,观察基岩屋顶 / 基岩地板(见附图 1、2)。

日志

原始日志见:https://mclo.gs/J2XHRym

[19:56:58] [Worker-Main-9/INFO]: [STDOUT]: [Mixin] buildSurface skipped chunk(-17,4)
[19:56:58] [Worker-Main-5/INFO]: [STDOUT]: [Mixin] buildSurface skipped chunk(-17,2)
[19:56:58] [Worker-Main-5/INFO]: [STDOUT]: [Mixin] buildSurface skipped chunk(-17,1)
[19:56:58] [Worker-Main-11/INFO]: [STDOUT]: [Mixin] buildSurface skipped chunk(-17,5)
...(约 29 行,coord 集中在 chunk(-17,z),即下界负坐标区)

补充分析(基于日志的推断,由Agent协助分析)

  • 这些负坐标 chunk 出现 buildSurface skipped,但没有对应的 populateNoise intercepted(主世界才有 populateNoise intercepted chunk(-8,-16))。这说明:主世界的地形生成被 mod 接管(所以打 intercepted),而下界的地形生成仍是 vanilla(所以不打 intercepted),但下界的表面处理(buildSurface)被跳过了
  • 下界的基岩屋顶(y≈128)与基岩地板(y≈0)恰好由 buildSurface(表面规则)负责铺设。跳过它之后,这两层基岩没有生成,露出了下方该区块对应的普通地形方块
  • 建议:让 CoreSwap 在非主世界维度(下界/末地)回退 vanilla 的表面处理,即仅在主世界跳过/接管 buildSurface,其余维度照常执行原版表面规则。

关于末地的推测:基于同一机制推断,末地(同为非主世界维度)的 buildSurface 表面规则很可能同样被跳过,导致悬浮岛屿缺少正常末地石表面层。但因后续加载 CoreSwap 时进入世界会反复崩溃 #16末地暂无法实测验证,此处仅作推测,需确认。

附图

Image Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions