diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java index 5d0c3603..560d514d 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/config/Settings.java @@ -176,7 +176,6 @@ public class Settings { cosmeticUnEquipClickType = cosmeticTypeSettings.node(UNEQUIP_CLICK_TYPE).getString("ALL"); final var balloonSection = cosmeticSettings.node(BALLOON_OFFSET); - balloonOffset = loadVector(balloonSection); ConfigurationNode dyeMenuSettings = source.node(DYE_MENU_PATH); @@ -198,7 +197,7 @@ public class Settings { } } - private static Vector loadVector(final ConfigurationNode config) { + public static Vector loadVector(final ConfigurationNode config) { return new Vector(config.node("x").getDouble(), config.node("y").getDouble(), config.node("z").getDouble()); } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java index 9e103f96..e102bc60 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/types/CosmeticBalloonType.java @@ -5,6 +5,7 @@ import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import com.hibiscusmc.hmccosmetics.user.manager.UserBalloonManager; import com.hibiscusmc.hmccosmetics.util.packets.PacketManager; +import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Entity; @@ -19,17 +20,27 @@ import java.util.List; public class CosmeticBalloonType extends Cosmetic { + @Getter private final String modelName; + @Getter private List dyableParts; + @Getter private final boolean showLead; + @Getter + private Vector balloonOffset; public CosmeticBalloonType(String id, ConfigurationNode config) { super(id, config); String modelId = config.node("model").getString(); - showLead = config.node("show-lead").getBoolean(true); + ConfigurationNode balloonOffsetNode = config.node("balloon-offset"); + if (balloonOffsetNode.virtual()) + balloonOffset = Settings.getBalloonOffset(); + else + balloonOffset = Settings.loadVector(balloonOffsetNode); + try { if (!config.node("dyable-parts").virtual()) { dyableParts = config.node("dyable-parts").getList(String.class); @@ -57,7 +68,7 @@ public class CosmeticBalloonType extends Cosmetic { Location newLocation = entity.getLocation(); Location currentLocation = user.getBalloonManager().getLocation(); - newLocation = newLocation.clone().add(Settings.getBalloonOffset()); + newLocation = newLocation.clone().add(getBalloonOffset()); List viewer = PacketManager.getViewers(entity.getLocation()); @@ -85,22 +96,10 @@ public class CosmeticBalloonType extends Cosmetic { } } - public String getModelName() { - return this.modelName; - } - - public List getDyableParts() { - return dyableParts; - } - public boolean isDyablePart(String name) { // If player does not define parts, dye whole model if (dyableParts == null) return true; if (dyableParts.isEmpty()) return true; return dyableParts.contains(name); } - - public boolean isShowLead() { - return showLead; - } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java index 6095fbe4..f7ae8e7f 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/listener/PlayerGameListener.java @@ -339,9 +339,10 @@ public class PlayerGameListener implements Listener { CosmeticUser user = event.getUser(); if (user.isInWardrobe() && event.getCosmetic().getSlot().equals(CosmeticSlot.BALLOON)) { Location NPCLocation = user.getWardrobeManager().getNpcLocation(); + CosmeticBalloonType cosmetic = (CosmeticBalloonType) event.getCosmetic(); // We know that no other entity besides a regular player will be in the wardrobe - PacketManager.sendTeleportPacket(user.getBalloonManager().getPufferfishBalloonId(), NPCLocation.add(Settings.getBalloonOffset()), false, List.of(user.getPlayer())); - user.getBalloonManager().getModelEntity().teleport(NPCLocation.add(Settings.getBalloonOffset())); + PacketManager.sendTeleportPacket(user.getBalloonManager().getPufferfishBalloonId(), NPCLocation.add(cosmetic.getBalloonOffset()), false, List.of(user.getPlayer())); + user.getBalloonManager().getModelEntity().teleport(NPCLocation.add(cosmetic.getBalloonOffset())); } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java index dfa9a9cc..181d6d82 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserBalloonManager.java @@ -11,6 +11,7 @@ import com.hibiscusmc.hmccosmetics.util.packets.PacketManager; import com.ticxo.modelengine.api.ModelEngineAPI; import com.ticxo.modelengine.api.model.ActiveModel; import com.ticxo.modelengine.api.model.ModeledEntity; +import lombok.Getter; import org.bukkit.Color; import org.bukkit.Location; import org.bukkit.entity.ArmorStand; @@ -27,6 +28,7 @@ public class UserBalloonManager { private BalloonType balloonType; private CosmeticBalloonType cosmeticBalloonType; + @Getter private UserBalloonPufferfish pufferfish; private final ArmorStand modelEntity; @@ -175,10 +177,6 @@ public class UserBalloonManager { } } - public UserBalloonPufferfish getPufferfish() { - return pufferfish; - } - public enum BalloonType { MODELENGINE, ITEM, diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java index b3efcd6a..a4c30468 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/manager/UserWardrobeManager.java @@ -7,6 +7,7 @@ import com.hibiscusmc.hmccosmetics.config.WardrobeLocation; import com.hibiscusmc.hmccosmetics.config.WardrobeSettings; import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic; import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot; +import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBalloonType; import com.hibiscusmc.hmccosmetics.gui.Menu; import com.hibiscusmc.hmccosmetics.gui.Menus; import com.hibiscusmc.hmccosmetics.nms.NMSHandlers; @@ -122,11 +123,12 @@ public class UserWardrobeManager { } if (user.hasCosmeticInSlot(CosmeticSlot.BALLOON)) { + CosmeticBalloonType cosmetic = (CosmeticBalloonType) user.getCosmetic(CosmeticSlot.BALLOON); user.getBalloonManager().sendRemoveLeashPacket(viewer); user.getBalloonManager().sendLeashPacket(NPC_ID); //PacketManager.sendLeashPacket(VIEWER.getBalloonEntity().getModelId(), NPC_ID, viewer); - Location balloonLocation = npcLocation.clone().add(Settings.getBalloonOffset()); + Location balloonLocation = npcLocation.clone().add(cosmetic.getBalloonOffset()); PacketManager.sendTeleportPacket(user.getBalloonManager().getPufferfishBalloonId(), balloonLocation , false, viewer); user.getBalloonManager().getModelEntity().teleport(balloonLocation); } diff --git a/v1_18_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_18_R2/NMSHandler.java b/v1_18_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_18_R2/NMSHandler.java index eb7e5400..0a0a7216 100644 --- a/v1_18_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_18_R2/NMSHandler.java +++ b/v1_18_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_18_R2/NMSHandler.java @@ -97,7 +97,7 @@ public class NMSHandler implements com.hibiscusmc.hmccosmetics.nms.NMSHandler { org.bukkit.entity.Entity entity = user.getEntity(); UserBalloonManager userBalloonManager1 = new UserBalloonManager(entity.getLocation()); - userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(Settings.getBalloonOffset())); + userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(cosmeticBalloonType.getBalloonOffset())); userBalloonManager1.spawnModel(cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); userBalloonManager1.addPlayerToModel(user, cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); diff --git a/v1_19_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R1/NMSHandler.java b/v1_19_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R1/NMSHandler.java index 50d94359..c0822b45 100644 --- a/v1_19_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R1/NMSHandler.java +++ b/v1_19_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R1/NMSHandler.java @@ -99,7 +99,7 @@ public class NMSHandler implements com.hibiscusmc.hmccosmetics.nms.NMSHandler { org.bukkit.entity.Entity entity = user.getEntity(); UserBalloonManager userBalloonManager1 = new UserBalloonManager(entity.getLocation()); - userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(Settings.getBalloonOffset())); + userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(cosmeticBalloonType.getBalloonOffset())); userBalloonManager1.spawnModel(cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); userBalloonManager1.addPlayerToModel(user, cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); diff --git a/v1_19_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R2/NMSHandler.java b/v1_19_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R2/NMSHandler.java index 7d0abe27..34b667cb 100644 --- a/v1_19_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R2/NMSHandler.java +++ b/v1_19_R2/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R2/NMSHandler.java @@ -98,7 +98,7 @@ public class NMSHandler implements com.hibiscusmc.hmccosmetics.nms.NMSHandler { org.bukkit.entity.Entity entity = user.getEntity(); UserBalloonManager userBalloonManager1 = new UserBalloonManager(entity.getLocation()); - userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(Settings.getBalloonOffset())); + userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(cosmeticBalloonType.getBalloonOffset())); userBalloonManager1.spawnModel(cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); userBalloonManager1.addPlayerToModel(user, cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); diff --git a/v1_19_R3/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R3/NMSHandler.java b/v1_19_R3/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R3/NMSHandler.java index 8547cdd5..04ed2ee7 100644 --- a/v1_19_R3/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R3/NMSHandler.java +++ b/v1_19_R3/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_19_R3/NMSHandler.java @@ -107,7 +107,7 @@ public class NMSHandler implements com.hibiscusmc.hmccosmetics.nms.NMSHandler { Entity entity = user.getEntity(); UserBalloonManager userBalloonManager1 = new UserBalloonManager(entity.getLocation()); - userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(Settings.getBalloonOffset())); + userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(cosmeticBalloonType.getBalloonOffset())); userBalloonManager1.spawnModel(cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); userBalloonManager1.addPlayerToModel(user, cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); diff --git a/v1_20_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_20_R1/NMSHandler.java b/v1_20_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_20_R1/NMSHandler.java index 129ebb94..fe17bcc2 100644 --- a/v1_20_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_20_R1/NMSHandler.java +++ b/v1_20_R1/src/main/java/com/hibiscusmc/hmccosmetics/nms/v1_20_R1/NMSHandler.java @@ -108,7 +108,7 @@ public class NMSHandler implements com.hibiscusmc.hmccosmetics.nms.NMSHandler { org.bukkit.entity.Entity entity = user.getEntity(); UserBalloonManager userBalloonManager1 = new UserBalloonManager(entity.getLocation()); - userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(Settings.getBalloonOffset())); + userBalloonManager1.getModelEntity().teleport(entity.getLocation().add(cosmeticBalloonType.getBalloonOffset())); userBalloonManager1.spawnModel(cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot())); userBalloonManager1.addPlayerToModel(user, cosmeticBalloonType, user.getCosmeticColor(cosmeticBalloonType.getSlot()));