diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerCosmeticHideEvent.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerCosmeticHideEvent.java index 9092041d..e617a671 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerCosmeticHideEvent.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/api/PlayerCosmeticHideEvent.java @@ -8,10 +8,12 @@ import org.bukkit.event.HandlerList; public class PlayerCosmeticHideEvent extends Event implements Cancellable { private CosmeticUser user; + private CosmeticUser.HiddenReason reason; private boolean isCancelled; - public PlayerCosmeticHideEvent(CosmeticUser user) { + public PlayerCosmeticHideEvent(CosmeticUser user, CosmeticUser.HiddenReason reason) { this.user = user; + this.reason = reason; this.isCancelled = false; } @@ -39,4 +41,7 @@ public class PlayerCosmeticHideEvent extends Event implements Cancellable { public CosmeticUser getUser() { return user; } + public CosmeticUser.HiddenReason getReason() { + return reason; + } } diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java index 960f85eb..848cc60b 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/command/CosmeticCommand.java @@ -326,9 +326,8 @@ public class CosmeticCommand implements CommandExecutor { } CosmeticUser user = CosmeticUsers.getUser(player); - MessagesUtil.sendMessage(sender, "hide-cosmetic"); - user.hideCosmetics(); + user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN); return true; } case ("show") -> { diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/worldguard/WGListener.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/worldguard/WGListener.java index 3182a73a..8eba1aee 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/worldguard/WGListener.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/hooks/worldguard/WGListener.java @@ -30,7 +30,7 @@ public class WGListener implements Listener { } for (ProtectedRegion protectedRegion : set.getRegions()) { if (protectedRegion.getFlags().containsKey(WGHook.getCosmeticEnableFlag())) { - user.hideCosmetics(); + user.hideCosmetics(CosmeticUser.HiddenReason.WORLDGUARD); return; } if (protectedRegion.getFlags().containsKey(WGHook.getCosmeticWardrobeFlag())) { 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 c30a368f..98e35caf 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -42,6 +42,7 @@ public class CosmeticUser { // Cosmetic Settings/Toggles private boolean hideBackpack; private boolean hideCosmetics; + private HiddenReason hiddenReason; private HashMap colors = new HashMap<>(); public CosmeticUser() { @@ -400,15 +401,16 @@ public class CosmeticUser { } } - public void hideCosmetics() { + public void hideCosmetics(HiddenReason reason) { if (hideCosmetics == true) return; - PlayerCosmeticHideEvent event = new PlayerCosmeticHideEvent(this); + PlayerCosmeticHideEvent event = new PlayerCosmeticHideEvent(this, reason); Bukkit.getPluginManager().callEvent(event); if (event.isCancelled()) { return; } hideCosmetics = true; + hiddenReason = reason; if (hasCosmeticInSlot(CosmeticSlot.BALLOON)) { getBalloonEntity().removePlayerFromModel(getPlayer()); List viewer = PlayerUtils.getNearbyPlayers(getPlayer()); @@ -429,7 +431,9 @@ public class CosmeticUser { if (event.isCancelled()) { return; } + hideCosmetics = false; + hiddenReason = HiddenReason.NONE; if (hasCosmeticInSlot(CosmeticSlot.BALLOON)) { CosmeticBalloonType balloonType = (CosmeticBalloonType) getCosmetic(CosmeticSlot.BALLOON); getBalloonEntity().addPlayerToModel(getPlayer(), balloonType); @@ -448,4 +452,14 @@ public class CosmeticUser { public boolean getHidden() { return this.hideCosmetics; } + + public HiddenReason getHiddenReason() { + return hiddenReason; + } + + public enum HiddenReason { + NONE, + WORLDGUARD, + PLUGIN + } }