地表基础类型
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 valuesurfaceFillerBlock/surfaceFillerBlockMeta→ 填充方块surfaceCliffStoneBlock/surfaceCliffStoneBlockMeta→ 崖壁石头surfaceCliffCobbleBlock/surfaceCliffCobbleBlockMeta→ 崖壁圆石
useRTGSurfaces 为 false 时整个 RTG 地表被跳过,只用原版地表。