世界生成管线

RTG 接管原版的地表生成。核心是 rtg.world.gen.ChunkProviderRTG (implements IChunkProvider),由 世界类型 在选到 RTG 世界类型时实例化。

关键类

类 文件 职责
ChunkProviderRTG rtg/world/gen/ChunkProviderRTG.java 区块提供器总控。provideChunk(cx, cy) 产出 Chunk
ChunkLandscape rtg/world/gen/ChunkLandscape.java 单个区块的地形高度场缓存
LandscapeGenerator rtg/world/gen/LandscapeGenerator.java 高度场到方块的转换
MapGenCavesRTG rtg/world/gen/MapGenCavesRTG.java 洞穴。逐群系读 caveDensity / caveFrequency
MapGenRavineRTG rtg/world/gen/MapGenRavineRTG.java 沟壑。逐群系读 ravineFrequency
GenLayerNoRivers rtg/world/gen/genlayer/GenLayerNoRivers.java 群系分布层,屏蔽原版河流
RiverRemover rtg/world/gen/genlayer/RiverRemover.java 清除原版河流群系
MapGenVillageRTG rtg/world/gen/structure/MapGenVillageRTG.java 村庄(逐群系读 allowVillages)
MapGenScatteredFeatureRTG rtg/world/gen/structure/MapGenScatteredFeatureRTG.java 散落地物

生成顺序

WorldTypeRTG.getChunkGenerator(world, options)
  └─ new ChunkProviderRTG(world, world.getSeed())
        └─ provideChunk(cx, cy)
            ├─ ChunkLandscape            逐列算地形高度
            │    └─ RealisticBiomeBase.terrain.generateNoise(simplex, cell, x, y, border, river)
            │         └─ riverized(height.added(...) + base, river)     ← FunctionalTerrainBase
            ├─ LandscapeGenerator         高度场 → 方块阵列
            ├─ Surface*.paintTerrain(...) 按群系铺顶层/填充/崖壁方块
            ├─ MapGenRavineRTG           沟壑
            ├─ MapGenCavesRTG            洞穴
            ├─ MapGenVillageRTG          村庄(allowVillages)
            └─ delayedDecorator           装饰(Deco*),挂在 ChunkEvent.Load 上延迟执行

ChunkProviderRTG 用一个 Acceptor<ChunkEvent.Load> delayedDecorator 把装饰阶段推迟到区块加载事件里,避免在生成线程上直接跑装饰。

装饰延迟

provideChunk 之外还有 decorateIfOtherwiseSurrounded(ichunkprovider, source, fromNewChunk)—— 只在区块四邻都已生成时才装饰,防止地形在边界处不连续。

装饰类在 rtg/world/biome/deco/ 下共 39 个 Deco* 文件: 根目录 26(25 个装饰器 + DecoBase)、collection/ 8(7 个组合 + DecoCollectionBase)、 helper/ 5(DecoHelper* 概率辅助类)。由各 RealisticBiome* 构造时用 addDeco(...) 追加,顺序有意义——每个群系页的「装饰数」列就是该群系 addDeco( 的出现次数(不含 addDecoCollection()。

常用装饰类:DecoBaseBiomeDecorations(群系基础装饰)、DecoTree、DecoShrub、 DecoBoulder、DecoFallenTree、DecoGrass、DecoFlowersRTG、DecoCactus、 DecoMushrooms、DecoPond、DecoPumpkin、DecoReed、DecoDeadBush、 DecoCobwebs、DecoDesertWell,以及宿主 mod 专用装饰 DecoEBTree / DecoEBRockSpire(Enhanced Biomes)、DecoHLTree(Highlands)、 DecoAbyssalCraftTree(AbyssalCraft)。

useRTGDecorations 为 false 时这些装饰全部跳过,只留原版装饰。

群系 ID 不变

RTG 不注册新的生物群系 ID。RealisticBiomeBase 构造时接收宿主 mod 的 BiomeGenBase 实例并沿用其 biomeID,所以存档、地图、结构定位全部兼容—— 变的只是该 ID 对应的地形、地表与装饰实现。 各群系包条目里的「基础群系」列就是这个被复用的 BiomeGenBase 字段名。

相关条目