diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index abda93ff..816f0eb6 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -578,7 +578,11 @@ public class PlayerGameListener implements Listener { MessagesUtil.sendDebugMessages("Look Packet "); Player player = event.getPlayer(); if (event.getPlayer() == null) return; - if (!(event.getPlayer() instanceof Player)) return; + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + if (user.isBackpackSpawned()) { + user.getUserBackpackManager().getEntityManager().setRotation(Math.round(event.getPacket().getFloat().read(0))); + } } }); } @@ -591,20 +595,29 @@ public class PlayerGameListener implements Listener { MessagesUtil.sendDebugMessages("Position Packet "); Player player = event.getPlayer(); if (event.getPlayer() == null) return; - if (!(event.getPlayer() instanceof Player)) return; + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + if (user.isBackpackSpawned()) { + // The yaw follows the head, which makes it look weird and do weird things when moving around + user.getUserBackpackManager().getEntityManager().teleport(new Location(player.getWorld(), event.getPacket().getDoubles().read(0), event.getPacket().getDoubles().read(1), event.getPacket().getDoubles().read(2), event.getPacket().getFloat().read(0), event.getPacket().getFloat().read(1))); + } } }); } private void registerTeleportMovement() { - ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.TELEPORT_ACCEPT) { + ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.POSITION_LOOK) { @Override public void onPacketReceiving(PacketEvent event) { // TODO: Finish MessagesUtil.sendDebugMessages("Teleport Packet "); Player player = event.getPlayer(); if (event.getPlayer() == null) return; - if (!(event.getPlayer() instanceof Player)) return; + CosmeticUser user = CosmeticUsers.getUser(player); + if (user == null) return; + if (user.isBackpackSpawned()) { + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> user.updateCosmetic(CosmeticSlot.BACKPACK)); + } } }); }