I did notice that in snapshot 14w06a if you use(primary click) the fishing rod and remove the block underneath the one you cast it on, the bobber sinks through the block. This means if you cast the rod in 14w06a on an NPC village well, or any surface with an air block under it, the bobber will sink through the roof and land in the well. I hope that helps solve the visual error.
It turns out, the bobber is not always hitting a block when it bugs out: it also does this when thrown in the water when facing an angle > 35, 40 or 55 depending if the block you are casting is level with the water, a block above, or two blocks above the water line respectively. (Thanks new debug screen) Bug angle trend stops at 3 blocks above the water where you can cast at any angle without bugs in 2 block deep or more water.
Temporary fix:
Fish 3 or more blocks above the water line for almost bugless fishing. Just make sure the first 3 blocks away from your fishing platform are at least 2 deep.
Fish 4 blocks above the water line for bugless fishing at any angle and any depth.
At any height, make sure not to hit a block before you hit the water. ex, cast> hits block> slides into the water and does glitch
Sometimes if you let a fish bite and get away, the game will realize this bug and fix itself... But you might as well catch that fish instead of letting it get away unless you're recording video footage or something similar.
@David Truog 14w06b fixed the main bug with the casting.
The fishing rod in 14w06a tests to cast and appear lower than in previous versions.
This issue reminds me of an issue I had with Computercraft: I would add one to the variable (x = x+1) whenever I went up but I forgot to subtract one whenever I went down. Maybe when the bobber hits a block while being cast, it still subtracts one from it's height value, even though it's not going down and then comes up too far because of the variable information. I really want this bug fixed as fishing is one of, if not the best, ways to get food early game.
Perhaps you could add a test to fix this: In Computercraft, turtle.forward() ATTEMPTS to move the turtle forward and if it succeeds, it returns true, but if it doesn't move, it returns false. So...
if turtle.forward() true then
x=x+1
end
Maybe you could do something like this or better with the fishing rod bobber and the water level:
while bobberLevel < 0 do //while the bobber is below the water do the following
if bobberLevel < (variable for tracking bobber movement using co-ordinates) then //if the bobber is less than it's it's previously recorded position then...
(move graphical bobber down)
end
end
I'm pretty sure an experienced programmer would know how to check the XYZ of the bobber and move move the graphic in a better way than 3 if statements inside a while loop.
Thank you Dinnerbone!