Confirmed still present in 14w03b.
Problem happen only if X and/or Z are negatives, due to lack of floor()'ing in the function in charge of Entities dismounting.
To fix in CraftBukkit
src\\main\\java\\net\\minecraft\\server\\EntityLiving.java , lines 1093/1094
int k = (int) (this.locX + (double) i); int l = (int) (this.locZ + (double) j);
becomes
int k = (int) MathHelper.floor(this.locX + (double) i); int l = (int) MathHelper.floor(this.locZ + (double) j);
To fix in mcp903
src\\minecraft\\net\\minecraft\\entity\\EntityLivingBase.java , lines 1508/1509
int var12 = (int)(this.posX + (double)var10); int var13 = (int)(this.posZ + (double)var11);
int var12 = (int)MathHelper.floor_double(this.posX + (double)var10); int var13 = (int)MathHelper.floor_double(this.posZ + (double)var11);
Of course, it's on server's side 😉
Confirmed still present in 14w03b.
Problem happen only if X and/or Z are negatives, due to lack of floor()'ing in the function in charge of Entities dismounting.
To fix in CraftBukkit
src\\main\\java\\net\\minecraft\\server\\EntityLiving.java , lines 1093/1094
becomes
To fix in mcp903
src\\minecraft\\net\\minecraft\\entity\\EntityLivingBase.java , lines 1508/1509
becomes
Of course, it's on server's side 😉