The bug
The potion particles are not spawning in the middle of the block. They're spawning on the edge of the block. Does not happen when you use the following command with a command block:
/particle <particle> ~0 ~1 ~0 0 0 0 1 1
Code analysis
Code analysis by @unknown can be found in this comment.
Linked issues
is duplicated by
relates to
Attachments
Comments


Fixed in 14w05b.
Tested with
/particle mobSpell ~0 ~1 ~0 0 0 0 1 5
Please re-open this issue. The bug is still prevalent in 14w27b. No matter where you throw a splash potion, the particles only appear on the North-West corner of the block they landed on.

Reopened and confirmed.
Confirmed 1.8-pre1
Confirmed 1.8-pre2
Affects 1.8.

Confirmed for
1.8.2-pre1
Still affects 1.8.3.
Affects 1.8.4
Still affecting 1.8.5 : http://prntscr.com/78hpcl
Affects 15w31a!

Confirmed for 15w32b.
Still confirmed for 15w33a. I hope this gets fixed now there are new Lingering potions
Affects 15w33b.
Affects 15w34a.
Affects 15w34d.
Mathias K.: Since the original reporter seems inactive I've given you the ticket. Take good care of it 🙂

Bug confirmed for 15w47a.
Bug is still existent in 15w47b.
This bug affects 15w47c.

Confirmed for
15w50a
The reason for that is that the method playAuxSFX(int p_175718_1_, BlockPos p_175718_2_, int p_175718_3_)
in the /Client/src/net/minecraft/world/World.java
class takes a BlockPos
as argument (MCP 1.8 names). However BlockPos
can only store three integers. This is also the reason why for example doors being broken display their particles in the center of the block (very likely). This method is not only used for rendering but also for the sound, which is the reason why the method used by the /particle
command cannot be used for potions (as well as the fact that that method ignores the particle settings).
Edit: There are actually two methods of the net.minecraft.world.World
class that could be used instead (together):
playSoundEffect(double x, double y, double z, String soundName, float volume, float pitch)
spawnParticle(EnumParticleTypes p_175688_1_, double p_175688_2_, double p_175688_4_, double p_175688_6_, double p_175688_8_, double p_175688_10_, double p_175688_12_, int ... p_175688_14_)
still in 1.9.4

Can confirm for 17w50a. Please update the affected versions for said version.

Still affects 18w05a, please update!

Affects 18w09a.
Yet confirmed in latest -release and -snapshot versions. Seems to be a simple bug with unnecessary float -> integer conversions of x/y/z coordinates.

Affects 1.13-pre6. Please keep the issue updated accordingly.

Affects 1.13-pre7
It also seems like the spread not only offsets to negative X and Z coordinates, but also to a negative Y coordinate. You could make splash potions sink into the ground by throwing them on end portal frames at a certain angle. The same applies to slabs and most slab-like blocks.
Present in 1.14.4 and all prior versions...
The packet for splash potions takes integers for the location, instead of floats or doubles.
Issue should probably be updated to include a feature request to change location parameters of (World) Effect packet ID 0x22 (34) to some floating point types.
Unfortunately, almost all of the effects that can be sent from this packet, make sense to only use block location, so this is probably not a big concern for the developers.

Relates closely to MC-76810
Affects 1.15 and 1.15.1 pre-release 1.

Also Eye of Ender broken particles are offset.
[media]
@@unknown, that is a separate issue and I created MC-172739 for it and attached your video there.
Please comment on it if you want to become the reporter.

Affects 1.16 pre5
Resolved? in 1.16 Pre-release 6.
Splash potion particles now always spread from the center of the block, regardless of impact
Use absolute coordinates and add .5 to the end of the x and z coordinates. It's the only advice I can offer.