Realistic Terrain Generation
GTNH 的地形生成模组。只做一件事:接管原版的地表生成,把「地形高度 → 地表方块 → 装饰」 三层全部换掉,让平原、丘陵、山地、峡谷、沙漠这些地貌有连续的高度变化, 而不是原版那种按生物群系硬切的台阶。
它不注册方块、不注册物品、不注册实体、不做矿脉、不新增结构。
它也不注册新的生物群系 ID——而是沿用宿主 mod 原有的 BiomeGenBase,
只替换该群系对应的地形/地表/装饰实现。
| 项目 | 值 |
|---|---|
| modid | RTG(全大写;gradle.properties 的 modId 与 rtg/RTG.java:51 的 @Mod 均为字面量 RTG) |
| 显示名 | Realistic Terrain Generation |
| 源仓库 | /Users/evlos/a/mirror/Realistic-Terrain-Generation/(GTNH fork) |
| 源 commit | dc71af0(2026-07-05 11:50:25 +0200) |
| Minecraft | 1.7.10(minecraftVersion) |
| Forge | 10.13.4.1614(forgeVersion) |
| Java 包根 | rtg(modGroup,小写,与 modid 大小写不同) |
| 加载方式 | 自定义 WorldType,无 coremod、无 mixin(usesMixins = false、coreModClass 为空) |
| 作用维度 | 仅维度 0(主世界)。下界 / 末地 / 其它 mod 维度走原版 |
| 主源文件数 | 1915 个 .java(无 kotlin / scala / groovy) |
语言构成
find -name '*.java' | wc -l 实测 1915,其余为
.cfg 58 个、.properties 4 个、.txt 1 个。没有 kotlin、scala 或 groovy 源文件。
群系(374)
RTG 共有 374 个群系,分属 25 个宿主 mod 群系包。 每个群系由一对类定义:
rtg.api.biome.<pack>.config.BiomeConfig<Prefix><Name>—— 配置面rtg.world.biome.realistic.<pack>.RealisticBiome<Prefix><Name>—— 生成面
「基础群系」列的两种写法
各群系页那一列是 RealisticBiome* 构造器 super(config, <基础>, <河流>, ...)
的第一个参数,即被复用的宿主 BiomeGenBase。源码里它有三种形态:
| 形态 | 例 | 出现在 |
|---|---|---|
BiomeGenBase.<字段> 直接字面量 |
icePlains、beach |
vanilla 的非 M 变体 |
| 包内静态别名 | BOPCBiomes.alps、HighlandsBiomes.alps、ACBiomes.darklands_hills |
biomesoplenty / highlands / abyssalcraft |
addBiomes() 循环内按 biomeName 匹配的变量 |
Gravel Beach、Alpine Mountains |
20 个循环注册的包 |
mutationBiome |
getBiome(standardBiome.biomeID + 128)(MUTATION_ADDEND = 128,见 RealisticBiomeVanillaBase.java:13) |
vanilla 的 21 个类(只有 15 个类名以 M 结尾,FlowerForest、SunflowerPlains、IcePlainsSpikes、MesaBryce、RedwoodTaigaHills、MegaSpruceTaiga 等不带 M 也用这一套) |
⚠️ 第二个参数是河流群系(多为 BiomeGenBase.river 或 frozenRiver),
不是基础群系——两者不可混淆。
覆盖率实测
用三路独立集合运算交叉验证,结果是严格双射:
| 校验 | 方法 | 结果 |
|---|---|---|
| holder 字段 ↔ 配置类 | 25 个 BiomeConfig<PACK>.java 里 public static BiomeConfig xxx; 字段集合 vs 374 个具体配置类 |
374 ↔ 374,missing 0,orphan 0 |
| 配置类 ↔ 生成类 | 按类名 + BiomeConfig* 引用匹配 |
374 ↔ 374,unmatched 0 |
| 群系 / 地形 / 地表 | 逐包计数三方比对 | 374 / 374 / 374,逐包相等 |
grep -rl 'extends Biome' 会得到 401,是虚高的——它把 25 个 <Pack>Base
抽象基类、2 个 BiomeConfig 顶层类也算进去了。实际具体群系是 374。
⚠️ 本 mod 没有枚举式注册(grep -rE '\benum\s+\w*Biome' 无输出),
但有循环式注册:RTG.postInit(rtg/RTG.java:134-157)逐个调用 25 个群系包的
addBiomes(),其中 20 个包在 addBiomes() 里遍历
BiomeGenBase.getBiomeGenArray() 的 256 项,按 biomeName + biomeClass 双条件匹配后
new RealisticBiome<...>;只有 vanilla(59) / biomesoplenty(77) / highlands(43) /
abyssalcraft(6) 四个包是逐个显式 new。
两种写法都只实例化 RTG 自己的 RealisticBiome 对象,不调用
WorldRegistrar.registerBiome,所以 374 这个数仍可直接由具体类集合得到。
群系包一览
| 群系包 | 群系数 | 宿主 modid | 条目 |
|---|---|---|---|
| Enhanced Biomes | 90 | enhancedbiomes |
enhancedbiomes |
| Biomes O’ Plenty | 77 | BiomesOPlenty |
biomesoplenty |
| 原版 | 59 | (无,恒存在) | vanilla |
| Highlands | 43 | Highlands |
highlands |
| Extra Biomes XL | 28 | ExtrabiomesXL |
extrabiomes |
| Eccentric Biomes | 16 | mod_ebm |
eccentricbiomes |
| TofuCraft | 9 | TofuCraft |
tofucraft |
| Forgotten Nature | 9 | ForgottenNature |
forgottennature |
| ATG | 8 | ATG |
atg |
| Ridiculous World | 7 | RidiculousWorld |
ridiculousworld |
| AbyssalCraft | 6 | abyssalcraft |
abyssalcraft |
| Chromaticraft | 3 | ChromatiCraft |
chromaticraft |
| Thaumcraft | 3 | Thaumcraft |
thaumcraft |
| IDT | 3 | mod_IDT |
idt |
| BuildCraft | 2 | BuildCraft|Core |
buildcraft |
| Lots O’ Mob’s | 2 | lom |
lotsomobs |
| Arsmagica | 1 | arsmagica2 |
arsmagica |
| Flowercraft | 1 | flowercraftmod |
flowercraft |
| GrowthCraft | 1 | Growthcraft|Bamboo |
growthcraft |
| Hot Water Mod | 1 | hot_water |
hotwatermod |
| Ice Cream Mod | 1 | ICMod |
icmod |
| In The Darkness | 1 | InTheDarkness |
itd |
| Sugi Forest | 1 | kegare.sugiforest |
sugiforest |
| SushiCraft | 1 | sushicraft |
sushicraft |
| Vampirism | 1 | vampirism |
vampirism |
⚠️ 注意三处「目录名 ≠ modid ≠ 配置前缀」:
| 目录 | 宿主 modid | 配置前缀 |
|---|---|---|
icmod |
ICMod |
ICMod |
itd |
InTheDarkness |
inthedarkness |
growthcraft |
Growthcraft|Bamboo |
growthcraft |
地形 / 地表 / 装饰
| 层 | 数量 | 说明 |
|---|---|---|
| 群系 | 374 | 逐群系,25 个包(其中 sushicraft 的 1 个从未注册,见下) |
| 专属地形类 | 374 | 与群系 1:1 |
| 专属地表类 | 374 | 与群系 1:1 |
| 共享地形类 | 39 | 根目录 23 个 Terrain*(不含 TerrainBase)+ 15 个 *Effect + HeightVariation;另有 TerrainBase / FunctionalTerrainBase 两个基类 |
| 共享地表类 | 23 | 根目录 Surface*(含 SurfaceBase);另有 3 个包级 Surface<Pack>Base |
装饰器 Deco* |
39 | 25 装饰器 + 7 组合 + 5 DecoHelper* + 2 个 *Base |
特征生成器 WorldGen* |
23 | feature/ 根目录 18 + feature/tree/ 内 5;树类另 17 个,合计 40 个文件 |
| 结构 | 2 | 仅村庄 + 散落地物的 RTG 变体 |
条目:
- 地形基础类型 - 23 个共享地形 + 16 个
HeightEffect修饰器 +TerrainBase静态工具 - 地表基础类型 - 23 个共享地表 +
SurfaceBase与 8 个surface*覆盖项 - 特征生成器 - 40 个特征类(23
WorldGen*+ 17 树类)与 39 个Deco*,含真实参数实例 - 结构生成 - 2 个结构类,以及「RTG 没有任何矿脉」的依据
游戏设定
| 条目 | 内容 |
|---|---|
世界类型 - modid 大小写、26 条软依赖、RWG 互斥检查、WorldTypeRTG 分维度行为 |
|
| 群系配置属性 - 全部 16 项配置的源码默认值与取值范围 | |
世界生成管线 - ChunkProviderRTG 的生成顺序与装饰延迟机制 |
关键默认值(逐项读自源码)
这 6 项是玩家最常改的,取值来自 rtg/api/biome/BiomeConfig.java
构造函数里的 addProperty 字面量,不是估计值:
| 配置 ID | 默认值 | 含义 |
|---|---|---|
allowVillages |
true |
允许村庄 |
allowVolcanoes |
false |
火山默认关闭,需手动开 |
volcanoChance |
-1 |
跟随全局 |
useRTGDecorations |
true |
用 RTG 装饰 |
useRTGSurfaces |
true |
用 RTG 地表 |
caveDensity / caveFrequency / ravineFrequency |
-1 |
跟随全局(原版参照值分别为 14 / 6 / 50) |
本 mod 没有的内容
以下均经源码检索确认完全没有,因此不建目录、不建条目:
| 类别 | 依据 |
|---|---|
| 方块 / 物品 | grep -rn 'GameRegistry.register|registerBlock|registerItem' src/main/java 无输出。RTG 不注册任何方块或物品 |
| 实体 | 无 EntityRegistry、无 registerModEntity |
| 矿脉 / 矿物 | grep -rn 'getOre|OreVein|oreVein' src/main/java 无输出。矿物完全交给原版与 GTNH 其它矿工 mod |
| 新结构 | world/gen/structure/ 下只有 2 个类,都是原版的 RTG 变体 |
| 新维度 | 只覆盖维度 0,不 registerDimension |
| 附魔 / 药水 / 成就 | 无相关类 |
| KeyBinding | 无 new KeyBinding、无 registerKeyBinding |
| GUI | 无 GuiScreen 子类;所有配置走 .cfg 文件 |
源码缺陷
-
WorldProviderSurfaceRTG是死代码。rtg/world/WorldProviderSurfaceRTG.java定义了它,但rtg/world/WorldTypeRTG.java:40-41里注册它的两行 (DimensionManager.unregisterProviderType(0)与registerProviderType(0, WorldProviderSurfaceRTG.class, true)) 整行被注释掉,全仓库无其它引用。 -
RealisticBiomeDecoratorHighlands是废弃的空壳。rtg/world/biome/realistic/highlands/RealisticBiomeDecoratorHighlands.java继承BiomeDecorator,类体内所有字段与方法都被注释掉(第 18-122 行全是//)。 顶部 6 个 highlands 专属 import 也是注释状态,只有import net.minecraft.world.biome.BiomeDecorator;(第 15 行)是活的——因为类声明还要用它。 它不是群系,也不参与任何注册。 -
sushicraft群系包从未注册(死代码)。RTG.postInit(rtg/RTG.java:134-157)逐个调用 24 个addBiomes(), 唯独漏掉RealisticBiomeSCBase.addBiomes()——全仓库对RealisticBiomeSCBase的引用只有它自己与RealisticBiomeSCSakuraForest两处。 所以sakura forest这个群系(连同其地形TerrainSCSakuraForest、 地表SurfaceSCSakuraForest、配置BiomeConfigSCSakuraForest)永远不会被实例化。 详见 sushicraft。 -
WorldGenMinableRTG从不被实例化。 它是WorldGenMinable的 RTG 变体,但全仓库对它的引用只有自身文件里的 类声明与 3 个构造器,没有任何new WorldGenMinableRTG(...)。 这与「RTG 不生成矿脉」一致——矿脉完全交给原版与 GTNH 其它矿工 mod。 -
命名不一致(不影响运行)。 配置类
BiomeConfigEBMangroves(复数)对应生成类RealisticBiomeEBMangrove(单数), 配置键为enhancedbiomes.mangroves。按类名前缀做自动匹配会漏掉这一对。
依赖
RTG 只有一条必需依赖:无(@Mod(dependencies) 里 26 条全是 after: 软依赖)。
| 依赖 | 状态 |
|---|---|
| 25 个宿主群系 mod | 多数不在本 wiki 收录范围,故只在本页点名,不建分类页 |
| realistic-world-gen | 与 RTG 互斥(Loader.isModLoaded("RWG") 抛异常) |
相关条目
- realistic-world-gen - 同主题的另一款世界生成 mod,与 RTG 互斥
- gregtech - 其矿工提供 RTG 不做的矿脉