From 8011dda2008ee19b7e9138998510fa20cc9f54f2 Mon Sep 17 00:00:00 2001 From: Logan <37521985+LoJoSho@users.noreply.github.com> Date: Sat, 6 Sep 2025 23:19:31 -0500 Subject: [PATCH] feat: use new Hibiscus Commons methods for packets --- .../cosmetic/types/CosmeticBackpackType.java | 4 +- .../user/manager/UserBackpackManager.java | 7 ++- .../util/packets/HMCCPacketManager.java | 50 +++++++++++++++---- 3 files changed, 43 insertions(+), 18 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 c911fca3..ae5c0cc6 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 @@ -62,9 +62,7 @@ public class CosmeticBackpackType extends Cosmetic { entityManager.teleport(loc); entityManager.setRotation((int) loc.getYaw(), isFirstPersonCompadible()); - HMCCPacketManager.sendEntitySpawnPacket(entityLocation, firstArmorStandId, EntityType.ARMOR_STAND, UUID.randomUUID(), outsideViewers); - HMCCPacketManager.sendArmorstandMetadata(firstArmorStandId, outsideViewers); - + HMCCPacketManager.spawnInvisibleArmorstand(firstArmorStandId, entityLocation, UUID.randomUUID(), outsideViewers); if (user.getPlayer() != null) { AttributeInstance scaleAttribute = user.getPlayer().getAttribute(Attribute.GENERIC_SCALE); if (scaleAttribute != null) { 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 9ba9bd99..2dabd2b2 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 @@ -55,8 +55,8 @@ public class UserBackpackManager { getEntityManager().setIds(List.of(invisibleArmorStand)); getEntityManager().teleport(user.getEntity().getLocation()); List outsideViewers = getEntityManager().getViewers(); - HMCCPacketManager.sendEntitySpawnPacket(user.getEntity().getLocation(), getFirstArmorStandId(), EntityType.ARMOR_STAND, UUID.randomUUID(), getEntityManager().getViewers()); - HMCCPacketManager.sendArmorstandMetadata(getFirstArmorStandId(), outsideViewers); + + HMCCPacketManager.spawnInvisibleArmorstand(getFirstArmorStandId(), user.getEntity().getLocation(), UUID.randomUUID(), outsideViewers); if (user.getPlayer() != null) { AttributeInstance scaleAttribute = user.getPlayer().getAttribute(Attribute.GENERIC_SCALE); @@ -81,8 +81,7 @@ public class UserBackpackManager { if (cosmeticBackpackType.isFirstPersonCompadible()) { for (int i = particleCloud.size(); i < cosmeticBackpackType.getHeight(); i++) { int entityId = ServerUtils.getNextEntityId(); - HMCCPacketManager.sendEntitySpawnPacket(user.getEntity().getLocation(), entityId, EntityType.AREA_EFFECT_CLOUD, UUID.randomUUID()); - HMCCPacketManager.sendCloudEffect(entityId, HMCCPacketManager.getViewers(user.getEntity().getLocation())); + HMCCPacketManager.spawnCloudAndHandleEffect(entityId, user.getEntity().getLocation(), UUID.randomUUID(), HMCCPacketManager.getViewers(user.getEntity().getLocation())); this.particleCloud.add(entityId); } // Copied code from updating the backpack diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/HMCCPacketManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/HMCCPacketManager.java index f7920999..4bab0edc 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/HMCCPacketManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/util/packets/HMCCPacketManager.java @@ -23,6 +23,7 @@ import java.util.*; public class HMCCPacketManager extends PacketManager { + // The cloud effect map, in case it gets lost: Map dataValues = Map.of(0, (byte) 0x20, 8, 0f); private static final List EQUIPMENT_SLOTS = List.of(CosmeticSlot.HELMET, CosmeticSlot.CHESTPLATE, CosmeticSlot.LEGGINGS, CosmeticSlot.BOOTS, CosmeticSlot.MAINHAND, CosmeticSlot.OFFHAND); public static void sendEntitySpawnPacket( @@ -83,15 +84,6 @@ public class HMCCPacketManager extends PacketManager { equipmentSlotUpdate(entityId, HMCCInventoryUtils.getEquipmentSlot(cosmeticSlot), user.getUserCosmeticItem(cosmeticSlot), sendTo); } - public static void sendArmorstandMetadata( - int entityId, - List sendTo - ) { - byte mask = (byte) (Settings.isBackpackPreventDarkness() ? 0x21 : 0x20); - Map dataValues = Map.of(0, mask, 15, (byte) 0x10); - NMSHandlers.getHandler().getPacketHandler().sendSharedEntityData(entityId, dataValues, sendTo); - } - public static void sendInvisibilityPacket( int entityId, List sendTo @@ -99,14 +91,50 @@ public class HMCCPacketManager extends PacketManager { NMSHandlers.getHandler().getPacketHandler().sendSharedEntityData(entityId, Map.of(0, (byte) 0x20), sendTo); } - public static void sendCloudEffect( + public static void spawnCloudAndHandleEffect( + int entityId, + Location location, + UUID uuid, + List sendTo + ) { + NMSHandlers.getHandler().getPacketHandler().sendInvisibleParticleCloud(entityId, location, uuid, sendTo); + } + + /** + * This handles both spawn + metadata in a bundle packet + * @param entityId + * @param location + * @param uuid + * @param sendTo + */ + public static void spawnInvisibleArmorstand( + int entityId, + Location location, + UUID uuid, + List sendTo + ) { + byte mask = getMask(); + NMSHandlers.getHandler().getPacketHandler().sendInvisibleArmorstand(entityId, location, uuid, mask, sendTo); + } + + /** + * This is just a normal meta data packet (non-bundled) + * @param entityId + * @param sendTo + */ + public static void sendArmorstandMetadata( int entityId, List sendTo ) { - Map dataValues = Map.of(0, (byte) 0x20, 8, 0f); + byte mask = getMask(); + Map dataValues = Map.of(0, mask, 15, (byte) 0x10); NMSHandlers.getHandler().getPacketHandler().sendSharedEntityData(entityId, dataValues, sendTo); } + private static byte getMask() { + return (byte) (Settings.isBackpackPreventDarkness() ? 0x21 : 0x20); + } + public static void sendRotationPacket( int entityId, Location location,