From e7307145deb8fe10057dd45e6babb54e528b5125 Mon Sep 17 00:00:00 2001 From: Logan Date: Tue, 30 Dec 2025 11:10:56 -0600 Subject: [PATCH] fix: not properly handling existing passengers set through bukkit --- .../cosmetic/types/CosmeticBackpackType.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) 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 9362bd73..12ddb692 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 @@ -74,8 +74,18 @@ public class CosmeticBackpackType extends Cosmetic implements CosmeticUpdateBeha } // 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(), firstArmorStandId, entityManager.getViewers()); - else HMCCPacketManager.sendRidingPacket(entity.getEntityId(), firstArmorStandId, newViewers); + int[] existingPassengers = entity.getPassengers().stream() + .mapToInt(Entity::getEntityId) + .toArray(); + boolean hasExistingPassengers = existingPassengers.length > 0; + + if (Settings.isBackpackForceRidingEnabled()) { + HMCCPacketManager.sendRidingPacket(entity.getEntityId(), firstArmorStandId, entityManager.getViewers()); + if (hasExistingPassengers) HMCCPacketManager.sendRidingPacket(firstArmorStandId, existingPassengers, entityManager.getViewers()); + } else { + HMCCPacketManager.sendRidingPacket(entity.getEntityId(), firstArmorStandId, newViewers); + if (hasExistingPassengers) HMCCPacketManager.sendRidingPacket(firstArmorStandId, existingPassengers, newViewers); + } if (isFirstPersonCompadible() && !user.isInWardrobe() && user.getPlayer() != null) { List owner = List.of(user.getPlayer()); @@ -88,7 +98,8 @@ public class CosmeticBackpackType extends Cosmetic implements CosmeticUpdateBeha HMCCPacketManager.sendRidingPacket(particleCloud.get(i - 1), particleCloud.get(i) , owner); } } - HMCCPacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1), firstArmorStandId, owner); + HMCCPacketManager.sendRidingPacket(particleCloud.getLast(), firstArmorStandId, owner); + if (hasExistingPassengers) HMCCPacketManager.sendRidingPacket(firstArmorStandId, existingPassengers, owner); if (!user.isHidden()) { PacketManager.equipmentSlotUpdate(firstArmorStandId, EquipmentSlot.HEAD, user.getUserCosmeticItem(this, firstPersonBackpack), owner); }