Lily pads cannot be placed on waterlogged blocks
Summary
Lily pads cannot be placed on waterlogged blocks, including waterlogged top slabs, even though vanilla Java treats the water fluid in those blocks as valid support.
Current behavior
LilyPadBlock::can_plant_on_top in crates/pumpkin/src/block/blocks/plant/lily_pad.rs has an explicit TODO to use fluids rather than blocks. It reads only the support block:
let block = block_accessor.get_block(pos);
...
block.has_tag(&tag::Fluid::MINECRAFT_SUPPORTS_LILY_PAD)
|| block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_LILY_PAD)The block support tag contains ice and frosted ice. The fluid support tag contains water, but testing that fluid tag against the block object does not inspect the block's waterlogged fluid state. A waterlogged slab therefore fails both support checks.
Vanilla behavior
Vanilla Java allows lily pads on water and on waterlogged blocks, including waterlogged top-half slabs. Mojang classified placement on waterlogged blocks as working as intended.
References:
Reproduction
- Place a top-half slab and waterlog it.
- Try to place a lily pad on top.
Pumpkin rejects the placement. Vanilla allows it.
Ice and frosted ice should continue to support lily pads without needing a water fluid state.
Suggested fix
Expose or use the support position's fluid state in the plant-placement path. Accept support when either:
- the fluid at the position is in
minecraft:supports_lily_pad, or - the block is in the block tag of the same name.
Keep the existing requirement that the lily pad's destination position is air, and add tests for water, waterlogged top slabs, ice, frosted ice, and dry slabs.
Verified against current master at 1ac447f2918b7dec7d19a5836fa3673d4fe3c9f5; live issue-list review plus a targeted repository web search found no existing lily-pad/waterlogged issue.
Source: Pumpkin-MC/Pumpkin