世界类型
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。