MapWorld

基本信息

属性 值
类名 sedridor.forgeamidst.MapWorld
文件 src/main/java/sedridor/forgeamidst/MapWorld.java
行数 29
继承 extends net.minecraft.world.WorldServer
启用版本 Minecraft 1.7.10

功能

伪世界(dummy world) —— 让 Amidst 在不生成真实区块的前提下 调用原版地形生成器取得生物群系数据。

这是整个 mod 的核心技巧:借 WorldServer 的 GenLayer 管线, 但用空实现吞掉一切存档与写盘。

构造器

public MapWorld(MinecraftServer server, long seed, WorldType worldType,
                WorldSettings par5WorldSettings) {
    super(server, new MapWorldSaveHandler(), "ForgeAmidst", 0, par5WorldSettings,
          server.theProfiler);
    ForgeAmidst.setWorld((World) this);
    ForgeAmidst.biomeGen = ForgeAmidst.getInstance().getGenLayers(0);
    ForgeAmidst.biomeIndexLayer = ForgeAmidst.getInstance().getGenLayers(1);
}
参数 值
saveHandler MapWorldSaveHandler(见下)
世界名 "ForgeAmidst"(硬编码)
dimensionId 0(固定主世界)

⚠️ 构造后立刻把 this 写回 ForgeAmidst 的静态 world, 并取两层 GenLayer:getGenLayers(0) → biomeGen、 getGenLayers(1) → biomeIndexLayer。

⚠️ 构造器里有 System.out.println(非 logger)打印 "MapWorld: " + seed + " " + worldType.getWorldTypeName()。 这是反编译残留风格的调试输出(见 README 「Clean up decompiled artifacts (WIP)」)。

createChunkProvider()

返回 new MapWorldChunkProvider(this, ichunkloader, chunkGenerator):

组件 来源
IChunkLoader this.saveHandler.getChunkLoader(this.provider)
IChunkProvider this.provider.createChunkGenerator()

即读取器用自己造的空存档处理,生成器用真实地形生成管线。

配套的「空实现」策略

类 作用 空实现内容
MapWorldChunkProvider 区块提供 safeSaveExtraChunkData / safeSaveChunk / populate 全空;saveChunks 恒返回 true
MapWorldSaveHandler 存档处理 loadWorldInfo 返回 null;4 个 save/get 方法全空

⚠️ MapWorldSaveHandler 的存档目录是 new File(ForgeAmidst.getDataDir(), "config/forgeamidst"), 世界子目录名 "MAPWORLD",第三参 false(不压缩)。 ⚠️ 拼上 "config/forgeamidst" 后实际路径为 <游戏根>/config/forgeamidst/MAPWORLD —— 而 ForgeAmidst 的 mcDataDir 取的是游戏根目录(config 的父级)。

⚠️ 两个变体

类 何时成为主世界
MapWorld(本类) 总是 —— 构造即 setWorld(this)
MapWorldRTG 仅当 worldType 不是 "RTG" 或 getWorld() == null

即 RTG 模式下两者会竞争 ForgeAmidst.world 的归属。

关联