Attached 3 more screenshots showing the view from inside a waterfall in 1.6.4 vs. 1.7.2 vs. 13w47c. 1.6.4 shows you where you are in relation to the water surface on all sides. The other two just have you sort of floating in space.
This has a gameplay impact as well as an aesthetic one. If you're trying to maneuver down a ravine using water flows, you can't easily see where the water ends and a potentially fatal drop begins.
Retested with Java 1.7.0_40, same result. Also confirmed with 13w41a.
Affects 13w16a.
Affects 1.5.1.
I first saw the crash with Misa's 1.5 texture pack, but since that's unreleased I made my own pack to illustrate the problem. Attached whoa15.zip which upscales the default textures to 64x and adds a 30-frame animation to each. Here's another crash report with the default heap size (1772MB in my case). Switching between default and whoa15.zip 4-5 times was enough to exhaust direct memory and crash.
Yes, please consider changing all the character and string width calculations to floats. That is essentially what MCPatcher's HD Font patch does now, and I'd like to remove that patch altogether someday.
Yes, the character widths are all over the place. The o, f, and s are way too wide for example, and the i is too narrow.
Attached a second screenshot: same font but using MCPatcher's HD Font patch instead.
Still present in 13w09c.
The problem appears to happen with any font that is not the default 128x128. I've attached another screenshot showing Misa's font.
FontRenderer (awp.class in 13w09c) seems to assume that each character is 8x8 when computing character widths.
I suspect the problem lies in bji.class. The method "public boolean c(String)" which checks if the texture pack contains a given file does not strip off the leading slash from the path. Adding a .substring(1) before calling ZipFile.getEntry should fix it.
I found the reason why 1.4.5 still has the bug. Jason's second proposed fix sets the prevPosX,Y,Z fields. Mojang's actual 1.4.5 fix sets lastTickPosX,Y,Z. Here's the diff in MCP:
diff --git a/src/minecraft/net/minecraft/src/EntityFX.java b/src/minecraft/net/minecraft/src/EntityFX.java
index 26f08ca..55b7042 100644
— a/src/minecraft/net/minecraft/src/EntityFX.java
+++ b/src/minecraft/net/minecraft/src/EntityFX.java
@@ -33,6 +33,9 @@ public class EntityFX extends Entity
this.setSize(0.2F, 0.2F);
this.yOffset = this.height / 2.0F;
this.setPosition(par2, par4, par6);
+ this.lastTickPosX = par2;
+ this.lastTickPosY = par4;
+ this.lastTickPosZ = par6;
this.particleRed = this.particleGreen = this.particleBlue = 1.0F;
this.motionX = par8 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F);
this.motionY = par10 + (double)((float)(Math.random() * 2.0D - 1.0D) * 0.4F);
Note: MCP for 1.4.4 appears to work to fine with 1.4.5, presumably because no classes were added or removed between the two versions which would affect the debofuscation mapping.
Yes it still happens with 15w47c. I agree that it is likely an LWJGL issue.