Mojira Archive
MC-105820

Relative decimal coordinates with block related commands are inconsistent

Basically, when you use

/setblock ~.4 ~ ~ stone

and stand at the most positive side of a block, right against another block, the stone gets placed in you, wheres

/setblock ~-.4 ~ ~ stone

and standing at the most negative side of a block is places it at the block next to you.

See screenshots.

This issue occures with the following commands:

  • /fill
  • /setblock
  • /blockdata
  • /testforblock
  • /testforblocks
  • /stats block
  • /replaceitem block

Happens in both single player and multiplayer, so it's not a desync.

Expected behaviour:

  • The block besides you gets targeted in both cases.

Reason this happens:
With these commands the coordinates ignore on what decimal you were in the first place, it get's rounded down to x.0 z.0.
So standing on the most positive part, and using ~.9999999 still places the block in you as x/y/z.0 +0.9999999 = x/z.9999999 =x/y/z.
A simple fix could be to round the numbers only after the final coordinates are calculated, rather then rounding down every coordinate provided.
So basically, the game said: .7 + .4 = .0+.0 = 0 instead of .7 + .4 = 1.1 = 1.


Code analysis by Marcono1234 can be found in this comment.

Fixed

user-f2760

[Mojang] Nathan Adams

2016-08-04, 01:30 PM

2020-02-07, 05:17 PM

2017-11-16, 04:18 PM

4

7

Confirmed

Minecraft 1.10.2, Minecraft 16w32a

Minecraft 17w45a, Minecraft 17w47a