mojira.dev
MC-54119

Can place/take water/lava/lily pads outside world border and inside spawn protection

The bug

When you try to interact with water, lily pads, or lava beyond the worldborder or inside the spawn protection the client and server will disagree about the outcome.

This leads to ghost (client-side only) holes in the water, or standing water source blocks, or floating lily pads, or ghost objects in your inventory which all reset as soon as the server interacts with them (eg: empty ghostwater into valid playing space or relog).

Code analysis

The following is based on a decompiled version of Minecraft 1.9 using MCP 9.24 beta.

The reason for this is that the method net.minecraft.world.World.isBlockModifiable(EntityPlayer, BlockPos) which is called to test if the player can modify the block returns always true for the client. For the server the overridden method net.minecraft.world.WorldServer.isBlockModifiable(EntityPlayer, BlockPos) tests if the block is not inside the spawn protection and inside the world border. As the client knows at least the worldborder information, the parent method probably should contain this code instead of only the server method.

Linked issues

Attachments

Comments 56

Dlawso the Really Lucky Rabbit

Confirmed.

Confirmed.

Happ MacDonald

Confirmed 14w18b, also it seems that the water you take is ghost water, and the hole that you leave is a ghost-hole.

Proof: Take water from beyond worldborder. you get an unmoving hole in the water visibly apparent, and a visibly apparent bucket-full-of-water.

Try emptying your bucket back into the hole. Empty bucket, hole back to normal and full of water.

Try emptying your bucket anywhere else, outside or even inside the world border. Empty bucket, but no water.

Try restarting your world, or reconnecting in SMP. Hole you left vanishes, bucket-full-of-water you were holding (if holding one) is now empty.

Try having third party walk up to you and inspect the hole you left, or what you are holding in your hand. They will report no hole, empty bucket.

Thus, client side engine thinks you are taking water but server never allows that transaction to succeed. Client only continue to show you an illusion of water in a bucket or hole in the water until it's memory on that matter are cleared and brought back to jesus.

Confirmed for 14w18b

Good analysis, @unknown!

46 more comments

Can confirm in 21w14a.

Can confirm in 1.17 Release Candidate 2.

I'm still able to reproduce this issue in 1.18 Pre-release 1 and 1.18 Pre-release 5, so I'm requesting for this ticket to be reopened.

[media][media]

Can confirm this in 1.18.

[media]

I was told to create a new ticket regarding this issue so I've gone ahead and done so. The new report is MC-245845. 🙂

Stig Eide

Happ MacDonald

Ulraf

Confirmed

Low

Block states, Player

bucket, desync, glass_bottle, lava, lily_pad, spawn-protection, water, world-border

Minecraft 14w18a, Minecraft 14w18b, Minecraft 14w19a, Minecraft 14w20b, Minecraft 14w21b, ..., 21w07a, 21w14a, 21w18a, 1.17 Release Candidate 2, 1.17

1.18 Pre-release 1

Retrieved