地表基础类型

rtg/world/gen/surface/ 下共 400 个 .java 文件(find ... | wc -l = 400):

分组 数量
根目录共享地表 23(含 SurfaceBase)
群系包专属地表 374
群系包级共享 Surface<Pack>Base 3(SurfaceACBase / SurfaceEBBase / SurfaceFCBase)

23 + 374 + 3 = 400。374 个专属地表与 374 个群系严格 1:1: 逐包计数(排除那 3 个包级 Surface*Base)与地形、群系三项完全一致 (vanilla 59、enhancedbiomes 90、biomesoplenty 77、highlands 43、extrabiomes 28 ……)。

⚠️ 若直接把 surface/<pack>/ 下的文件数相加会得到 377(偏大 3), 差的正是 abyssalcraft / enhancedbiomes / flowercraft 各一个包级共享类。 地表包目录里没有 374 之外的「额外」地表类。

地表类负责在地形高度算完之后,决定每个格子上放什么方块—— 顶层方块、填充方块,以及山体崖壁上的石头/圆石混合。

核心:SurfaceBase

rtg.world.gen.surface.SurfaceBase。公开字段与方法:

成员 类型 用途
topBlockMeta byte 顶层方块的 data value
fillerBlockMeta byte 填充方块的 data value
SurfaceBase(BiomeConfig config, Block top, byte topByte, Block fill, byte fillByte) 构造 同时持有群系配置与两种方块
paintTerrain(blocks, metadata, i, j, x, y, depth, world, ...) 方法 实际铺方块
getTopBlock() Block 取顶层方块
getFillerBlock() Block 取填充方块

paintTerrain 的 depth 参数决定向下铺几层:顶层 1 格 + 填充层若干格。 SurfaceVanillaIcePlains 之类的实现会把 topBlock 同时当作崖壁方块传入, 形成「同一种石头铺满崖壁」的效果。

根目录共享地表(23,含 SurfaceBase)

以下 23 个即为 ls world/gen/surface/*.java 的全部内容:

类 用途
SurfaceBase 基类
SurfaceGeneric 通用铺放
SurfaceCanyon 峡谷
SurfaceDesert 沙漠
SurfaceDesertMountain 沙漠山地
SurfaceDesertOasis 沙漠绿洲
SurfaceDuneValley 沙丘谷地
SurfaceGrassCanyon 草地峡谷
SurfaceGrassland 草原
SurfaceGrasslandMix1 草原混排 1
SurfaceGrasslandMixBig 草原混排(大)
SurfaceIslandMountainStone 岛屿山体石头
SurfaceMarshFix 沼泽修正
SurfaceMesa 方山
SurfaceMountainPolar 极地山体
SurfaceMountainSnow 雪山
SurfaceMountainStone 山体石头
SurfaceMountainStoneMix1 山体石头混排
SurfacePolar 极地
SurfaceRedDesert 赤色沙漠
SurfaceRiverBOPCrag 河道礁岩(BOP Crag)
SurfaceRiverOasis 河道绿洲
SurfaceTundra 苔原

⚠️ 根目录没有 SurfaceBeach:全仓库带 Beach 的地表类只有 6 个,且全在包目录 (SurfaceVanillaBeach / SurfaceVanillaColdBeach / SurfaceVanillaStoneBeach / SurfaceATGGravelBeach / SurfaceATGSnowyGravelBeach / SurfaceLOMTropicalBeach), 根目录这 23 个里不含它。

与群系配置的联动

地表类把 BiomeConfig 引用透传给 SurfaceBase,于是 群系配置属性 里的 8 个 surface* 项可以覆盖默认方块:

  • surfaceTopBlock / surfaceTopBlockMeta → 顶层方块与 data value
  • surfaceFillerBlock / surfaceFillerBlockMeta → 填充方块
  • surfaceCliffStoneBlock / surfaceCliffStoneBlockMeta → 崖壁石头
  • surfaceCliffCobbleBlock / surfaceCliffCobbleBlockMeta → 崖壁圆石

useRTGSurfaces 为 false 时整个 RTG 地表被跳过,只用原版地表。

相关条目