From d940a44f4936be53a0c93b9b1c7b1700f06b0275 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sat, 18 Jan 2014 14:46:18 +1300 Subject: [PATCH] Mobs no longer do horror stories of twisting their head around in circles when disguised as player --- .../disguise/utilities/PacketsManager.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/me/libraryaddict/disguise/utilities/PacketsManager.java b/src/me/libraryaddict/disguise/utilities/PacketsManager.java index 6e24d6e6..202b3ab8 100644 --- a/src/me/libraryaddict/disguise/utilities/PacketsManager.java +++ b/src/me/libraryaddict/disguise/utilities/PacketsManager.java @@ -66,11 +66,11 @@ public class PacketsManager { manager.addPacketListener(new PacketAdapter(libsDisguises, ListenerPriority.HIGH, PacketType.Play.Server.NAMED_ENTITY_SPAWN, PacketType.Play.Server.ENTITY_METADATA, PacketType.Play.Server.ANIMATION, PacketType.Play.Server.ENTITY_MOVE_LOOK, PacketType.Play.Server.ENTITY_LOOK, - PacketType.Play.Server.ENTITY_TELEPORT, PacketType.Play.Server.SPAWN_ENTITY_EXPERIENCE_ORB, - PacketType.Play.Server.SPAWN_ENTITY, PacketType.Play.Server.SPAWN_ENTITY_LIVING, - PacketType.Play.Server.SPAWN_ENTITY_PAINTING, PacketType.Play.Server.COLLECT, - PacketType.Play.Server.UPDATE_ATTRIBUTES, PacketType.Play.Server.ENTITY_EQUIPMENT, PacketType.Play.Server.BED, - PacketType.Play.Server.ENTITY_STATUS) { + PacketType.Play.Server.ENTITY_HEAD_ROTATION, PacketType.Play.Server.ENTITY_TELEPORT, + PacketType.Play.Server.SPAWN_ENTITY_EXPERIENCE_ORB, PacketType.Play.Server.SPAWN_ENTITY, + PacketType.Play.Server.SPAWN_ENTITY_LIVING, PacketType.Play.Server.SPAWN_ENTITY_PAINTING, + PacketType.Play.Server.COLLECT, PacketType.Play.Server.UPDATE_ATTRIBUTES, + PacketType.Play.Server.ENTITY_EQUIPMENT, PacketType.Play.Server.BED, PacketType.Play.Server.ENTITY_STATUS) { @Override public void onPacketSending(PacketEvent event) { final Player observer = event.getPlayer(); @@ -1221,6 +1221,24 @@ public class PacketsManager { packets = new PacketContainer[0]; } } + + else if (sentPacket.getType() == PacketType.Play.Server.ENTITY_HEAD_ROTATION) { + if (disguise.getType().isPlayer() && entity.getType() != EntityType.PLAYER) { + Location loc = entity.getLocation(); + byte pitch = getPitch(disguise.getType(), DisguiseType.getType(entity.getType()), + (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); + byte yaw = getYaw(disguise.getType(), entity.getType(), sentPacket.getBytes().read(0)); + PacketContainer rotation = new PacketContainer(PacketType.Play.Server.ENTITY_HEAD_ROTATION); + StructureModifier mods = rotation.getModifier(); + mods.write(0, entity.getEntityId()); + mods.write(1, yaw); + packets = new PacketContainer[] { + ProtocolLibrary + .getProtocolManager() + .createPacketConstructor(PacketType.Play.Server.ENTITY_LOOK, entity.getEntityId(), yaw, + pitch).createPacket(entity.getEntityId(), yaw, pitch), rotation }; + } + } } } catch (Exception e) { e.printStackTrace();