Skip to content

Count water-holding blocks in the 26.1+ fluid count - #1616

Merged
booky10 merged 1 commit into
retrooper:2.0from
aidanvalero:fix/fluid-count-water-blocks
Oct 29, 2026
Merged

booky10 merged 1 commit into
retrooper:2.0from
aidanvalero:fix/fluid-count-water-blocks

Conversation

@aidanvalero

Copy link
Copy Markdown
Contributor

isFluid only counts water, lava and waterlogged blocks, but bubble_column, kelp, kelp_plant, seagrass and tall_seagrass always hold water without a waterlogged property (went through getFluidState on every block in 26.3, those 5 are the only ones). Chunk_v1_18.set uses isFluid for the 26.1+ fluid count, so when soul sand turns water into a bubble column the count goes down 1 per block, and a section where the only fluid is a bubble column ends up at 0. Vanilla counts anything with a non-empty fluid state (LevelChunkSection.setBlockState), so the count the server sends with the chunk is right and it drifts from there

Grim skips water for sections with a fluid count of 0, so 26.x players in a bubble column get predicted as if they were in air (GrimAnticheat/Grim#2726, GrimAnticheat/Grim#2828). Soul sand column with vanilla 26.3 clients, standing still or swimming up, 3 runs each: grim 2.0 flags Simulation 37-41 times in 4 seconds on every run. Same grim built against this: 0/6. The same column on stone is 0/6 either way

ChunkFluidCountTest fails on 2.0 at the bubble column (count drops to 0) and passes with this, rest of the api tests pass too

@booky10
booky10 merged commit f611cc9 into retrooper:2.0 Oct 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants