diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java index 8ec50c7c..6dca010e 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBackpackType.java @@ -3,6 +3,8 @@ package com.hibiscusmc.hmccosmetics.cosmetic.types; import com.hibiscusmc.hmccosmetics.config.Settings; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +import com.hibiscusmc.hmccosmetics.user.manager.UserBackpackManager; +import com.hibiscusmc.hmccosmetics.user.manager.UserEntity; import com.hibiscusmc.hmccosmetics.util.MessagesUtil; import com.hibiscusmc.hmccosmetics.util.packets.HMCCPacketManager; import lombok.Getter; @@ -39,10 +41,11 @@ public class CosmeticBackpackType extends Cosmetic { @Override public void update(@NotNull CosmeticUser user) { - Entity entity = Bukkit.getEntity(user.getUniqueId()); + Entity entity = user.getEntity(); if (entity == null) return; - Location loc = entity.getLocation().clone().add(0, 2, 0); + Location entityLocation = entity.getLocation(); + Location loc = entityLocation.clone().add(0, 2, 0); if (user.isInWardrobe() || !user.isBackpackSpawned()) return; if (user.isHidden()) { @@ -50,22 +53,27 @@ public class CosmeticBackpackType extends Cosmetic { user.despawnBackpack(); return; } - List outsideViewers = user.getUserBackpackManager().getEntityManager().refreshViewers(loc); - user.getUserBackpackManager().getEntityManager().teleport(loc); - user.getUserBackpackManager().getEntityManager().setRotation((int) loc.getYaw(), isFirstPersonCompadible()); + UserBackpackManager backpackManager = user.getUserBackpackManager(); + UserEntity entityManager = backpackManager.getEntityManager(); + int firstArmorStandId = backpackManager.getFirstArmorStandId(); - HMCCPacketManager.sendEntitySpawnPacket(user.getEntity().getLocation(), user.getUserBackpackManager().getFirstArmorStandId(), EntityType.ARMOR_STAND, UUID.randomUUID(), outsideViewers); - HMCCPacketManager.sendArmorstandMetadata(user.getUserBackpackManager().getFirstArmorStandId(), outsideViewers); - PacketManager.equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(this, getItem()), outsideViewers); + List outsideViewers = entityManager.refreshViewers(loc); + + entityManager.teleport(loc); + entityManager.setRotation((int) loc.getYaw(), isFirstPersonCompadible()); + + HMCCPacketManager.sendEntitySpawnPacket(entityLocation, firstArmorStandId, EntityType.ARMOR_STAND, UUID.randomUUID(), outsideViewers); + HMCCPacketManager.sendArmorstandMetadata(firstArmorStandId, outsideViewers); + PacketManager.equipmentSlotUpdate(firstArmorStandId, EquipmentSlot.HEAD, user.getUserCosmeticItem(this, getItem()), outsideViewers); // If true, it will send the riding packet to all players. If false, it will send the riding packet only to new players - if (Settings.isBackpackForceRidingEnabled()) HMCCPacketManager.sendRidingPacket(entity.getEntityId(), user.getUserBackpackManager().getFirstArmorStandId(), user.getUserBackpackManager().getEntityManager().getViewers()); - else HMCCPacketManager.sendRidingPacket(entity.getEntityId(), user.getUserBackpackManager().getFirstArmorStandId(), outsideViewers); + if (Settings.isBackpackForceRidingEnabled()) HMCCPacketManager.sendRidingPacket(entity.getEntityId(), firstArmorStandId, entityManager.getViewers()); + else HMCCPacketManager.sendRidingPacket(entity.getEntityId(), firstArmorStandId, outsideViewers); if (!user.isInWardrobe() && isFirstPersonCompadible() && user.getPlayer() != null) { List owner = List.of(user.getPlayer()); - ArrayList particleCloud = user.getUserBackpackManager().getAreaEffectEntityId(); + ArrayList particleCloud = backpackManager.getAreaEffectEntityId(); for (int i = 0; i < particleCloud.size(); i++) { if (i == 0) { HMCCPacketManager.sendRidingPacket(entity.getEntityId(), particleCloud.get(i), owner); @@ -73,16 +81,16 @@ public class CosmeticBackpackType extends Cosmetic { HMCCPacketManager.sendRidingPacket(particleCloud.get(i - 1), particleCloud.get(i) , owner); } } - HMCCPacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1), user.getUserBackpackManager().getFirstArmorStandId(), owner); + HMCCPacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1), firstArmorStandId, owner); if (!user.isHidden()) { //if (loc.getPitch() < -70) NMSHandlers.getHandler().equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, new ItemStack(Material.AIR), owner); //else NMSHandlers.getHandler().equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, firstPersonBackpack, owner); - PacketManager.equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(this, firstPersonBackpack), owner); + PacketManager.equipmentSlotUpdate(firstArmorStandId, EquipmentSlot.HEAD, user.getUserCosmeticItem(this, firstPersonBackpack), owner); } //MessagesUtil.sendDebugMessages("First Person Backpack Update[owner=" + user.getUniqueId() + ",player_location=" + loc + "]!", Level.INFO); } - user.getUserBackpackManager().showBackpack(); + backpackManager.showBackpack(); } public boolean isFirstPersonCompadible() { diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java index 133929e9..51d3b7d4 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBackpackManager.java @@ -27,7 +27,7 @@ public class UserBackpackManager { @Getter private boolean backpackHidden; @Getter - private int invisibleArmorStand; + private final int invisibleArmorStand; private ArrayList particleCloud = new ArrayList<>(); @Getter private final CosmeticUser user;