Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

A mod that adds basic fluidlogging, and serves as a library for other mod devs to use!


Any blocks can be made fluidloggable or non-fluidloggable through this mod's config system, or through its library!

Blocks that are fluidloggable by default (as of the latest version of this mod):
  • Anvils

  • Banners

  • Barriers

  • Beacons

  • Brewing Stands

  • Buttons

  • Comparators

  • Chests

  • Daylight Detectors

  • Doors

  • Dragon Eggs

  • Enchantment Tables

  • End Portal Frames

  • End Rods

  • Ender Chests

  • Fences

  • Fence Gates

  • Glass Panes

  • Half Slabs

  • Hoppers

  • Iron Bars

  • Leaves

  • Levers

  • Mob Heads

  • Mob Spawners

  • Pressure Plates

  • Pistons while extended

  • Rails

  • Repeaters

  • Redstone Torches

  • Redstone Wire

  • Trapdoors

  • Tripwire Hooks

  • Tripwire String

  • Signs

  • Walls


Along with adding fluidlogging, this mod also heavily improves fluid collision to be more accurate.
Fluidlogged API also fixes the following vanilla bugs:

  • MC-2591 Walking over the corner of lava deals damage

  • MC-4533 Water graphical glitch when connecting diagonally

  • MC-68129 Smooth lighting doesn't work properly underwater

  • MC-100886 Falling sand with ID of water or lava does not render

  • MC-125771 Block selection not showing up underwater

  • MC-127030 Flowing water attempts to connect to waterlogged blocks when it shouldn't, causing several issues

  • MC-127108 Waterlogged blocks turn lava into obsidian or cobblestone on physically unconnected sides

  • MC-127270 Visual water level inside waterlogged blocks does not adjust correctly

  • MC-227302 Smooth lighting doesn't work properly on the water surface


Q / A:

How does this mod work?

Reading through the source code would be the best way of truly understanding the inner workings of this mod, but I'll try my best to describe a simplified version here:

For each block in the world, Vanilla has two features that get stored in each chunk: a required IBlockState and an optional TileEntity. Fluidlogged API adds a third feature that gets stored in each chunk: an optional FluidState, which stores the fluidlogged fluid if present.

This mod applies ASM (a bytecode manipulation library that's bundled with Forge) to allow Vanilla and Forge to properly read and make use of FluidStates.

Is this mod safe to add to existing worlds?

This mod doesn't change the behavior of IBlockStates, so adding it to existing worlds should be fine! Removing this mod from existing worlds is also fine, just note that existing FluidStates will be removed and won't be recoverable upon doing so.

How do I use this mod's config? How do I use this mod as a dependency?

This mod's wiki will eventually cover both of those topics, for now it only covers how to use this mod's config. If you want to use Fluidlogged API as a library (optional or required dependency), the best I can do until I finish the wiki is reference you to the source code of these other projects of mine: Campfire, Seared Ladder Backport, Subaquatic.

What should I do if I run into any bugs, crashes, or mod incompatibilities?

Reporting anything you find to this mod's issue tracker would greatly help me improve this mod! Without people generously taking the time to do so, this mod would not be where it is today!

What should I do if I have other questions?

Feel free to DM me on discord (jbredwards#4634) with any questions! Other options are to ask on Cleanroom's discord server, or to create a new discussion thread on github.


Known Incompatibilities:

  • Outdated Versions of Optifine (only Optifine G5+ is supported)

  • The Betweenlands (Fixes are being worked on)


If you're a modpack developer wanting to add this mod to a CurseForge exclusive modpack, use File Director.

This mod will not be ported

External resources



Project members

jbredwards

Owner

embeddedt

Contributor

Cleanroom

Mascot


Technical information

License
ARR
Client side
required
Server side
required
Project ID