From 40068c0f1453d5bbfb42e3a6bc25010c4055e07d Mon Sep 17 00:00:00 2001 From: SamB440 Date: Wed, 1 Jan 2020 14:15:24 +0000 Subject: [PATCH] Use integration interface correctly --- .../api/integrations/IntegrationManager.java | 6 ++--- .../worldguard/WorldGuardIntegration.java | 22 +++++++++++++++++-- .../rpgregions/listener/MoveListener.java | 21 +----------------- .../managers/data/RPGRegionsCache.java | 8 +++++++ 4 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java b/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java index 0aa1357..eb39b81 100644 --- a/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java +++ b/src/main/java/net/islandearth/rpgregions/api/integrations/IntegrationManager.java @@ -1,13 +1,11 @@ package net.islandearth.rpgregions.api.integrations; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; import org.bukkit.Location; - -import java.util.Set; +import org.bukkit.event.player.PlayerMoveEvent; public interface IntegrationManager { boolean isInRegion(Location location); - Set getProtectedRegions(Location location); + void handleMove(PlayerMoveEvent pme); } diff --git a/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java b/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java index 675b937..f55d11e 100644 --- a/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java +++ b/src/main/java/net/islandearth/rpgregions/api/integrations/worldguard/WorldGuardIntegration.java @@ -5,10 +5,13 @@ import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldguard.WorldGuard; import com.sk89q.worldguard.protection.regions.ProtectedRegion; import net.islandearth.rpgregions.RPGRegions; +import net.islandearth.rpgregions.api.event.RegionsEnterEvent; import net.islandearth.rpgregions.api.integrations.IntegrationManager; +import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerMoveEvent; -import java.util.HashSet; import java.util.Set; public class WorldGuardIntegration implements IntegrationManager { @@ -28,7 +31,22 @@ public class WorldGuardIntegration implements IntegrationManager { } @Override - public Set getProtectedRegions(Location location) { + public void handleMove(PlayerMoveEvent pme) { + Player player = pme.getPlayer(); + int x = pme.getTo().getBlockX(); + int y = pme.getTo().getBlockY(); + int z = pme.getTo().getBlockZ(); + int oldX = pme.getFrom().getBlockX(); + int oldY = pme.getFrom().getBlockY(); + int oldZ = pme.getFrom().getBlockZ(); + Set prevRegions = this.getProtectedRegions(new Location(player.getWorld(), oldX, oldY, oldZ)); + Set regions = this.getProtectedRegions(new Location(player.getWorld(), x, y, z)); + if (prevRegions.equals(regions)) return; + + Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, regions)); + } + + private Set getProtectedRegions(Location location) { Set regions = WorldGuard.getInstance().getPlatform().getRegionContainer().get(BukkitAdapter.adapt(location.getWorld())).getApplicableRegions(BlockVector3.at(location.getX(), location.getY(), location.getZ())).getRegions(); return regions; } diff --git a/src/main/java/net/islandearth/rpgregions/listener/MoveListener.java b/src/main/java/net/islandearth/rpgregions/listener/MoveListener.java index 85598e2..967be24 100644 --- a/src/main/java/net/islandearth/rpgregions/listener/MoveListener.java +++ b/src/main/java/net/islandearth/rpgregions/listener/MoveListener.java @@ -1,17 +1,10 @@ package net.islandearth.rpgregions.listener; -import com.sk89q.worldguard.protection.regions.ProtectedRegion; import net.islandearth.rpgregions.RPGRegions; -import net.islandearth.rpgregions.api.event.RegionsEnterEvent; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerMoveEvent; -import java.util.Set; - public class MoveListener implements Listener { private final RPGRegions plugin; @@ -22,18 +15,6 @@ public class MoveListener implements Listener { @EventHandler public void onMove(PlayerMoveEvent pme) { - Player player = pme.getPlayer(); - int x = pme.getTo().getBlockX(); - int y = pme.getTo().getBlockY(); - int z = pme.getTo().getBlockZ(); - int oldX = pme.getFrom().getBlockX(); - int oldY = pme.getFrom().getBlockY(); - int oldZ = pme.getFrom().getBlockZ(); - Set prevRegions = plugin.getManagers().getIntegrationManager().getProtectedRegions(new Location(player.getWorld(), oldX, oldY, oldZ)); - Set regions = plugin.getManagers().getIntegrationManager().getProtectedRegions(new Location(player.getWorld(), x, y, z)); - if (prevRegions.equals(regions)) return; - - Bukkit.getPluginManager().callEvent(new RegionsEnterEvent(player, regions)); - + plugin.getManagers().getIntegrationManager().handleMove(pme); } } \ No newline at end of file diff --git a/src/main/java/net/islandearth/rpgregions/managers/data/RPGRegionsCache.java b/src/main/java/net/islandearth/rpgregions/managers/data/RPGRegionsCache.java index 6106845..9150e6d 100644 --- a/src/main/java/net/islandearth/rpgregions/managers/data/RPGRegionsCache.java +++ b/src/main/java/net/islandearth/rpgregions/managers/data/RPGRegionsCache.java @@ -1,6 +1,14 @@ package net.islandearth.rpgregions.managers.data; +import net.islandearth.rpgregions.RPGRegions; + public class RPGRegionsCache { + + private final RPGRegions plugin; + + public RPGRegionsCache(RPGRegions plugin) { + this.plugin = plugin; + } }