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 a4a7a247..a0456b2c 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -246,9 +246,25 @@ public class CosmeticUser { if (event.isCancelled()) { return; } + if (!getWardrobe().getWardrobeStatus().equals(Wardrobe.WardrobeStatus.RUNNING)) return; - wardrobe.end(); - wardrobe = null; + getWardrobe().setWardrobeStatus(Wardrobe.WardrobeStatus.STOPPING); + + if (WardrobeSettings.isEnabledTransition()) { + MessagesUtil.sendTitle( + getPlayer(), + WardrobeSettings.getTransitionText(), + WardrobeSettings.getTransitionFadeIn(), + WardrobeSettings.getTransitionStay(), + WardrobeSettings.getTransitionFadeOut() + ); + Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> { + wardrobe.end(); + wardrobe = null; + }, WardrobeSettings.getTransitionDelay()); + } else { + + } } public boolean isInWardrobe() { 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 edc108c4..fbdd60ea 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/Wardrobe.java @@ -39,15 +39,18 @@ public class Wardrobe { private Location exitLocation; private BossBar bossBar; private boolean active; + private WardrobeStatus wardrobeStatus; public Wardrobe(CosmeticUser user) { NPC_ID = NMSHandlers.getHandler().getNextEntityId(); ARMORSTAND_ID = NMSHandlers.getHandler().getNextEntityId(); WARDROBE_UUID = UUID.randomUUID(); VIEWER = user; + wardrobeStatus = WardrobeStatus.SETUP; } public void start() { + setWardrobeStatus(WardrobeStatus.STARTING); Player player = VIEWER.getPlayer(); this.originalGamemode = player.getGameMode(); @@ -121,6 +124,7 @@ public class Wardrobe { this.active = true; update(); + setWardrobeStatus(WardrobeStatus.RUNNING); }; @@ -140,6 +144,7 @@ public class Wardrobe { } public void end() { + setWardrobeStatus(WardrobeStatus.STOPPING); Player player = VIEWER.getPlayer(); List viewer = List.of(player); @@ -195,19 +200,7 @@ public class Wardrobe { VIEWER.updateCosmetic(); }; - - if (WardrobeSettings.isEnabledTransition()) { - MessagesUtil.sendTitle( - VIEWER.getPlayer(), - WardrobeSettings.getTransitionText(), - WardrobeSettings.getTransitionFadeIn(), - WardrobeSettings.getTransitionStay(), - WardrobeSettings.getTransitionFadeOut() - ); - Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), run, WardrobeSettings.getTransitionDelay()); - } else { - run.run(); - } + run.run(); } public void update() { @@ -278,4 +271,19 @@ public class Wardrobe { public int getArmorstandId() { return ARMORSTAND_ID; } + + public WardrobeStatus getWardrobeStatus() { + return wardrobeStatus; + } + + public void setWardrobeStatus(WardrobeStatus status) { + this.wardrobeStatus = status; + } + + public enum WardrobeStatus { + SETUP, + STARTING, + RUNNING, + STOPPING, + } }