Optional disabling of WG checks

This commit is contained in:
Spathi 2011-08-29 04:59:49 +01:00
parent 8be43164d2
commit 445d10afb7
3 changed files with 49 additions and 39 deletions

View File

@ -63,6 +63,8 @@ public class Conf {
public static double autoLeaveAfterDaysOfInactivity = 14.0; public static double autoLeaveAfterDaysOfInactivity = 14.0;
public static boolean worldGuardChecking = true;
public static boolean homesEnabled = true; public static boolean homesEnabled = true;
public static boolean homesMustBeInClaimedTerritory = true; public static boolean homesMustBeInClaimedTerritory = true;
public static boolean homesTeleportToOnDeath = true; public static boolean homesTeleportToOnDeath = true;

View File

@ -151,6 +151,10 @@ public class Factions extends JavaPlugin {
Econ.setup(this); Econ.setup(this);
Econ.monitorPlugins(); Econ.monitorPlugins();
if(Conf.worldGuardChecking) {
Worldguard.init(this);
}
// Register events // Register events
PluginManager pm = this.getServer().getPluginManager(); PluginManager pm = this.getServer().getPluginManager();
pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this); pm.registerEvent(Event.Type.PLAYER_CHAT, this.playerListener, Event.Priority.Highest, this);

View File

@ -28,18 +28,18 @@ import org.bukkit.entity.Player;
public class Worldguard { public class Worldguard {
private static WorldGuardPlugin wg; private static WorldGuardPlugin wg;
private static boolean enabled = false; private static boolean enabled = false;
public static void init(Plugin plugin) { public static void init(Plugin plugin) {
Plugin wgplug = plugin.getServer().getPluginManager().getPlugin("WorldGuard"); Plugin wgplug = plugin.getServer().getPluginManager().getPlugin("WorldGuard");
if (wgplug == null || !(wgplug instanceof WorldGuardPlugin)) { if (wgplug == null || !(wgplug instanceof WorldGuardPlugin)) {
enabled = false; enabled = false;
wg = null; wg = null;
System.out.println("[Factions] Could not hook to WorldGuard. WorldGuard checks are disabled."); System.out.println("[Factions] Could not hook to WorldGuard. WorldGuard checks are disabled.");
} else { } else {
wg = (WorldGuardPlugin) wgplug; wg = (WorldGuardPlugin) wgplug;
enabled = true; enabled = true;
System.out.println("[Factions] Successfully hooked to WorldGuard."); System.out.println("[Factions] Successfully hooked to WorldGuard.");
} }
} }
public static boolean isEnabled() { public static boolean isEnabled() {
@ -64,46 +64,50 @@ public class Worldguard {
return true; return true;
} }
} }
// Check for Regions in chunk the chunk // Check for Regions in chunk the chunk
// Returns: // Returns:
// True: Regions found within chunk // True: Regions found within chunk
// False: No regions found within chunk // False: No regions found within chunk
public static boolean checkForRegionsInChunk(Location loc) { public static boolean checkForRegionsInChunk(Location loc) {
int plocX = loc.getBlockX(); if(isEnabled()) {
int plocZ = loc.getBlockZ(); int plocX = loc.getBlockX();
World world = loc.getWorld(); int plocZ = loc.getBlockZ();
World world = loc.getWorld();
Chunk chunk = world.getChunkAt(plocX, plocZ);
int chunkX = chunk.getX();
int chunkZ = chunk.getZ();
BlockVector minChunk = new BlockVector(chunkX, 0, chunkZ);
BlockVector maxChunk = new BlockVector(chunkX+15, 128, chunkZ+15);
RegionManager regionManager = wg.getRegionManager(world);
ProtectedCuboidRegion region = new ProtectedCuboidRegion("wgfactionoverlapcheck", minChunk, maxChunk);
Map<String, ProtectedRegion> allregions = regionManager.getRegions();
List<ProtectedRegion> allregionslist = new ArrayList<ProtectedRegion>(allregions.values());
List<ProtectedRegion> overlaps;
boolean foundregions = false;
try { Chunk chunk = world.getChunkAt(plocX, plocZ);
overlaps = region.getIntersectingRegions(allregionslist); int chunkX = chunk.getX();
if(overlaps.isEmpty() || overlaps == null) { int chunkZ = chunk.getZ();
foundregions = false;
} else { BlockVector minChunk = new BlockVector(chunkX, 0, chunkZ);
foundregions = true; BlockVector maxChunk = new BlockVector(chunkX+15, 128, chunkZ+15);
RegionManager regionManager = wg.getRegionManager(world);
ProtectedCuboidRegion region = new ProtectedCuboidRegion("wgfactionoverlapcheck", minChunk, maxChunk);
Map<String, ProtectedRegion> allregions = regionManager.getRegions();
List<ProtectedRegion> allregionslist = new ArrayList<ProtectedRegion>(allregions.values());
List<ProtectedRegion> overlaps;
boolean foundregions = false;
try {
overlaps = region.getIntersectingRegions(allregionslist);
if(overlaps.isEmpty() || overlaps == null) {
foundregions = false;
} else {
foundregions = true;
}
} catch (UnsupportedIntersectionException e) {
e.printStackTrace();
} }
} catch (UnsupportedIntersectionException e) {
e.printStackTrace();
}
region = null; region = null;
allregionslist = null; allregionslist = null;
overlaps = null; overlaps = null;
return foundregions; return foundregions;
} else {
return false;
}
} }
} }