From d9136aa40779e1c06b4ec46aa15afab7f33ab752 Mon Sep 17 00:00:00 2001 From: sk89q Date: Sun, 5 Jun 2011 16:38:28 -0700 Subject: [PATCH] Optimized flags scheduler. --- .../worldguard/bukkit/FlagScheduler.java | 24 ++++++++++--------- .../worldguard/bukkit/GlobalStateManager.java | 3 +++ .../worldguard/bukkit/WorldGuardPlugin.java | 8 +++++-- src/main/resources/config.yml | 3 +++ 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java b/src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java index a39b10b2..2488a644 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java @@ -60,6 +60,12 @@ public void run() { GlobalStateManager config = plugin.getGlobalStateManager(); for (Player player : players) { + WorldStateManager worldConfig = config.get(player.getWorld()); + + if (!worldConfig.useRegions) { + continue; + } + PlayerFlagState state; synchronized (this) { @@ -70,18 +76,14 @@ public void run() { states.put(player.getName(), state); } } - - WorldStateManager worldConfig = config.get(player.getWorld()); - if (worldConfig.useRegions) { - Vector playerLocation = toVector(player.getLocation()); - RegionManager regionManager = plugin.getGlobalRegionManager() - .get(player.getWorld()); - ApplicableRegionSet applicable = regionManager - .getApplicableRegions(playerLocation); - - processHeal(applicable, player, state); - } + Vector playerLocation = toVector(player.getLocation()); + RegionManager regionManager = plugin.getGlobalRegionManager() + .get(player.getWorld()); + ApplicableRegionSet applicable = regionManager + .getApplicableRegions(playerLocation); + + processHeal(applicable, player, state); } } diff --git a/src/main/java/com/sk89q/worldguard/bukkit/GlobalStateManager.java b/src/main/java/com/sk89q/worldguard/bukkit/GlobalStateManager.java index feeae934..f22c2b04 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/GlobalStateManager.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/GlobalStateManager.java @@ -59,6 +59,7 @@ public class GlobalStateManager { private Set hasAmphibious = new HashSet(); public boolean suppressTickSyncWarnings; + public boolean useRegionsScheduler; /** * Construct the object. @@ -83,6 +84,8 @@ public void load() { suppressTickSyncWarnings = config.getBoolean( "suppress-tick-sync-warnings", false); + useRegionsScheduler = config.getBoolean( + "regions.use-scheduler", true); // Load configurations for each world for (World world : plugin.getServer().getWorlds()) { diff --git a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java index 24572d1a..efa0b54b 100644 --- a/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java +++ b/src/main/java/com/sk89q/worldguard/bukkit/WorldGuardPlugin.java @@ -140,8 +140,11 @@ public void onEnable() { (new WorldGuardWeatherListener(this)).registerEvents(); flagScheduler = new FlagScheduler(this); - getServer().getScheduler().scheduleAsyncRepeatingTask(this, - flagScheduler, FlagScheduler.RUN_DELAY, FlagScheduler.RUN_DELAY); + + if (configuration.useRegionsScheduler) { + getServer().getScheduler().scheduleAsyncRepeatingTask(this, + flagScheduler, FlagScheduler.RUN_DELAY, FlagScheduler.RUN_DELAY); + } if (configuration.suppressTickSyncWarnings) { Logger.getLogger("Minecraft").setFilter( @@ -210,6 +213,7 @@ public GlobalRegionManager getGlobalRegionManager() { * @return * @deprecated Use {@link #getGlobalStateManager()} instead */ + @Deprecated public GlobalStateManager getGlobalConfiguration() { return getGlobalStateManager(); } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 9f37219a..5c82cbbc 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -18,7 +18,10 @@ # Remember to check the compatibility spreadsheet for WorldGuard to see # if any features are currently broken in your version of Bukkit. # + suppress-tick-sync-warnings: false +regions: + use-scheduler: true # For permissions, see http://wiki.sk89q.com/wiki/WorldGuard/Permissions/Bukkit permissions: