From c27a9ab2adb97a165b32236fd3745eafd118ae60 Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Mon, 6 Feb 2023 13:48:29 -0600 Subject: [PATCH] Internal wardrobe rework --- .../cosmetic/types/CosmeticBalloonType.java | 7 +++--- .../hmccosmetics/user/CosmeticUser.java | 15 ++++++++---- .../hmccosmetics/user/Wardrobe.java | 23 +++++++++++++++---- 3 files changed, 33 insertions(+), 12 deletions(-) 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 43791605..9846996d 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 @@ -48,10 +48,11 @@ public class CosmeticBalloonType extends Cosmetic { @Override public void update(CosmeticUser user) { Player player = Bukkit.getPlayer(user.getUniqueId()); - Location currentLocation = user.getBalloonEntity().getLocation().clone(); - Location newLocation = player.getLocation().clone().add(Settings.getBalloonOffset()).clone(); - if (player == null) return; + Location currentLocation = user.getBalloonEntity().getLocation(); + Location newLocation = player.getLocation(); + if (player == null || currentLocation == null || newLocation == null) return; if (user.isInWardrobe()) return; + newLocation = newLocation.clone().add(Settings.getBalloonOffset()); List viewer = PacketManager.getViewers(player.getLocation()); viewer.add(player); diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java index b2c32d2d..81b55f7a 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -19,6 +19,7 @@ import com.hibiscusmc.hmccosmetics.util.PlayerUtils; import com.hibiscusmc.hmccosmetics.util.packets.PacketManager; import org.bukkit.Bukkit; import org.bukkit.Color; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; @@ -214,7 +215,15 @@ public class CosmeticUser { } public void enterWardrobe() { - if (!WardrobeSettings.inDistanceOfStatic(getPlayer().getLocation())) { + enterWardrobe(false); + } + + public void enterWardrobe(boolean ignoreDistance) { + enterWardrobe(ignoreDistance, WardrobeSettings.getLeaveLocation(), WardrobeSettings.getViewerLocation(), WardrobeSettings.getWardrobeLocation()); + } + + public void enterWardrobe(boolean ignoreDistance, Location exitLocation, Location viewingLocation, Location npcLocation) { + if (!WardrobeSettings.inDistanceOfStatic(getPlayer().getLocation()) && !ignoreDistance) { MessagesUtil.sendMessage(getPlayer(), "not-near-wardrobe"); return; } @@ -225,7 +234,7 @@ public class CosmeticUser { } if (wardrobe == null) { - wardrobe = new Wardrobe(this); + wardrobe = new Wardrobe(this, exitLocation, viewingLocation, npcLocation); wardrobe.start(); } } @@ -256,8 +265,6 @@ public class CosmeticUser { wardrobe.end(); wardrobe = null; }, WardrobeSettings.getTransitionDelay()); - } else { - } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java index 09c7ca46..49437c92 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java @@ -46,6 +46,24 @@ public class Wardrobe { ARMORSTAND_ID = NMSHandlers.getHandler().getNextEntityId(); WARDROBE_UUID = UUID.randomUUID(); VIEWER = user; + + exitLocation = WardrobeSettings.getLeaveLocation(); + viewingLocation = WardrobeSettings.getViewerLocation(); + npcLocation = WardrobeSettings.getWardrobeLocation(); + + wardrobeStatus = WardrobeStatus.SETUP; + } + + public Wardrobe(CosmeticUser user, Location exitLocation, Location viewingLocation, Location npcLocation) { + NPC_ID = NMSHandlers.getHandler().getNextEntityId(); + ARMORSTAND_ID = NMSHandlers.getHandler().getNextEntityId(); + WARDROBE_UUID = UUID.randomUUID(); + VIEWER = user; + + this.exitLocation = exitLocation; + this.viewingLocation = viewingLocation; + this.npcLocation = npcLocation; + wardrobeStatus = WardrobeStatus.SETUP; } @@ -56,13 +74,8 @@ public class Wardrobe { this.originalGamemode = player.getGameMode(); if (WardrobeSettings.isReturnLastLocation()) { this.exitLocation = player.getLocation().clone(); - } else { - this.exitLocation = WardrobeSettings.getLeaveLocation(); } - viewingLocation = WardrobeSettings.getViewerLocation(); - npcLocation = WardrobeSettings.getWardrobeLocation(); - VIEWER.hidePlayer(); List viewer = List.of(player); List outsideViewers = PacketManager.getViewers(viewingLocation);