跳到正文

Realistic Finite Fluids

让水和熔岩变为有限资源,并实现更真实的流动

收藏

介绍

介绍由机器翻译自 CurseForge 原页面,仅供参考。

从死亡中归来,这些真实水体模组终于要登陆 Minecraft 1.12 了!

 

这个模组为 原版液体和Forge 液体(由所有模组注册的液体)添加了真实的有限流体行为。

 

演示视频:(来自测试版)

 

兼容 Fluidlogged API

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 注意事项

+这个模组默认兼容 ForgeBuckets,因此你可以使用桶移动流体,而不会损失少量流体。你也可以使用为部分模组制作的特定兼容补丁。 欢迎提出建议。

+我正在考虑实现一套系统,为具有特定名称的流体添加通用行为,适用于新生成的流体方块以及每种流体已有的流体方块(BlockFluidClassic)。

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 功能

  • 真实有限流体:流体会根据重力方向流动,并在地面上扩散、趋于平衡。
    • 气体:适用于具有 Material.AIR 的流体。气体的实现相当简单,会随机移动并在开放空间中扩散(最终消失)。欢迎提出建议,帮助改进其行为。
    • 海洋行为:对于应当无限的 RFF(如海水或熔岩海),会启用特殊的无限行为,使其永不干涸(可在配置中禁用)。
  • 蒸发与冻结:最低液位的水会随时间蒸发,并在寒冷生物群系中冻结(形成雪层;液位满时则形成冰块)。
  • 降雨:下雨时会出现最低液位的水。

 

  • 海底空洞修补:提供三种海洋空洞修补方式:简单(干扰最小)、优化(目前效果最好)、未优化(蛮力修补,会拖慢区块生成)。

 

  • 兼容 ForgeFluids:适用于水、熔岩以及其他模组添加的流体。
  • 其他功能:新增对玻璃瓶、气泡柱等内容的兼容。

 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 待办事项

  • ✅ 添加 Fluidlogged API 兼容
  • ☐ 回移植至 1.7.10
  • ☐ 集成热量系统以处理水的蒸发与冻结(目前考虑的选项:Heat&Climate。欢迎提出建议。)

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 模组专用兼容补丁:

  • IC2:为使用 IC2 的流体单元收集/放置有限流体添加了特殊逻辑。
  • Traveler’s Backpacks :为使用其软管收集/放置有限流体添加了特殊逻辑。

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 配置文件

//刻速率
waterTickRate –> 水的刻速率。
lavaTickRate –> 熔岩的刻速率。

 

//流体逻辑
lakelimit –> 与流体方块交互时,会转变为静止/流动方块的流体方块数量。

maxCalc –> 每刻进行的有限流体计算最大次数。此上限旨在(尽量)避免服务器卡顿。

playerMaxDistanceToCalc –> 流动液体与玩家之间的最大距离,用于在当前计算开始接近最大计算量时,决定是推迟还是立即更新当前刻的方块。

 

//流体行为

waterCanFreeze –> 水是否可以变成冰。

shouldTickRandomly –> 流体是否应进行随机刻。

shouldFluidsBeInfinite –> 大型流体团(湖泊、海洋)是否应作为无限流体源。它也可作为关闭海洋方块的保险开关(如果你发现有限流体团正在吞噬你的世界,最好使用 /rffkillswitch)。

shouldFluidsMoveSidewayDownwards –> 流体是否可以在一次移动中向四个基本方向向下流动(这会使它们看起来从基本方向的边缘下方泄漏)。

fluidsBreakFragileBlocks –> 流体是否应破坏脆弱方块。

fragileBlocks –> 脆弱方块列表。

 

//降雨逻辑
enableRain –> 启用有限水降雨。

rainAmount –> 下雨时每刻水滴下落概率的比例修正值。大于 24 的值不会增加降雨量。它不能为零,但 0.1 是有效的。

 

//压力逻辑
doPressure –> 是否激活压力系统。

pressureLimit –> 我们检查方块以施加压力的最大尝试次数。

 

//蒸发逻辑
enableEvaporation –> 水是否应蒸发。仅适用于处于最低流体液位的水。

evaporationChance –> 每刻水蒸发的概率。

 

//杂项逻辑
bucketRemoveLowFluid –> 当流体不足以装满一桶时,桶是否应移除世界中的有限流体。

flowingWaterShouldMoveCreativePlayer –> 流动液体是否应推动创造模式下的玩家。

createBlocksForBlocklessFluids –> 为没有分配默认方块的流体创建有限流体方块。

