[MC-4381] Water places behind Tall Grass Created: 09/Dec/12  Updated: 16/Jan/24  Resolved: 31/Mar/20

Status: Resolved
Project: Minecraft: Java Edition
Component/s: None
Affects Version/s: Minecraft 1.4.4, Minecraft 1.4.5, Snapshot 12w49a, Snapshot 12w50a, Snapshot 12w50b, Minecraft 1.4.6, Minecraft 1.4.7, Snapshot 13w01a, Snapshot 13w01b, Minecraft 1.5, Snapshot 13w11a, Minecraft 1.5.1, Minecraft 1.5.2, Snapshot 13w18b, Snapshot 13w18c, Snapshot 13w19a, Snapshot 13w25c, Minecraft 1.6, Minecraft 1.6.1, Minecraft 1.6.2, Minecraft 1.7.4, Minecraft 14w05b, Minecraft 14w06b, Minecraft 14w07a, Minecraft 14w08a, Minecraft 1.7.5, Minecraft 1.8, Minecraft 16w20a
Fix Version/s: Minecraft 18w01a

Type: Bug
Reporter: ReduxMC Assignee: Thommy Siverman
Resolution: Fixed Votes: 2
Labels: grass, water
Environment:

Microsoft Windows 8 Pro 64-bit, Java SE7 U51


Attachments: File bugged.mp4     File fixed.mp4    
Issue Links:
Duplicate
is duplicated by MC-75475 Possible to place water/lava through ... Resolved
is duplicated by MC-101794 Can not place bucket of water/lava on... Resolved
is duplicated by MC-102121 structure_void bucket hit box Resolved
is duplicated by MC-107280 When clicking on grass (plant, not th... Resolved
is duplicated by MC-110706 Placing Water (With water bucket) on ... Resolved
Relates
relates to MC-117398 Boats, lava and water buckets and lil... Reopened
relates to MC-19205 Tall Grass particles are gray when de... Resolved
relates to MC-86978 Sideways placeable blocks placed on t... Open
CHK:
Confirmation Status: Confirmed

 Description   

The bug

Get a bucket of water and place it on some tall grass. The water will be placed behind the tall grass as if the grass isn't even there.

Other blocks such as cobwebs are affected as well:

Demonstration Video

The reason/Code analysis

See this comment by AjaxGb



 Comments   
Comment by Neliz_ [ 16/Jan/24 ]

I can confirm this has been fixed in 18w01a and attached two videos: one demonstrating a fixed version, the other demonstrating a bugged version.

Comment by Marcono1234 [ 07/Dec/19 ]

Seems to be fixed indeed, but likely in a version prior to 1.15-pre6

Comment by Ray [ 06/Dec/19 ]

fixed

Comment by AjaxGb [ 15/Oct/16 ]

This really should be reopened. I've had a look at the code, and the problem is very clear and easy to fix.

The following is based on 1.10.2 decompiled with MCP, with some edited variable names for clarity. Please link to this comment in the description.

When you right click with a bucket, full buckets will ignore liquids when raycasting, while empty buckets will not.

RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, bucketIsEmpty);
                                                                  ^
                                                             useLiquids

The bug happens because all blocks with no collision are treated as liquids by this function.

protected RayTraceResult rayTrace(World worldIn, EntityPlayer playerIn, boolean useLiquids)
{
    float f = playerIn.rotationPitch;
    ...code omitted...
    return worldIn.rayTraceBlocks(vec3d, vec3d1, useLiquids, !useLiquids, false);
                                                      ^            ^
                                              stopOnLiquid      ignoreBlockWithoutBoundingBox
}

A quick fix would be to add a second function that doesn't assume it should do this:

protected RayTraceResult rayTrace(World worldIn, EntityPlayer playerIn, boolean useLiquids)
{
    return rayTrace(worldIn, playerIn, useLiquids, !useLiquids);
}

protected RayTraceResult rayTrace(World worldIn, EntityPlayer playerIn, boolean useLiquids, boolean ignoreBlockWithoutBoundingBox)
{
    float f = playerIn.rotationPitch;
    ...code omitted...
    return worldIn.rayTraceBlocks(vec3d, vec3d1, useLiquids, ignoreBlockWithoutBoundingBox, false);
}

and then to use the new function when using buckets:

RayTraceResult raytraceresult = this.rayTrace(worldIn, playerIn, bucketIsEmpty, false);

That way, all other raycasts would have the same functionality as before, and water/lava could be placed on signs and things. Alternatively, swap that false for a true, and buckets would consistently ignore those blocks.

Comment by yut951121 [ 27/Jul/16 ]

Happens with strings too. https://www.reddit.com/r/Minecraft/comments/4uum6b/til_you_can_place_water_through_string_but_not/

Comment by [Mod] redstonehelper [ 02/Jun/16 ]

Ticket is up for review.

Comment by Ray [ 02/Jun/16 ]

Can this be reopened because this behavior doesn't work consistently across other similar blocks.

Comment by Marcono1234 [ 21/May/16 ]

Confirmed for

  • 16w20a
Comment by Itouch2 [ 01/Mar/14 ]

Still a concern in 1.7.5 and 1.8

Comment by Tails [ 10/Dec/12 ]

Confirmed.

Generated at Sun Jan 12 12:04:23 UTC 2025 using Jira 9.12.2#9120002-sha1:301bf498dd45d800842af0b84230f1bb58606c13.