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 文件

源码缺陷

  1. WorldProviderSurfaceRTG 是死代码。 rtg/world/WorldProviderSurfaceRTG.java 定义了它,但 rtg/world/WorldTypeRTG.java:40-41 里注册它的两行 (DimensionManager.unregisterProviderType(0) 与 registerProviderType(0, WorldProviderSurfaceRTG.class, true)) 整行被注释掉,全仓库无其它引用。

  2. RealisticBiomeDecoratorHighlands 是废弃的空壳。 rtg/world/biome/realistic/highlands/RealisticBiomeDecoratorHighlands.java 继承 BiomeDecorator,类体内所有字段与方法都被注释掉(第 18-122 行全是 //)。 顶部 6 个 highlands 专属 import 也是注释状态,只有 import net.minecraft.world.biome.BiomeDecorator;(第 15 行)是活的——因为类声明还要用它。 它不是群系,也不参与任何注册。

  3. sushicraft 群系包从未注册(死代码)。 RTG.postInit(rtg/RTG.java:134-157)逐个调用 24 个 addBiomes(), 唯独漏掉 RealisticBiomeSCBase.addBiomes()——全仓库对 RealisticBiomeSCBase 的引用只有它自己与 RealisticBiomeSCSakuraForest 两处。 所以 sakura forest 这个群系(连同其地形 TerrainSCSakuraForest、 地表 SurfaceSCSakuraForest、配置 BiomeConfigSCSakuraForest)永远不会被实例化。 详见 sushicraft。

  4. WorldGenMinableRTG 从不被实例化。 它是 WorldGenMinable 的 RTG 变体,但全仓库对它的引用只有自身文件里的 类声明与 3 个构造器,没有任何 new WorldGenMinableRTG(...)。 这与「RTG 不生成矿脉」一致——矿脉完全交给原版与 GTNH 其它矿工 mod。

  5. 命名不一致(不影响运行)。 配置类 BiomeConfigEBMangroves(复数)对应生成类 RealisticBiomeEBMangrove(单数), 配置键为 enhancedbiomes.mangroves。按类名前缀做自动匹配会漏掉这一对。

依赖

RTG 只有一条必需依赖:无(@Mod(dependencies) 里 26 条全是 after: 软依赖)。

依赖 状态
25 个宿主群系 mod 多数不在本 wiki 收录范围,故只在本页点名,不建分类页
realistic-world-gen 与 RTG 互斥(Loader.isModLoaded("RWG") 抛异常)

相关条目