From 190f8f776d850f3bfae3c23fa4198721a7b218af Mon Sep 17 00:00:00 2001 From: LoJoSho Date: Fri, 16 Jun 2023 17:37:49 -0500 Subject: [PATCH] feat: WorldGuard listens to PlayerTeleportEvent --- .../hooks/worldguard/WGListener.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) 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 ca0228e7..99f057ff 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 @@ -15,6 +15,7 @@ import org.bukkit.Location; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.event.player.PlayerTeleportEvent; import org.jetbrains.annotations.NotNull; /** @@ -51,4 +52,35 @@ public class WGListener implements Listener { } } } + + @EventHandler + public void onPlayerTeleport(PlayerTeleportEvent event) { + CosmeticUser user = CosmeticUsers.getUser(event.getPlayer()); + if (user == null) return; + Location location = event.getTo(); + com.sk89q.worldedit.util.Location loc = BukkitAdapter.adapt(location); + RegionContainer region = WorldGuard.getInstance().getPlatform().getRegionContainer(); + RegionQuery query = region.createQuery(); + ApplicableRegionSet set = query.getApplicableRegions(loc); + if (user.getHidden()) { + if (user.getHiddenReason() == CosmeticUser.HiddenReason.WORLDGUARD && set.getRegions().size() == 0) { + user.showCosmetics(); + } + } + for (ProtectedRegion protectedRegion : set.getRegions()) { + if (protectedRegion.getFlags().containsKey(WGHook.getCosmeticEnableFlag())) { + if (protectedRegion.getFlags().get(WGHook.getCosmeticEnableFlag()).toString().equalsIgnoreCase("ALLOW")) { + if (user.getHiddenReason() == CosmeticUser.HiddenReason.WORLDGUARD) user.showCosmetics(); + return; + } + user.hideCosmetics(CosmeticUser.HiddenReason.WORLDGUARD); + return; + } + if (protectedRegion.getFlags().containsKey(WGHook.getCosmeticWardrobeFlag())) { + if (!WardrobeSettings.getWardrobeNames().contains(protectedRegion.getFlags().get(WGHook.getCosmeticWardrobeFlag()).toString())) return; + Wardrobe wardrobe = WardrobeSettings.getWardrobe(protectedRegion.getFlags().get(WGHook.getCosmeticWardrobeFlag()).toString()); + user.enterWardrobe(true, wardrobe); + } + } + } }