infiniteModdedFluids –> 应以无限流体形式生成的模组流体名称列表。你可以在世界内的以下位置找到流体列表:/.minecraft/saves/你的世界名称/data

 

//气泡柱逻辑

enableBubbleColumns –> 是否启用气泡柱。(当你在海底放置灵魂沙或岩浆块时,水中会出现这些气泡柱)。

maxBubbleColumnSize –> 气泡柱可以具有的最大高度。(带有气泡柱的顶部水方块与灵魂沙/岩浆块之间的最大距离)。这是对方块进行扫描的最大距离。

 

//渲染

waterLightOpacity –> 水在光线穿过时移除的光量。

maxOrNormalFluidHeight –> 流体是否应具有完整方块高度。仅具有美观效果。

dynamicOrStaticTexture –>  流体应同时使用动态和静态流体纹理,还是仅使用静态纹理。仅具有美观效果。

 

//屏障

oceanBarrierMode –> 海洋屏障方法(避免在水下矿井与海洋之间留下开口):none、simple、optimized、unoptimized。默认:Optimized(最佳)。

 

//调试
visualDebug –> 允许调试内容。仅用于测试目的。

logDebug –> 允许 logDebug 输出有关注册的特殊信息。

 

 

 

 

 

 

 

 

旧页面

历经沉寂,这些逼真的水体模组终于登陆 Minecraft 1.12!

此模组添加了有限水和有限熔岩,这两种流体与原版的水和熔岩不同,因此你仍然可以使用原版流体!

 

 

在配置文件中,你可以找到诸如水和熔岩的刻速、降雨与蒸发功能,以及一种尝试修补海洋与海底洞穴/峡谷之间缺口的方法等选项。

 

基础模组兼容性

 

通用模组兼容性(v1.6.0)

默认关闭 ——> 如果你想启用通用兼容性,必须将其设为 TRUE。此功能容易导致崩溃/错误。

 

压力系统(v1.5.0)

### 待办事项

+计划增加对更多模组的兼容性。目前最大的问题是,有些模组直接引用原版水和熔岩,而不是使用 ForgeFluid 系统。

-更新 1 –> 通过一些 Mixin 手段,已经兼容了其中大多数模组;如果发现任何意外行为,请告诉我

-更新 2 –> 我添加了一个配置选项,让你可以通过实验性方式添加兼容性。此功能容易导致崩溃和错误,但确实有效。更多信息见下文。

+目前,世界生成中并非所有水体都会被替换,之后计划实现这一点。(比如墙壁上零星的水/熔岩方块)

+要将此系统应用到任意 ForgeFluid,需要采用完全不同的方法,因此目前只支持水和熔岩。也许以后我会添加此功能,但前提是我有时间。

+我正在考虑如何将此系统应用到游戏中的每一种 FluidRegistry 流体。它可能无法保留原始流体的某些属性,但或许能在不重写整个代码库的情况下实现

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 备注

+有一个配置选项可以将已有世界(使用原版水和熔岩)转换为 RealisticFiniteFluids 的水和熔岩。

 

+还需要说明,这个模组尚未经过充分测试;如果你尝试将它与喜欢的模组一起使用时遇到不兼容或崩溃,欢迎提交问题(请使用二分法找出导致问题的模组)

+目前,此模组与 FluidLogged API 不兼容(我认为这两个模组本质上无法兼容;即使通过添加一些检查避免崩溃,RealisticFiniteFluids 和 FluidLogged 也无法同时正常工作)

+我又开始上学了(2025 年秋季),可能无法持续更新,请耐心等待

 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

模组专属兼容补丁:

  • Climatic Biomes(使用有限水替代原版水)
  • IC2(添加特殊逻辑,以便使用 IC2 的流体单元收集/放置有限流体)
  • Traveler’s Backpack(添加特殊逻辑,以便使用其软管收集/放置有限流体)
  • (即将推出)Realistic Terrain Generation Community(使用有限水替代原版水)

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

### 配置文件

//刻速
waterTickRate –> 水的刻速。
lavaTickRate –> 熔岩的刻速。

 

 

//流体逻辑
lakelimit –> 与流体互动时,会转变为静止/流动方块的流体方块数量。

maxCalc –> 每个游戏刻可进行的有限流体计算最大次数。此上限旨在(尽量)避免服务器卡顿。

playerMaxDistanceToCalc –> 当 currentCalc 开始接近 maxCalc 时,用于判断当前游戏刻应推迟还是立即更新方块的流动液体与玩家之间的最大距离。

 

