Sugar cane cannot be planted beside water or waterlogged blocks
Summary
Sugar cane's adjacency check requires one neighboring block object to match both the fluid and block support tags. The generated tags are intentionally disjoint, so the condition cannot succeed for ordinary water, flowing water, waterlogged blocks, or frosted ice.
Current behavior
can_place_at in crates/pumpkin/src/block/blocks/plant/sugar_cane.rs loops over the four blocks beside the support block and evaluates:
if block.has_tag(&tag::Fluid::MINECRAFT_SUPPORTS_SUGAR_CANE_ADJACENTLY)
&& block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_SUGAR_CANE_ADJACENTLY)The generated values are:
- fluid tag:
water,flowing_water - block tag:
frosted_ice
No neighboring block can be both, and testing the fluid tag against the block also never reads a waterlogged block's fluid state. As a result, a cane on valid dirt/sand/etc. fails the required adjacency check in all normal vanilla setups.
Vanilla behavior
Vanilla Java permits sugar cane on its support blocks when one horizontal neighbor is water, flowing water, a waterlogged block, or frosted ice.
Reference: https://minecraft.wiki/w/Sugar_Cane
Reproduction
- Place dirt or sand beside a water source.
- Try to place sugar cane on the dirt/sand.
- Repeat beside flowing water, a waterlogged slab, and frosted ice.
Pumpkin rejects the cane in each case. Vanilla accepts all four.
Suggested fix
Inspect the adjacent position's fluid state separately from its block state, and use OR semantics:
- fluid is in
minecraft:supports_sugar_cane_adjacently, or - block is in the corresponding block tag.
Add placement and survival tests for source water, flowing water, waterlogged blocks, frosted ice, and a dry invalid neighbor.
Verified against current master at 1ac447f2918b7dec7d19a5836fa3673d4fe3c9f5; live issue-list review plus a targeted repository search found no existing sugar-cane/waterlogged issue.
Source: Pumpkin-MC/Pumpkin