The bug
It affects all gamemodes, when you are riding a mob (no minecart or boat) and you look around in this person view, it twists your head backwards if you look in the opposite direction of the mob.
Here is a video demonstrating it:
http://www.youtube.com/watch?v=5zV4kRict30
Code analysis
See @unknown's comment.
Related issues
is duplicated by
relates to
Attachments
Comments


I can duplicate this easily.

Confirmed. When riding a minecart or boat the whole player turns when the head turns, but on a pig the pig and player stands still and only the head rotates owl-like.

I Thought that was a feature to make it more like riding like a horse

Confirmed on snapshot 13w06a

This is the same of MC-1545.

Confirmed for Donkey in 14w19a.

confirmed for 14w31a

confirmed for 14w32b

Confirmed for 1.8-pre1.

Confirmed for 1.8-pre3

Confirmed for 1.8.

I can also confirm for 1.8.1-pre3

I can confirm for Minecraft 1.8.1 and 1.8.2-pre1

Confirmed 1.8.3

This has happened to me. I'm not sure if it's fixed by now as it only happened yesterday before I logged off, so...yea!

Confirmed for 1.8.4, appears to be effective whenever the player is riding any entity, including armor stands and all mobs that weren't mentioned here. It also appears to invert the yaw aspect of the head as well as the pitch.

Not only for players, I spawned a zombie with my head riding a zombie horse. The head was backewards on it, too!
It makes it hard to take what I was building seriously.

Confirmed in 1.8.7.

Confirmed for 1.8.8.

Confirmed for 15w43c.

Confirmed for 15w44a.

Confirmed 15w46a 😞

Please add that this effects riding all mobs aside from Boats

Can confirm for 15w51b. This also affects mobs riding other mobs (or Armor Stands in my case)

Confirmed for 16w06a

Can confirm for Release 1.9.

confirmed for 1.9.2

Confirmed for 1.10.1.

Before everyone starts adding random entities, I removed the list. And as I was already on it, I changed the description. I'm pretty sure that minecarts and boats are the only exceptions to this, but if there are more, feel free to correct me.

Confirmed for 16w39a.

Confirmed for 1.11.

Confirmed for 17w06a.

Confirmed for 17w15a.

Confirmed for 17w18b

So I've been looking into this issue, and it appears to be caused by the rotation offset applied in doRender, in RenderLivingBase. If an entity is riding an entity that extends EntityLivingBase, the 'f' value is modified, which is the rotation point for the body.
This is applied as a global rotation, which breaks head rotations. f2 could be modified, however that's linked to body rotation eventually as well. It appears it'll need to pass extra info through to solve this.
(Everything using MCP names for 1.11.2)

@@unknown to be honest I think the bug is that you can rotate that far at all. Instead the rotation should be restricted like it is currently the case with boats.

@marcono1234 I disagree with that completely. Yes, specific things like boats should restrict rotation. However there was a use case that I had (years ago at this point, so idr) that would rotate an entity with no AI separately from the entity it was riding.
I'm pretty sure I was attempting to use an armor stand as a marker for where a villager was standing while rotating the villager to face a specific direction. I think I would have had to rotate both the armor stand and the villager to face that direction if I wanted to get it to work correctly. It would be even worse if I had to rotate the armor stand specifically before the villager, otherwise the villager would pop back to whatever direction it is forced to look by what you are suggesting.

After extensive testing, I can say that the highlighted line in the following image fixes the problem without any loss of functionality: http://i.imgur.com/H06P4AI.png
This is using MCP names, but should be super easy to transfer to MC names.

Confirmed for 1.12.

I can confirm this was fixed in 1.12 using the above code. I had a quick chat to Grum and he confirmed that it was merged in for 1.12, and I've re-ran the tests I ran when I made the patch with vanilla 1.12 and it is working as it should.