//降雨逻辑
enableRain –> 启用有限水量降雨。

rainAmount –> 如果 scalableRainMethod 为 FALSE:下雨时每个游戏刻落下一滴水的概率。

rainArea –> 如果 scalableRainMethod 为 FALSE:水滴应落下区域的直径(以方块计)。

 

scalableRainMethod –> 是否使用“面向渲染距离的方法”或“面向玩家的方法”来生成雨水。

rainNewMethodAmount –> 如果 scalableRainMethod 为 TRUE:用于调整下雨时每个游戏刻落下一滴水概率的比例系数。数值大于 24 不会增加降雨量。此值不能为零,但可以设为 0.1。

 

//压力逻辑
doPressure –> 是否启用压力系统。

 

//蒸发逻辑
enableEvaporation –> 水是否会蒸发。仅适用于流体等级最低的水。

evaporationChance –> 水每个游戏刻蒸发的概率。

 

//杂项逻辑
waterCanFreeze –> 水是否可以结冰。

oceanBarrierMode –> 海洋屏障方式(用于避免水下矿井与海洋之间留下缺口)。

bucketRemoveLowFluid –> 当流体量不足以装满一桶时,桶是否应移除世界中的有限流体。

waterLightOpacity –> 水通过时会阻挡的光照量。

replaceVanillaFluids –> 是否替换已有世界中的原版流体。手动将此选项设为 true 时,它会自动设为 false(仅影响游戏一次,随后会重置为 false)。

universalCompat –> 启用 Universal Compat Coremod。

exclusionsPrefixes  –> 用于从 Coremod 中排除的路径前缀。若要排除某个类,请添加该类的完整路径;若要排除整个包,只需添加该包的路径。

flowingWaterShouldMoveCreativePlayer –> 流动液体是否应推动创造模式玩家。

shouldTickRandomly –> 流体是否应进行随机刻更新。

shouldFluidsBeInfinite –> 大型流体区域(湖泊、海洋)是否应视为无限流体源。

 

//调试
debug –> 允许使用调试内容。仅用于测试。

debugUniversalCompatLog –> 启用所需的调试日志,以查找 universalCompat 配置选项造成的问题补丁。

 

 

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
### 如何调试/为 Universal Compat 配置添加例外

如果启用了 universalCompat 配置选项后,游戏启动时发生崩溃,请按以下步骤操作:

1.- 禁用 universalCompat 配置选项
— 如果这样解决了问题:

2.- 同时启用 universalCompat 和 debugUniversalCompatLog

3.- 游戏崩溃后,查看 latest.log 中的崩溃日志,确认是 Universal Compat Coremod 修改的哪个类导致了崩溃

4.- 将该类的名称(例如:”net.minecraft.init.Blocks”)添加到配置文件的例外列表中

5.- 重新运行游戏,看看是否还会崩溃。

 

6.- 如果你想禁用某个模组的所有兼容功能,请添加它的初始包路径(例如:”ic2.core”)

 

如果你发现 Realistic Finite Fluids 的流体方块消失了,或被其他模组(Witchery、BuildCraft、IC2 等)注册了

1.- 加载游戏并查看有限流体的 ModID(以找出问题模组)

1.1.- 找到后,单独对该模组执行以下步骤。如果其他模组又将我的有限流体方块注册为自己的方块,你可能需要重复此过程。

2.- 在配置文件中启用 universalCompat 和 debugUniversalCompatLog。

3.- 查找:”modificada: CLASS_PATH”(将 CLASS_PATH 替换为问题模组的初始路径;你可以在该模组的 .jar 文件或 GitHub 页面中查看)

4.- 检查被修改类中的方法,尝试查找 “items”、”blocks”、”init” 等内容。然后将这些类的路径添加到例外列表中。

4.1.- 如果找不到名称中包含这些关键词的方法或类,就尝试该模组中所有正在被修改的类,不要管那些未被修改的类。

5.- 重复上述步骤,直到有限流体注册到 RealisticFiniteFluids ModID 下。

 

 

 

 

希望你喜欢这个小项目! 

 

常见问题

Realistic Finite Fluids 支持哪些 Minecraft 版本?

Realistic Finite Fluids 支持 Minecraft Java 版 1.12.2,可用的加载器:Forge。下载时注意选择和你游戏版本一致的文件。

Realistic Finite Fluids 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

gato_borrachon 的其他作品

查看全部 →