MapWorldRTG
基本信息
| 属性 | 值 |
|---|---|
| 类名 | sedridor.forgeamidst.MapWorldRTG |
| 文件 | src/main/java/sedridor/forgeamidst/MapWorldRTG.java |
| 行数 | 48 |
| 继承 | extends net.minecraft.world.WorldServer |
| 启用版本 | Minecraft 1.7.10 |
功能
MapWorld 的 RTG 专用变体。RTG(Realistic Terrain Generation)
不走原版 GenLayer 管线,而是自带地形生成器,
因此需要单独的伪世界来适配。
关键差异:条件式 setWorld
if (!worldType.getWorldTypeName().equals("RTG") || ForgeAmidst.getWorld() == null) {
ForgeAmidst.setWorld((World) this);
ForgeAmidst.biomeGen = ForgeAmidst.getInstance().getGenLayers(0);
ForgeAmidst.biomeIndexLayer = ForgeAmidst.getInstance().getGenLayers(1);
}
⚠️ 与 MapWorld 的核心区别:本类有条件地占用全局 world,
而 MapWorld 无条件占用。
| 条件 | 是否 setWorld |
|---|---|
worldType ≠ "RTG" |
是 |
worldType == "RTG" 且 getWorld() == null |
是 |
worldType == "RTG" 且 getWorld() != null |
否(保持原 world) |
即:在 RTG 模式下优先保留已存在的 world, 避免 RTG 伪世界把原版伪世界顶掉。
⚠️ 条件里的字符串 "RTG" 是硬编码字面量比较
worldType.getWorldTypeName(),不是枚举比较。
WorldType 枚举里没有 RTG 项 —— RTG 通过自定义 WorldType
(名字为 "RTG")注入。所以这里必须用字符串比。
updateGenLayers(GenLayerRiverMixWrapper)
被 Transformer 以 ASM 注入调用。
CorePlugin 的
TransformerExclusions 排除了 sedridor.forgeamidst,
所以本类自身不会被自己的 transformer 重复改写。
注入方先调 climateControl.DimensionManager.riverLayerWrapper(int) 拿到
GenLayerRiverMixWrapper,再传给本方法。
构造器其余部分
与 MapWorld 相同:
| 参数 | 值 |
|---|---|
saveHandler |
new MapWorldSaveHandler() |
| 世界名 | "ForgeAmidst" |
dimensionId |
0 |
同样有 System.out.println("MapWorld: " + seed + …) 的调试输出
(注意打印前缀是 "MapWorld: " 而非 "MapWorldRTG: " —— 反编译残留)。
⚠️ RTG 是软依赖
ForgeAmidst 的 dependencies 是
after:climatecontrol;after:RTG(软),
rtgFound 仅由 Loader.isModLoaded("RTG") 置位。
即没装 RTG 也能启动,MapWorldRTG 只是永远不被选中。
它不 import RTG 的任何类,因此编译期无依赖。
关联
- MapWorld - 无条件
setWorld的原版变体 - Transformer - 调用
updateGenLayers的注入方 - BiomeProviderRTG - RTG 生物群系桥
- ForgeAmidst - 静态
world/rtgFound宿主 - Realistic Terrain Generation - 软依赖(已登记未成文)