伪世界空实现

基本信息

属性 值
文件 src/main/java/sedridor/forgeamidst/ 下 2 个类
行数 MapWorldChunkProvider 45 / MapWorldSaveHandler 42
启用版本 Minecraft 1.7.10

支撑 MapWorld 伪世界的两个「空实现」类。 二者的共同目的:让 WorldServer 的完整管线跑起来,但一概不落盘、不做真实生成。

MapWorldChunkProvider

项 值
继承 extends ChunkProviderServer implements IChunkProvider
Logger private static final Logger logger = LogManager.getLogger();(无参,非具名)

构造器

public MapWorldChunkProvider(WorldServer, IChunkLoader, IChunkProvider)

三个参数直接上抛 super(worldServer, ichunkloader, ichunkprovider) —— 即用真实地形生成器,但套上自己的存档读取层。

被掏空的 4 个方法

方法 实现
safeSaveExtraChunkData(Chunk) 空
safeSaveChunk(Chunk) 空
populate(IChunkProvider, int, int) 空
saveChunks(boolean, IProgressUpdate) 恒 return true

⚠️ populate 为空意味着不做任何地形装饰(树、矿脉、结构全跳过)—— Amidst 只需生物群系,不需要装饰物。

⚠️ saveChunks 恒返回 true = 「保存成功」, 即使什么都没写。调用方无法通过返回值察觉未落盘。

⚠️ makeString() 固定返回 "MapWorldChunkProvider"(调试用标识)。

⚠️ 私有 logger 字段在本类中未被使用(反编译残留)。

MapWorldSaveHandler

项 值
继承 extends AnvilSaveHandler implements ISaveHandler

构造器

super(new File(ForgeAmidst.getDataDir(), "config/forgeamidst"), "MAPWORLD", false);
参数 值
存档根 new File(ForgeAmidst.getDataDir(), "config/forgeamidst")
世界子目录 "MAPWORLD"
压缩 false

⚠️ ForgeAmidst.getDataDir() 是游戏根目录(ForgeAmidst 的 preInit 取 getModConfigurationDirectory().getParentFile()), 所以实际路径是 <游戏根>/config/forgeamidst/MAPWORLD。

⚠️ 目录名 MAPWORLD 是全大写,与 modid forgeamidst、 世界名 "ForgeAmidst" 三者都不同。

被掏空的方法

方法 实现 危险度
loadWorldInfo() return null ⚠️ 返回 null 而非空实现
saveWorldInfoWithPlayer(WorldInfo, NBTTagCompound) 空 低
saveWorldInfo(WorldInfo) 空 低
getSaveHandler() return null ⚠️ 同上
flush() 空 低
getWorldDirectory() super.getWorldDirectory() 唯一正常转发

⚠️ 两个方法返回 null(loadWorldInfo、getSaveHandler)。 若原版 WorldServer 生命周期中任何环节解引用它们,会直接 NullPointerException。 这是「反编译版本 + WIP 清理」状态下的真实脆弱点 (README 自述 Clean up decompiled artifacts (WIP))。

⚠️ getWorldDirectory() 覆写后只是调 super,没有任何附加逻辑 —— 属于无意义覆写(可能是反编译产物)。

关联