diff --git a/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_12_R1.java b/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_12_R1.java index cc5e08b5ae..ee1a63b350 100644 --- a/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_12_R1.java +++ b/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_12_R1.java @@ -34,6 +34,7 @@ import org.bukkit.util.Vector; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.UUID; @@ -226,7 +227,7 @@ public BiomeNMS getBiomeNMS(Biome biome) { public HashMap attachmentsA = new HashMap(); // Key follows value public HashMap attachments2 = new HashMap(); // Value follows key public HashMap attachmentOffsets = new HashMap<>(); - public HashMap attachmentRotations = new HashMap<>(); + public HashSet attachmentRotations = new HashSet<>(); public HashMap visiblePositions = new HashMap<>(); @Override @@ -244,7 +245,7 @@ public void forceAttachMove(Entity a, Entity b, Vector offset, boolean matchRota attachments2.put(b.getUniqueId(), a.getUniqueId()); attachmentOffsets.put(a.getUniqueId(), offset); if (matchRotation) { - attachmentRotations.put(a.getUniqueId(), new Vector((((CraftEntity) b).getHandle()).pitch, (((CraftEntity) b).getHandle()).yaw, 0)); + attachmentRotations.add(a.getUniqueId()); } } } diff --git a/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_12_R1.java b/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_12_R1.java index dd4094b02c..517221bd1a 100644 --- a/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_12_R1.java +++ b/v1_12_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_12_R1.java @@ -146,13 +146,13 @@ else if (packet instanceof PacketPlayOutEntity) { ENTITY_ID_PACKENT.setInt(pNew, target.getEntityId()); Vector offset = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentOffsets.get(att); if (offset != null && (packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMove || packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook)) { - Vector rotationBasis = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentRotations.get(att); + boolean rotationBasis = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentRotations.contains(att); Vector goalPosition; - if (rotationBasis == null) { + if (!rotationBasis) { goalPosition = new Vector(e.locX, e.locY, e.locZ).add(offset); } else { - goalPosition = new Vector(e.locX, e.locY, e.locZ).add(NMSHandler.fixOffset(offset, rotationBasis.getY() - e.yaw, rotationBasis.getX() - e.pitch)); + goalPosition = new Vector(e.locX, e.locY, e.locZ).add(NMSHandler.fixOffset(offset, -e.yaw, e.pitch)); } Vector oldPos = ((Handler_v1_12_R1) NMSHandler.getInstance()).visiblePositions.get(target.getUniqueId()); if (oldPos == null) { @@ -235,13 +235,13 @@ else if (packet instanceof PacketPlayOutEntityTeleport) { Vector offset = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentOffsets.get(att); Vector resultPos = new Vector(POS_X_PACKTELENT.getDouble(pNew), POS_Y_PACKTELENT.getDouble(pNew), POS_Z_PACKTELENT.getDouble(pNew)); if (offset != null) { - Vector rotationBasis = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentRotations.get(att); + boolean rotationBasis = ((Handler_v1_12_R1) NMSHandler.getInstance()).attachmentRotations.contains(att); Vector goalOffset; - if (rotationBasis == null) { + if (!rotationBasis) { goalOffset = offset; } else { - goalOffset = NMSHandler.fixOffset(offset, rotationBasis.getY() - e.yaw, rotationBasis.getX() - e.pitch); + goalOffset = NMSHandler.fixOffset(offset, -e.yaw, e.pitch); } POS_X_PACKTELENT.setDouble(pNew, POS_X_PACKTELENT.getDouble(pNew) + goalOffset.getX()); POS_Y_PACKTELENT.setDouble(pNew, POS_Y_PACKTELENT.getDouble(pNew) + goalOffset.getY()); diff --git a/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_13_R2.java b/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_13_R2.java index 44153925e1..33c67e04da 100644 --- a/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_13_R2.java +++ b/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/Handler_v1_13_R2.java @@ -34,6 +34,7 @@ import org.bukkit.util.Vector; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; import java.util.UUID; @@ -226,7 +227,7 @@ public BiomeNMS getBiomeNMS(Biome biome) { public HashMap attachmentsA = new HashMap(); // Key follows value public HashMap attachments2 = new HashMap(); // Value follows key public HashMap attachmentOffsets = new HashMap<>(); - public HashMap attachmentRotations = new HashMap<>(); + public HashSet attachmentRotations = new HashSet<>(); public HashMap visiblePositions = new HashMap<>(); @Override @@ -244,7 +245,7 @@ public void forceAttachMove(Entity a, Entity b, Vector offset, boolean matchRota attachments2.put(b.getUniqueId(), a.getUniqueId()); attachmentOffsets.put(a.getUniqueId(), offset); if (matchRotation) { - attachmentRotations.put(a.getUniqueId(), new Vector((((CraftEntity) b).getHandle()).pitch, (((CraftEntity) b).getHandle()).yaw, 0)); + attachmentRotations.add(a.getUniqueId()); } } } diff --git a/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_13_R2.java b/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_13_R2.java index 93706d896b..28b7467929 100644 --- a/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_13_R2.java +++ b/v1_13_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/handlers/DenizenNetworkManager_v1_13_R2.java @@ -157,13 +157,13 @@ else if (packet instanceof PacketPlayOutEntity) { ENTITY_ID_PACKENT.setInt(pNew, target.getEntityId()); Vector offset = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentOffsets.get(att); if (offset != null && (packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMove || packet instanceof PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook)) { - Vector rotationBasis = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentRotations.get(att); + boolean rotationBasis = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentRotations.contains(att); Vector goalPosition; - if (rotationBasis == null) { + if (!rotationBasis) { goalPosition = new Vector(e.locX, e.locY, e.locZ).add(offset); } else { - goalPosition = new Vector(e.locX, e.locY, e.locZ).add(NMSHandler.fixOffset(offset, rotationBasis.getY() - e.yaw, rotationBasis.getX() - e.pitch)); + goalPosition = new Vector(e.locX, e.locY, e.locZ).add(NMSHandler.fixOffset(offset, -e.yaw, e.pitch)); } Vector oldPos = ((Handler_v1_13_R2) NMSHandler.getInstance()).visiblePositions.get(target.getUniqueId()); if (oldPos == null) { @@ -246,13 +246,13 @@ else if (packet instanceof PacketPlayOutEntityTeleport) { Vector offset = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentOffsets.get(att); Vector resultPos = new Vector(POS_X_PACKTELENT.getDouble(pNew), POS_Y_PACKTELENT.getDouble(pNew), POS_Z_PACKTELENT.getDouble(pNew)); if (offset != null) { - Vector rotationBasis = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentRotations.get(att); + boolean rotationBasis = ((Handler_v1_13_R2) NMSHandler.getInstance()).attachmentRotations.contains(att); Vector goalOffset; - if (rotationBasis == null) { + if (!rotationBasis) { goalOffset = offset; } else { - goalOffset = NMSHandler.fixOffset(offset, rotationBasis.getY() - e.yaw, rotationBasis.getX() - e.pitch); + goalOffset = NMSHandler.fixOffset(offset, -e.yaw, e.pitch); } POS_X_PACKTELENT.setDouble(pNew, POS_X_PACKTELENT.getDouble(pNew) + goalOffset.getX()); POS_Y_PACKTELENT.setDouble(pNew, POS_Y_PACKTELENT.getDouble(pNew) + goalOffset.getY());