真实有限流体

真实有限流体

有限的水和熔岩,具有逼真的流动效果

杂项

从死亡中归来,这些逼真的水体模组终于来到了 Minecraft 1.12!

这个模组为原版液体Forge 液体(由每个模组注册的那些)添加了逼真的有限流体行为

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

Fluidlogged API 兼容

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

注意事项

+此模组默认添加了 ForgeBuckets 兼容,因此你可以使用桶来移动流体而不会损失少量的流体。否则,你可以使用为某些模组制作的特定兼容。我欢迎任何建议。

+我正在考虑一个系统,为具有特定名称的流体实现通用行为,无论是对新生成的还是已存在的流体方块(BlockFluidClassic)都适用。

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

待办事项

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

模组特定兼容补丁:

  • IC2(使用 IC2 的流体单元收集/放置有限流体的特殊逻辑)
  • Traveler's Backpack(使用其软管收集/放置有限流体的特殊逻辑)

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

配置文件

//Tickrates waterTickRate --> 水的 tick 速率。 lavaTickRate --> 熔岩的 tick 速率。

//Fluid Logic lakelimit --> 当你与流体方块交互时,会转变为静止/流动方块的数量。

maxCalc --> 每 tick 有限流体计算的最大数量。一个(尝试)避免服务器卡顿的上限。

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

//Rain Logic enableRain --> 启用有限的水降雨。

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

//Pressure Logic doPressure --> 是否激活压力系统。

//Evaporation Logic enableEvaporation --> 水是否应该蒸发。仅适用于具有最低流体液位的水。

evaporationChance --> 每 tick 水蒸发的概率。

//Misc Logic waterCanFreeze --> 水是否可以变成冰。

bucketRemoveLowFluid --> 当没有足够的流体装满一个桶时,桶是否应该移除世界中的有限流体。

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

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

shouldTickRandomly --> 流体是否应该具有随机 tick。

shouldFluidsBeInfinite --> 大型流体团(湖泊、海洋)是否应该作为无限流体源。

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

//Debug debug --> 允许调试内容。仅用于测试目的。

旧页面

从死亡中归来,这些逼真的水体模组终于来到了 Minecraft 1.12!


这个模组添加了有限水有限熔岩,这两种流体都与基础的水和熔岩不同,所以你仍然可以使用原版版本!

在配置中你可以找到类似以下的内容 --> 水和熔岩的 Tick 速率、降雨和蒸发功能、一种(尝试)修补海洋与海底洞穴/峡谷之间缺口的方法等。

基础模组兼容

通用模组兼容(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(使用有限水代替原版)

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

配置文件

//Tickrates waterTickRate --> 水的 tick 速率。 lavaTickRate --> 熔岩的 tick 速率。

//Fluid Logic lakelimit --> 当你与流体方块交互时,会转变为静止/流动方块的数量。

maxCalc --> 每 tick 有限流体计算的最大数量。一个(尝试)避免服务器卡顿的上限。

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

//Rain Logic enableRain --> 启用有限的水降雨。

rainAmount --> 如果 scalableRainMethod 为 FALSE:下雨时每 tick 水滴落下的概率。

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

scalableRainMethod --> 是否使用“渲染距离导向方法”或“玩家导向方法”来放置雨水。

rainNewMethodAmount --> 如果 scalableRainMethod 为 TRUE:下雨时每 tick 水滴落下的概率的比例修正值。大于 24 的值不会增加降雨量。不能为零,但 0.1 是有效的。

//Pressure Logic doPressure --> 是否激活压力系统。

//Evaporation Logic enableEvaporation --> 水是否应该蒸发。仅适用于具有最低流体液位的水。

evaporationChance --> 每 tick 水蒸发的概率。

//Misc Logic waterCanFreeze --> 水是否可以变成冰。

oceanBarrierMode --> 海洋屏障方法(避免在水下矿井和海洋之间留下开口)。

bucketRemoveLowFluid --> 当没有足够的流体装满一个桶时,桶是否应该移除世界中的有限流体。

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

replaceVanillaFluids --> 是否替换已存在世界中的原版流体。此选项在手动设置为 true 后会自动设为 false(影响游戏 1 次后自动重置为 false)。

universalCompat --> 启用通用兼容 Coremod

exclusionsPrefixes --> 从 coremod 中排除的路径前缀。要排除一个类,添加该类的完整路径。要排除整个包,只需添加该路径。

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

shouldTickRandomly --> 流体是否应该具有随机 tick。

shouldFluidsBeInfinite --> 大型流体团(湖泊、海洋)是否应该作为无限流体源。

//Debug debug --> 允许调试内容。仅用于测试目的。

debugUniversalCompatLog --> 启用所需的调试日志,以找出 universalCompat 配置选项所做的有问题的补丁。

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

如何调试/为通用兼容配置添加例外

如果你在启用 universalCompat 配置选项后,游戏加载时出现崩溃,请执行以下操作: 1.- 禁用 universalCompat 配置选项

--- 如果这解决了问题:

2.- 同时启用 universalCompat 和 debugUniversalCompatLog

3.- 游戏崩溃后,检查 latest.log 中的崩溃日志行,看看我的通用兼容 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。

希望你喜欢这个小项目!