diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java b/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java index 1df47fb4..477f67f7 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/HMCCosmetics.java @@ -64,6 +64,7 @@ public class HMCCosmetics extends JavaPlugin { this.messageHandler.close(); this.userManager.cancelTeleportTask(); this.userManager.removeAll(); + this.database.close(); } private void registerListeners() { diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java b/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java index e0375121..15cf4abc 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/user/User.java @@ -179,9 +179,9 @@ public class User { packet.getIntegers().write(4, (int) location.getPitch()); packet.getIntegers().write(5, (int) location.getYaw()); // Set location - packet.getDoubles().write(0, 0d); - packet.getDoubles().write(1, -5d); - packet.getDoubles().write(2, 0d); + packet.getDoubles().write(0, location.getX()); + packet.getDoubles().write(1, location.getY()); + packet.getDoubles().write(2, location.getZ()); // Set UUID packet.getUUIDs().write(0, UUID.randomUUID()); @@ -308,4 +308,9 @@ public class User { public void setDye(final int dye) { this.playerArmor.setDye(dye); } + + public boolean hasArmorStand() { + return hasArmorStand; + } + } diff --git a/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java b/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java index 2048e2c6..e0b591ac 100644 --- a/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java +++ b/src/main/java/io/github/fisher2911/hmccosmetics/user/UserManager.java @@ -33,6 +33,7 @@ public class UserManager { private final HMCCosmetics plugin; private final Map userMap = new HashMap<>(); + private final Map armorStandIdMap = new HashMap<>(); private BukkitTask teleportTask; @@ -43,6 +44,7 @@ public class UserManager { public void add(final User user) { this.userMap.put(user.getUuid(), user); + this.armorStandIdMap.put(user.getArmorStandId(), user); this.setFakeHelmet(user); } @@ -59,6 +61,8 @@ public class UserManager { if (user == null) return; + this.armorStandIdMap.remove(user.getArmorStandId()); + user.removeAllCosmetics(); this.setFakeHelmet(user); user.despawnAttached(); @@ -124,6 +128,32 @@ public class UserManager { } } }); + + // not sure if this fixes anything, removed for now +// protocolManager.addPacketListener(new PacketAdapter( +// this.plugin, +// ListenerPriority.NORMAL, +// PacketType.Play.Server.ENTITY_DESTROY) { +// @Override +// public void onPacketReceiving(PacketEvent event) { +// +// } +// +// @Override +// public void onPacketSending(final PacketEvent event) { +// if (event.getPacketType() == PacketType.Play.Server.ENTITY_DESTROY) { +// final int id = event.getPacket().getIntegers().read(0); +// +// final User user = armorStandIdMap.get(id); +// +// if (user == null) return; +// +// if (!user.hasArmorStand()) return; +// +// user.spawnArmorStand(); +// } +// } +// }); } public void setFakeHelmet(final User user) {