Fix look packets being weird in 1.8
This commit is contained in:
		| @@ -1299,28 +1299,28 @@ public class PacketsManager { | ||||
|                         packets = new PacketContainer[0]; | ||||
|                     } else { | ||||
|                         packets[0] = sentPacket.shallowClone(); | ||||
|                         StructureModifier<Object> mods = packets[0].getModifier(); | ||||
|                         byte yawValue = (Byte) mods.read(4); | ||||
|                         mods.write(4, getYaw(disguise.getType(), entity.getType(), yawValue)); | ||||
|                         byte pitchValue = (Byte) mods.read(5); | ||||
|                         mods.write(5, getPitch(disguise.getType(), DisguiseType.getType(entity.getType()), pitchValue)); | ||||
|                         if (sentPacket.getType() == PacketType.Play.Server.ENTITY_TELEPORT) { | ||||
|                             if (disguise.getType() == DisguiseType.ITEM_FRAME) { | ||||
|                                 Location loc = entity.getLocation(); | ||||
|                                 int data = ((((int) loc.getYaw() % 360) + 720 + 45) / 90) % 4; | ||||
|                         StructureModifier<Byte> bytes = packets[0].getBytes(); | ||||
|                         boolean tele = sentPacket.getType() == PacketType.Play.Server.ENTITY_TELEPORT; | ||||
|                         byte yawValue = (Byte) bytes.read(tele ? 0 : 3); | ||||
|                         bytes.write(3, getYaw(disguise.getType(), entity.getType(), yawValue)); | ||||
|                         byte pitchValue = (Byte) bytes.read(tele ? 1 : 4); | ||||
|                         bytes.write(4, getPitch(disguise.getType(), DisguiseType.getType(entity.getType()), pitchValue)); | ||||
|                         if (tele && disguise.getType() == DisguiseType.ITEM_FRAME) { | ||||
|                             StructureModifier<Integer> ints = packets[0].getIntegers(); | ||||
|                             Location loc = entity.getLocation(); | ||||
|                             int data = ((((int) loc.getYaw() % 360) + 720 + 45) / 90) % 4; | ||||
|                             if (data % 2 == 0) { | ||||
|                                 if (data % 2 == 0) { | ||||
|                                     if (data % 2 == 0) { | ||||
|                                         mods.write(3, (int) Math.floor((loc.getZ() + (data == 0 ? -1 : 1)) * 32D)); | ||||
|                                     } else { | ||||
|                                         mods.write(1, (int) Math.floor((loc.getX() + (data == 3 ? -1 : 1)) * 32D)); | ||||
|                                     } | ||||
|                                 } | ||||
|                                 double y = getYModifier(entity, disguise); | ||||
|                                 if (y != 0) { | ||||
|                                     y *= 32; | ||||
|                                     mods.write(2, (Integer) mods.read(2) + (int) Math.floor(y)); | ||||
|                                     ints.write(3, (int) Math.floor((loc.getZ() + (data == 0 ? -1 : 1)) * 32D)); | ||||
|                                 } else { | ||||
|                                     ints.write(1, (int) Math.floor((loc.getX() + (data == 3 ? -1 : 1)) * 32D)); | ||||
|                                 } | ||||
|                             } | ||||
|                             double y = getYModifier(entity, disguise); | ||||
|                             if (y != 0) { | ||||
|                                 y *= 32; | ||||
|                                 ints.write(2, (Integer) ints.read(2) + (int) Math.floor(y)); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user