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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user