世界类型

RTG 不用 coremod、不用 mixin(gradle.properties 的 usesMixins = false、 coreModClass 为空),它只靠一个自定义 WorldType 生效。

modid

项 值 来源
modid RTG(全大写) rtg/RTG.java:51 的 @Mod(modid = "RTG")
modGroup rtg gradle.properties
内部包根 rtg 同上
显示名 Realistic Terrain Generation @Mod(name = ...)

⚠️ 大小写陷阱:gradle.properties 写 modId = RTG,源码里也是字面量 "RTG", 但 modGroup / 根包名是全小写 rtg。配置文件、类路径、Wiki 分类名三者大小写各不相同:

对象 写法
游戏内 modid RTG
配置文件 config/RTG/rtg.cfg(目录 RTG 大写,文件名 rtg.cfg 小写;见 rtg/RTG.java:112)
资源命名空间 见 .cfg 内的 biome.<prefix>.<slug> 段
本 wiki 分类 realistic-terrain-generation

依赖

@Mod(dependencies = ...) 声明了 26 条全部为 after: 的软依赖—— 即「这些 mod 存在时才启用对应群系包」,缺任何一个都不会导致加载失败 (rtg/RTG.java:52-77,逐条 grep -oE '"after:[^";]*' 计数为 26):

abyssalcraft, arsmagica2, ATG, BiomesOPlenty, BuildCraft|Core, enhancedbiomes,
enviromine, ExtrabiomesXL, flowercraftmod, ForgottenNature, Growthcraft|Bamboo,
Highlands, hot_water, ICMod, InTheDarkness, kegare.sugiforest, lom, Mariculture,
mod_ebm, mod_IDT, Railcraft, RidiculousWorld, sushicraft, Thaumcraft,
TofuCraft, vampirism

其中 enviromine、Mariculture、Railcraft 出现在 dependencies 里, 但没有对应的群系包——它们不提供 BiomeConfig。

注意两条带竖线的 modid:BuildCraft|Core 与 Growthcraft|Bamboo。 RTG 内部按前缀 buildcraft / growthcraft 组织群系包,与 modid 字面量不同。

与 Realistic World Gen 互斥

rtg/RTG.java:99 的 preInit 里有一道硬检查:

if (Loader.isModLoaded("RWG")) {
    throw new RuntimeException("Realistic World Gen is incompatible with RTG");
}

即 RWG(Realistic World Gen)与 RTG 不能同时装,且是抛异常而非降级。 本 wiki 中 RWG 是独立分类 realistic-world-gen。

WorldTypeRTG

rtg.world.WorldTypeRTG extends WorldType。这是 RTG 唯一的生效开关。

方法 维度 0(主世界) 其它维度
getChunkManager WorldChunkManagerRTG(world, this)(缓存在静态 chunkManager) new WorldChunkManager(world),即原版
getChunkGenerator new ChunkProviderRTG(world, world.getSeed()) new ChunkProviderGenerate(...),即原版
getCloudHeight 256F 同一方法,无分维度

RTG 只影响维度 0。 下界、末地以及 GTNH 其它模组维度全部走原版生成。

重复请求的处理

getChunkGenerator 在 chunkProvider 已存在时返回一个**「假」提供器**:

ChunkProviderRTG result = new ChunkProviderRTG(world, world.getSeed());
result.isFakeGenerator();
return result;

注释写明 return a “fake” provider that won’t decorate for Streams—— 第二个及以后的请求拿到的实例不会执行装饰,且不会注册服务器关闭清理 (注释:no server close because it’s not supposed to decorate)。

静态 chunkProvider / chunkManager 通过 RTG.instance.runOnNextServerCloseOnly(...) 注册清理动作,避免跨世界残留。

WorldProviderSurfaceRTG

rtg.world.WorldProviderSurfaceRTG extends WorldProviderSurface, 只覆写 getDimensionName() 返回 "Overworld"。

⚠️ 该类当前未被启用:WorldTypeRTG 构造器里注册它的两行是注释掉的——

// DimensionManager.unregisterProviderType(0);
// DimensionManager.registerProviderType(0, WorldProviderSurfaceRTG.class, true);

所以它是一个保留但未接线的类,不要指望 RTG 会替换主世界的 WorldProvider。

源码缺陷

WorldProviderSurfaceRTG 未被任何代码引用(注册语句被注释), 属于死代码。它与本 wiki 收录的 realistic-world-gen 主题相邻但不是同一个 mod。

相关条目