大气组成

定义方式

WorldGasProvider(pvnrt/gas/WorldGasProvider.java)是「一个世界维度的默认大气」接口,只有一个方法 getAtmosphericGasses(),返回 FixedGasList。

地表大气

MixinWorldProviderSurface(src/mixin/java/pvnrt/mixin/mixins/early/MixinWorldProviderSurface.java)mixin 到原版 WorldProviderSurface 并实现该接口,注入一份 @Unique 的大气常量:

氮气     34.78 mol @ 293 K
氧气      8.92 mol @ 293 K
氩气      0.093 mol @ 293 K
二氧化碳  0.0004 mol @ 293 K

换算为摩尔分数:

气体 体积分数
氮气 79.42 %
氧气 20.37 %
氩气 0.21 %
二氧化碳 0.0009 %

这是一份接近地球真实空气的配比(真实值约 78.08 / 20.95 / 0.93 / 0.04 %),二氧化碳被刻意压低了约 45 倍。

⚠️ 仓库 CLAUDE.md 写的是「default surface atmosphere is 70% N2 / 30% O2」,这是错的——该文档只列了 2 种气体且百分比也对不上。以 MixinWorldProviderSurface 的字面量为准(79.4184 % / 20.3684 %)。

温度常量

四个组分统一使用 293 K(约 19.85 °C),即该字面量对温度的表示并非开尔文量纲的自洽值,而是 mod 作者选定的地面基准温度。ItemAtmoScanner 显示温度时会减去 273 转成摄氏度(pvnrt/item/ItemAtmoScanner.java)。

与模拟层的衔接

GasManager 构造时读取 world.provider instanceof WorldGasProvider,命中则把该大气作为原生模拟器的初值传入,否则退化为空大气(pvnrt/core/world/GasManager.java:28-30)。这意味着除地表维度外,洞穴、下界、末地等维度默认没有气体——需要各自实现 WorldGasProvider 才有大气。

相关条目