From fb6f402c692bf252f8c4ece859064041d121e46c Mon Sep 17 00:00:00 2001 From: Boy Date: Thu, 1 Aug 2024 15:06:56 +0200 Subject: [PATCH] fix: separate metadata to firstPersonMetadata & thirdperson metadata --- .../hmccosmetics/cosmetic/Cosmetic.java | 62 ++++++++++--------- .../cosmetic/types/CosmeticBackpackType.java | 18 +++--- .../user/manager/UserBackpackManager.java | 2 +- .../util/packets/HMCCPacketManager.java | 1 - 4 files changed, 43 insertions(+), 40 deletions(-) diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java index b9311b33..c8b5f889 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/Cosmetic.java @@ -86,37 +86,39 @@ public abstract class Cosmetic { protected ItemDisplayMetadata generateItemDisplayMetadata(ConfigurationNode config) { ItemDisplayMetadata metadata = new ItemDisplayMetadata(); - ConfigurationNode translationNode = config.node("translation"); - ConfigurationNode scaleNode = config.node("scale"); - ConfigurationNode rotationLeftNode = config.node("rotation-left"); - ConfigurationNode rotationRightNode = config.node("rotation-right"); - ConfigurationNode billboardNode = config.node("billboard"); - ConfigurationNode blockLightNode = config.node("block-light"); - ConfigurationNode skyLightNode = config.node("sky-light"); - ConfigurationNode viewRangeNode = config.node("viewrange"); - ConfigurationNode widthNode = config.node("width"); - ConfigurationNode heightNode = config.node("height"); - ConfigurationNode displayTransformNode = config.node("display-transform"); - ConfigurationNode itemstackNode = config.node("item"); + if (!config.virtual()) { + ConfigurationNode translationNode = config.node("translation"); + ConfigurationNode scaleNode = config.node("scale"); + ConfigurationNode rotationLeftNode = config.node("rotation-left"); + ConfigurationNode rotationRightNode = config.node("rotation-right"); + ConfigurationNode billboardNode = config.node("billboard"); + ConfigurationNode blockLightNode = config.node("block-light"); + ConfigurationNode skyLightNode = config.node("sky-light"); + ConfigurationNode viewRangeNode = config.node("viewrange"); + ConfigurationNode widthNode = config.node("width"); + ConfigurationNode heightNode = config.node("height"); + ConfigurationNode displayTransformNode = config.node("display-transform"); + ConfigurationNode itemstackNode = config.node("item"); - if (!translationNode.virtual()) metadata.translation = stringToVector(translationNode.getString("0,0,0")); - if (!scaleNode.virtual()) metadata.scale = stringToVector(scaleNode.getString("1,1,1")); - if (!rotationLeftNode.virtual()) metadata.rotationLeft = stringToQuaternion(rotationLeftNode.getString("0,0,0,1")); - if (!rotationRightNode.virtual()) metadata.rotationRight = stringToQuaternion(rotationRightNode.getString("0,0,0,1")); - if (!billboardNode.virtual()) try { - metadata.billboard = Display.Billboard.valueOf(billboardNode.getString("VERTICAL")); - } catch (Exception ignored) {} - if (!blockLightNode.virtual()) metadata.blockLight = blockLightNode.getInt(0); - if (!skyLightNode.virtual()) metadata.skyLight = skyLightNode.getInt(15); - if (!viewRangeNode.virtual()) metadata.viewRange = viewRangeNode.getFloat(1); - if (!widthNode.virtual()) metadata.width = widthNode.getFloat(0); - if (!heightNode.virtual()) metadata.height = heightNode.getFloat(0); - if (!displayTransformNode.virtual()) try { - metadata.displayTransform = ItemDisplay.ItemDisplayTransform.valueOf(displayTransformNode.getString()); - } catch (Exception ignored) {} - if (!itemstackNode.virtual()) try { - metadata.itemStack = ItemSerializer.INSTANCE.deserialize(ItemStack.class, itemstackNode); - } catch (Exception ignored) {} + if (!translationNode.virtual()) metadata.translation = stringToVector(translationNode.getString("0,0,0")); + if (!scaleNode.virtual()) metadata.scale = stringToVector(scaleNode.getString("1,1,1")); + if (!rotationLeftNode.virtual()) metadata.rotationLeft = stringToQuaternion(rotationLeftNode.getString("0,0,0,1")); + if (!rotationRightNode.virtual()) metadata.rotationRight = stringToQuaternion(rotationRightNode.getString("0,0,0,1")); + if (!billboardNode.virtual()) try { + metadata.billboard = Display.Billboard.valueOf(billboardNode.getString("VERTICAL")); + } catch (Exception ignored) {} + if (!blockLightNode.virtual()) metadata.blockLight = blockLightNode.getInt(0); + if (!skyLightNode.virtual()) metadata.skyLight = skyLightNode.getInt(15); + if (!viewRangeNode.virtual()) metadata.viewRange = viewRangeNode.getFloat(1); + if (!widthNode.virtual()) metadata.width = widthNode.getFloat(0); + if (!heightNode.virtual()) metadata.height = heightNode.getFloat(0); + if (!displayTransformNode.virtual()) try { + metadata.displayTransform = ItemDisplay.ItemDisplayTransform.valueOf(displayTransformNode.getString()); + } catch (Exception ignored) {} + if (!itemstackNode.virtual()) try { + metadata.itemStack = ItemSerializer.INSTANCE.deserialize(ItemStack.class, itemstackNode); + } catch (Exception ignored) {} + } return metadata; } 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 cac54b4a..46e81d43 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 @@ -32,20 +32,22 @@ public class CosmeticBackpackType extends Cosmetic { private ItemStack firstPersonBackpack; @Getter @Setter private ItemDisplayMetadata metadata; + @Getter @Setter + private ItemDisplayMetadata firstPersonMetadata; public CosmeticBackpackType(String id, ConfigurationNode config) { super(id, config); modelName = config.node("model").getString(); - if (!config.node("firstperson-item").virtual()) { - this.firstPersonBackpack = generateItemStack(config.node("firstperson-item")); + ConfigurationNode firstPersonNode = config.node("firstperson-item"); + if (!firstPersonNode.virtual()) { + this.firstPersonBackpack = generateItemStack(firstPersonNode); this.height = config.node("height").getInt(5); } - if (!config.node("metadata").virtual()) { - this.metadata = generateItemDisplayMetadata(config.node("metadata")); - } else this.metadata = new ItemDisplayMetadata(); + this.firstPersonMetadata = generateItemDisplayMetadata(config.node("firstperson-metadata")); + this.metadata = generateItemDisplayMetadata(config.node("metadata")); } @Override @@ -53,7 +55,7 @@ public class CosmeticBackpackType extends Cosmetic { Entity entity = Bukkit.getEntity(user.getUniqueId()); if (entity == null) return; - Location loc = entity.getLocation().clone().add(0, 2, 0); + Location loc = entity.getLocation(); if (user.isInWardrobe() || !user.isBackpackSpawned()) return; if (user.isHidden()) { @@ -64,7 +66,7 @@ public class CosmeticBackpackType extends Cosmetic { List outsideViewers = user.getUserBackpackManager().getEntityManager().refreshViewers(loc); UserBackpackManager backpackManager = user.getUserBackpackManager(); - //backpackManager.getEntityManager().setRotation((int) loc.getYaw(), isFirstPersonCompadible()); + //backpackManager.getEntityManager().setRotation((int) loc.getYaw(), false); HMCCPacketManager.sendEntitySpawnPacket(user.getEntity().getLocation(), backpackManager.getFirstItemDisplayId(), EntityType.ITEM_DISPLAY, UUID.randomUUID(), outsideViewers); //metadata.rotationLeft.rotateY((float) Math.toRadians(loc.getYaw())); @@ -86,7 +88,7 @@ public class CosmeticBackpackType extends Cosmetic { } HMCCPacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1), backpackManager.getFirstItemDisplayId(), owner); if (!user.isHidden()) { - HMCCPacketManager.sendItemDisplayMetadata(backpackManager.getFirstItemDisplayId(), metadata, user.getUserCosmeticItem(this, firstPersonBackpack), owner); + HMCCPacketManager.sendItemDisplayMetadata(backpackManager.getFirstItemDisplayId(), firstPersonMetadata, user.getUserCosmeticItem(this, firstPersonBackpack), owner); } MessagesUtil.sendDebugMessages("First Person Backpack Update[owner=" + user.getUniqueId() + ",player_location=" + loc + "]!", Level.INFO); } 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 585dbd3f..d619d364 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 @@ -93,7 +93,7 @@ public class UserBackpackManager { else HMCCPacketManager.sendRidingPacket(particleCloud.get(i - 1), particleCloud.get(i) , owner); } HMCCPacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1),getFirstItemDisplayId(), owner); - if (!user.isHidden()) HMCCPacketManager.sendItemDisplayMetadata(getFirstItemDisplayId(), cosmeticBackpackType.getMetadata(), user.getUserCosmeticItem(cosmeticBackpackType, cosmeticBackpackType.getFirstPersonBackpack()), outsideViewers); + if (!user.isHidden()) HMCCPacketManager.sendItemDisplayMetadata(getFirstItemDisplayId(), cosmeticBackpackType.getFirstPersonMetadata(), user.getUserCosmeticItem(cosmeticBackpackType, cosmeticBackpackType.getFirstPersonBackpack()), outsideViewers); } HMCCPacketManager.sendItemDisplayMetadata(getFirstItemDisplayId(), cosmeticBackpackType.getMetadata(), user.getUserCosmeticItem(cosmeticBackpackType), outsideViewers); 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 1657262b..fe74a262 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 @@ -94,7 +94,6 @@ public class HMCCPacketManager extends PacketManager { public static void sendItemDisplayMetadata(int entityId, ItemStack itemStack, List sendTo) { ItemDisplayMetadata metadata = new ItemDisplayMetadata(); - metadata.itemStack = itemStack; PacketManager.sendItemDisplayMetadataPacket(entityId, metadata.translation, metadata.scale, metadata.rotationLeft, metadata.rotationRight, metadata.billboard, metadata.blockLight, metadata.skyLight, metadata.viewRange, metadata.width, metadata.height, metadata.displayTransform, itemStack, sendTo); }