世界生成管线
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 字段名。