Fixed up the yaw some moar

This commit is contained in:
Andrew 2013-07-29 15:25:36 +12:00
parent 95256f8d6f
commit cf5ec6d722

View File

@ -154,7 +154,7 @@ public class LibsDisguises extends JavaPlugin {
event.setPacket(event.getPacket().shallowClone()); event.setPacket(event.getPacket().shallowClone());
StructureModifier<Object> mods = event.getPacket().getModifier(); StructureModifier<Object> mods = event.getPacket().getModifier();
byte value = (Byte) mods.read(4); byte value = (Byte) mods.read(4);
mods.write(4, getYaw(DisguiseType.getType(entity.getType()), disguise.getType(), value)); mods.write(4, getYaw(disguise.getType(), DisguiseType.getType(entity.getType()), value));
} }
} }
} catch (Exception e) { } catch (Exception e) {
@ -183,17 +183,17 @@ public class LibsDisguises extends JavaPlugin {
}); });
} }
private byte getYaw(DisguiseType entityType, DisguiseType disguiseType, int value) { private byte getYaw(DisguiseType disguiseType, DisguiseType entityType, byte value) {
switch (disguiseType) { switch (disguiseType) {
case ENDER_DRAGON: case ENDER_DRAGON:
value -= 128; value -= 128;
break; break;
case ITEM_FRAME: case ITEM_FRAME:
case ARROW: case ARROW:
value = -value; value = (byte) -value;
break; break;
case PAINTING: case PAINTING:
value = -(value + 128); value = (byte) -(value + 128);
break; break;
default: default:
if (disguiseType.isMisc()) { if (disguiseType.isMisc()) {
@ -207,18 +207,18 @@ public class LibsDisguises extends JavaPlugin {
break; break;
case ITEM_FRAME: case ITEM_FRAME:
case ARROW: case ARROW:
value = -value; value = (byte) -value;
break; break;
case PAINTING: case PAINTING:
value = -(value - 128); value = (byte) -(value - 128);
break; break;
default: default:
if (disguiseType.isMisc()) { if (entityType.isMisc()) {
value += 64; value += 64;
} }
break; break;
} }
return (byte) value; return value;
} }
private void sendDelayedPacket(final PacketContainer packet, final Player player) { private void sendDelayedPacket(final PacketContainer packet, final Player player) {
@ -238,6 +238,8 @@ public class LibsDisguises extends JavaPlugin {
ProtocolManager manager = ProtocolLibrary.getProtocolManager(); ProtocolManager manager = ProtocolLibrary.getProtocolManager();
net.minecraft.server.v1_6_R2.Entity nmsEntity = ((CraftEntity) disguisedEntity).getHandle(); net.minecraft.server.v1_6_R2.Entity nmsEntity = ((CraftEntity) disguisedEntity).getHandle();
Location loc = disguisedEntity.getLocation(); Location loc = disguisedEntity.getLocation();
byte yaw = getYaw(disguise.getType(), DisguiseType.getType(disguise.getEntity().getType()),
(byte) (int) (loc.getYaw() * 256.0F / 360.0F));
if (disguise.getType() == DisguiseType.EXPERIENCE_ORB) { if (disguise.getType() == DisguiseType.EXPERIENCE_ORB) {
spawnPackets[0] = manager.createPacket(Packets.Server.ADD_EXP_ORB); spawnPackets[0] = manager.createPacket(Packets.Server.ADD_EXP_ORB);
@ -268,7 +270,7 @@ public class LibsDisguises extends JavaPlugin {
mods.write(1, (int) Math.floor(loc.getX() * 32D)); mods.write(1, (int) Math.floor(loc.getX() * 32D));
mods.write(2, (int) Math.floor(loc.getY() * 32D)); mods.write(2, (int) Math.floor(loc.getY() * 32D));
mods.write(3, (int) Math.floor(loc.getZ() * 32D)); mods.write(3, (int) Math.floor(loc.getZ() * 32D));
mods.write(4, (byte) (int) (loc.getYaw() * 256.0F / 360.0F)); mods.write(4, yaw);
mods.write(5, (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); mods.write(5, (byte) (int) (loc.getPitch() * 256.0F / 360.0F));
} else if (disguise.getType().isPlayer()) { } else if (disguise.getType().isPlayer()) {
@ -280,7 +282,7 @@ public class LibsDisguises extends JavaPlugin {
mods.write(2, (int) Math.floor(loc.getX() * 32)); mods.write(2, (int) Math.floor(loc.getX() * 32));
mods.write(3, (int) Math.floor(loc.getY() * 32)); mods.write(3, (int) Math.floor(loc.getY() * 32));
mods.write(4, (int) Math.floor(loc.getZ() * 32)); mods.write(4, (int) Math.floor(loc.getZ() * 32));
mods.write(5, (byte) (int) (loc.getYaw() * 256F / 360F)); mods.write(5, yaw);
mods.write(6, (byte) (int) (loc.getPitch() * 256F / 360F)); mods.write(6, (byte) (int) (loc.getPitch() * 256F / 360F));
ItemStack item = null; ItemStack item = null;
if (disguisedEntity instanceof Player && ((Player) disguisedEntity).getItemInHand() != null) { if (disguisedEntity instanceof Player && ((Player) disguisedEntity).getItemInHand() != null) {
@ -320,10 +322,7 @@ public class LibsDisguises extends JavaPlugin {
mods.write(5, (int) (d2 * 8000.0D)); mods.write(5, (int) (d2 * 8000.0D));
mods.write(6, (int) (d3 * 8000.0D)); mods.write(6, (int) (d3 * 8000.0D));
mods.write(7, (int) (d4 * 8000.0D)); mods.write(7, (int) (d4 * 8000.0D));
byte yawValue = (byte) (int) (loc.getYaw() * 256.0F / 360.0F); mods.write(8, yaw);
if (disguise.getType() == DisguiseType.ENDER_DRAGON)
yawValue -= 128;
mods.write(8, yawValue);
mods.write(9, (byte) (int) (loc.getPitch() * 256.0F / 360.0F)); mods.write(9, (byte) (int) (loc.getPitch() * 256.0F / 360.0F));
if (nmsEntity instanceof EntityLiving) if (nmsEntity instanceof EntityLiving)
mods.write(10, (byte) (int) (((EntityLiving) nmsEntity).aA * 256.0F / 360.0F)); mods.write(10, (byte) (int) (((EntityLiving) nmsEntity).aA * 256.0F / 360.0F));
@ -375,7 +374,7 @@ public class LibsDisguises extends JavaPlugin {
mods.write(6, (int) (d3 * 8000.0D)); mods.write(6, (int) (d3 * 8000.0D));
} }
mods.write(7, (int) MathHelper.floor(loc.getPitch() * 256.0F / 360.0F)); mods.write(7, (int) MathHelper.floor(loc.getPitch() * 256.0F / 360.0F));
mods.write(8, (int) MathHelper.floor(loc.getYaw() * 256.0F / 360.0F) - 64); mods.write(8, yaw);
mods.write(9, id); mods.write(9, id);
mods.write(10, data); mods.write(10, data);