伪世界空实现
基本信息
| 属性 | 值 |
|---|---|
| 文件 | 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,没有任何附加逻辑 ——
属于无意义覆写(可能是反编译产物)。
关联
- MapWorld - 使用这两个类
- MapWorldRTG - RTG 变体
- ForgeAmidst -
getDataDir()来源