地形与地表
基本信息
| 属性 | 值 |
|---|---|
| 地形基类 | rwg.terrain.TerrainBase(src/main/java/rwg/terrain/,共 19 个文件 = 1 基类 + 18 实现) |
| 地表基类 | rwg.surface.SurfaceBase(src/main/java/rwg/surface/,共 21 个文件 = 1 基类 + 20 实现,含 river/SurfaceRiverOasis) |
| 噪声工具 | src/main/java/rwg/util/ 共 11 个类(NoiseGenerator 接口 + Perlin / OpenSimplex 两套实现、CellNoise、CliffCalculator、SnowheightCalculator 等) |
| 组合方式 | 每个写实群系各自持有一个 TerrainBase 与一个 SurfaceBase 字段,在构造函数里 new 出来 |
功能
一、地形:决定「地表有多高」
每个写实群系在构造时指定一个 TerrainBase 子类,生成器逐列调用
rNoise(perlin, cell, x, y, ocean, border, river) 求高度值,再取整写入方块数组。
RealisticBiomeBase 的默认实现直接返回常量 63f(rwg/biomes/realistic/RealisticBiomeBase.java:191-193),
所有实际群系都重写了它。
地形实现清单(src/main/java/rwg/terrain/,19 个文件):
| 类别 | 类 |
|---|---|
| 平原 / 高地 | TerrainGrasslandFlats、TerrainHighland、TerrainHilly |
| 丘陵 / 山地 | TerrainGrasslandHills、TerrainGrasslandMountains、TerrainMountain、TerrainMountainRiver、TerrainMountainSpikes、TerrainSwampMountain |
| 沙丘 / 沙谷 | TerrainDunes、TerrainDuneValley |
| 特殊地形 | TerrainCanyon、TerrainMesa、TerrainMarsh、TerrainSwampRiver、TerrainPolar、TerrainFlatLakes |
| 兼容辅助 | TerrainSmallSupport(供第三方群系联动使用) |
TerrainGrasslandHills、TerrainHighland、TerrainCanyon 等带参数的类,其高度/宽度常量直接写在各写实群系
的构造调用中,例如 new TerrainHighland(6f, 120f, 65f, 150f)
(rwg/support/SupportCC.java:27)、new TerrainCanyon(true, 35f, 160f, 60f, 40f, 69f)
(rwg/support/SupportBOP.java 中 canyon 条目)。
二、地表:决定「地表长什么样」
SurfaceBase 子类的 paintTerrain(...) 在方块数组上做替换,把噪声堆出的石头换成地表层。
RealisticBiomeSupport 允许一个第三方群系挂载多个 SurfaceBase(数组形式构造器,
rwg/support/RealisticBiomeSupport.java:27-35),并按顺序全部执行(RealisticBiomeSupport.java:72-75)。
基类 RealisticBiomeBase.rReplace 给出了一份可直接读出的默认铺层规则
(rwg/biomes/realistic/RealisticBiomeBase.java:195-216):
- 从
k = 255向下扫描到-1 - 遇到
Blocks.air即把depth置为-1(表示已出露地表) - 遇到
Blocks.stone则depth++;depth == 0(紧贴地表的第一层石头)时:k < 62换成Blocks.dirt- 否则换成
Blocks.grass
0 < depth < 6的石头换成Blocks.dirt(即地表下最多 6 格泥土层)
数值
| 数值名 | 值 | 行号 |
|---|---|---|
| 基类默认地形高度 | 63 | RealisticBiomeBase.java:192 |
| 基类默认草/土分界 Y | 62(k < 62 用泥土,否则用草) |
RealisticBiomeBase.java:203-207 |
| 基类默认泥土层厚度 | 6 | RealisticBiomeBase.java:208-210 |
| 地形实现类数量 | 18(terrain/ 19 文件 - TerrainBase) |
src/main/java/rwg/terrain/ |
| 地表实现类数量 | 20(surface/ 21 文件 - SurfaceBase) |
src/main/java/rwg/surface/ |
交互
无玩家直接交互。地形/地表类只被生成器在服务端调用,参数由各写实群系在构造时写死
(例:new SurfacePolar(Blocks.snow, Blocks.snow),rwg/biomes/realistic/land/RealisticBiomePolar.java:30)。