9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-28 03:19:15 +00:00

fix: separate metadata to firstPersonMetadata & thirdperson metadata

This commit is contained in:
Boy
2024-08-01 15:06:56 +02:00
parent ed4803f36b
commit fb6f402c69
4 changed files with 43 additions and 40 deletions

View File

@@ -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;
}

View File

@@ -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<Player> 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);
}

View File

@@ -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);

View File

@@ -94,7 +94,6 @@ public class HMCCPacketManager extends PacketManager {
public static void sendItemDisplayMetadata(int entityId, ItemStack itemStack, List<Player> 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);
}