From ae9dbf411313cc3845ca512e65e31f509e8c5755 Mon Sep 17 00:00:00 2001 From: SamB440 Date: Sun, 10 May 2020 16:58:03 +0100 Subject: [PATCH] Fix alwaysShowTitles showing titles every time you move --- .../rpgregions/api/events/RegionsEnterEvent.java | 8 +++++++- .../worldguard/WorldGuardLegacyIntegration.java | 6 +++++- .../integrations/worldguard/WorldGuardIntegration.java | 6 +++++- .../islandearth/rpgregions/listener/RegionListener.java | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/api/src/main/java/net/islandearth/rpgregions/api/events/RegionsEnterEvent.java b/api/src/main/java/net/islandearth/rpgregions/api/events/RegionsEnterEvent.java index 02117c6..27102d4 100644 --- a/api/src/main/java/net/islandearth/rpgregions/api/events/RegionsEnterEvent.java +++ b/api/src/main/java/net/islandearth/rpgregions/api/events/RegionsEnterEvent.java @@ -11,10 +11,12 @@ public class RegionsEnterEvent extends Event { private static final HandlerList HANDLER_LIST = new HandlerList(); private final Player player; private final List regions; + private final boolean hasChanged; - public RegionsEnterEvent(Player player, List regions) { + public RegionsEnterEvent(Player player, List regions, boolean hasChanged) { this.player = player; this.regions = regions; + this.hasChanged = hasChanged; } public Player getPlayer() { @@ -25,6 +27,10 @@ public class RegionsEnterEvent extends Event { return regions; } + public boolean hasChanged() { + return hasChanged; + } + @Override public HandlerList getHandlers() { return HANDLER_LIST; diff --git a/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java b/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java index 2fbda9c..ebd2ac9 100644 --- a/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java +++ b/legacy/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardLegacyIntegration.java @@ -34,9 +34,13 @@ public class WorldGuardLegacyIntegration implements IntegrationManager { @Override public void handleMove(PlayerMoveEvent pme) { Player player = pme.getPlayer(); + int oldX = pme.getFrom().getBlockX(); + int oldY = pme.getFrom().getBlockY(); + int oldZ = pme.getFrom().getBlockZ(); int x = pme.getTo().getBlockX(); int y = pme.getTo().getBlockY(); int z = pme.getTo().getBlockZ(); + Set oldRegions = this.getProtectedRegions(new Location(player.getWorld(), oldX, oldY, oldZ)); Set regions = this.getProtectedRegions(new Location(player.getWorld(), x, y, z)); List stringRegions = new ArrayList<>(); @@ -53,7 +57,7 @@ public class WorldGuardLegacyIntegration implements IntegrationManager { } stringRegions.add(region.getId()); }); - Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions)); + Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions, !oldRegions.equals(regions))); } @Override diff --git a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java index 9a8595b..209fc22 100644 --- a/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java +++ b/modern/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java @@ -36,9 +36,13 @@ public class WorldGuardIntegration implements IntegrationManager { @Override public void handleMove(PlayerMoveEvent pme) { Player player = pme.getPlayer(); + int oldX = pme.getFrom().getBlockX(); + int oldY = pme.getFrom().getBlockY(); + int oldZ = pme.getFrom().getBlockZ(); int x = pme.getTo().getBlockX(); int y = pme.getTo().getBlockY(); int z = pme.getTo().getBlockZ(); + Set oldRegions = this.getProtectedRegions(new Location(player.getWorld(), oldX, oldY, oldZ)); Set regions = this.getProtectedRegions(new Location(player.getWorld(), x, y, z)); List stringRegions = new ArrayList<>(); @@ -56,7 +60,7 @@ public class WorldGuardIntegration implements IntegrationManager { stringRegions.add(region.getId()); }); - Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions)); + Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, stringRegions, !oldRegions.equals(regions))); } @Override diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java b/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java index 3e3a6e3..259a027 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/listener/RegionListener.java @@ -70,7 +70,7 @@ public class RegionListener implements Listener { }); } - if (configuredRegion.alwaysShowTitles()) { + if (configuredRegion.alwaysShowTitles() && ree.hasChanged()) { this.sendTitles(player, configuredRegion); }