mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2025-02-03 14:01:56 +01:00
Rewrote how healing flags were handled.
This commit is contained in:
parent
dd14f3c469
commit
183f48a998
136
src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java
Normal file
136
src/main/java/com/sk89q/worldguard/bukkit/FlagScheduler.java
Normal file
@ -0,0 +1,136 @@
|
||||
// $Id$
|
||||
/*
|
||||
* WorldGuard
|
||||
* Copyright (C) 2010 sk89q <http://www.sk89q.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package com.sk89q.worldguard.bukkit;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.bukkit.entity.Player;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
import com.sk89q.worldguard.protection.ApplicableRegionSet;
|
||||
import com.sk89q.worldguard.protection.flags.DefaultFlag;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import static com.sk89q.worldguard.bukkit.BukkitUtil.*;
|
||||
|
||||
/**
|
||||
* This processed periodical tasks for flags that require them, such as with
|
||||
* the healing flag.
|
||||
*
|
||||
* @author sk89q
|
||||
*/
|
||||
public class FlagScheduler implements Runnable {
|
||||
|
||||
public static final int RUN_DELAY = 20;
|
||||
|
||||
private WorldGuardPlugin plugin;
|
||||
private Map<String, PlayerFlagState> states;
|
||||
|
||||
/**
|
||||
* Construct the object.
|
||||
*
|
||||
* @param plugin
|
||||
*/
|
||||
public FlagScheduler(WorldGuardPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
|
||||
states = new HashMap<String, PlayerFlagState>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the task.
|
||||
*/
|
||||
public void run() {
|
||||
Player[] players = plugin.getServer().getOnlinePlayers();
|
||||
GlobalStateManager config = plugin.getGlobalStateManager();
|
||||
|
||||
for (Player player : players) {
|
||||
PlayerFlagState state;
|
||||
|
||||
synchronized (this) {
|
||||
state = states.get(player.getName());
|
||||
|
||||
if (state == null) {
|
||||
state = new PlayerFlagState();
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process healing for a player.
|
||||
*
|
||||
* @param applicable
|
||||
* @param player
|
||||
* @param state
|
||||
*/
|
||||
private void processHeal(ApplicableRegionSet applicable, Player player,
|
||||
PlayerFlagState state) {
|
||||
|
||||
if (player.getHealth() >= 20) {
|
||||
return;
|
||||
}
|
||||
|
||||
long now = System.currentTimeMillis();
|
||||
|
||||
Integer healAmount = applicable.getFlag(DefaultFlag.HEAL_AMOUNT);
|
||||
Integer healDelay = applicable.getFlag(DefaultFlag.HEAL_DELAY);
|
||||
|
||||
if (healAmount == null || healDelay == null || healAmount < 1 || healDelay < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (healDelay <= 0) {
|
||||
player.setHealth(20);
|
||||
state.lastHeal = now;
|
||||
} else if (now - state.lastHeal > healDelay * 1000) {
|
||||
player.setHealth(Math.min(20, player.getHealth() + healAmount));
|
||||
state.lastHeal = now;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Forget a player.
|
||||
*
|
||||
* @param player
|
||||
*/
|
||||
public synchronized void forget(Player player) {
|
||||
states.remove(player.getName());
|
||||
}
|
||||
|
||||
/**
|
||||
* Keeps state per player.
|
||||
*/
|
||||
private static class PlayerFlagState {
|
||||
private long lastHeal;
|
||||
}
|
||||
|
||||
}
|
@ -54,9 +54,9 @@ public ReportWriter(WorldGuardPlugin plugin) {
|
||||
appendServerInformation(plugin.getServer());
|
||||
appendPluginInformation(plugin.getServer().getPluginManager().getPlugins());
|
||||
appendWorldInformation(plugin.getServer().getWorlds());
|
||||
appendGlobalConfiguration(plugin.getGlobalConfiguration());
|
||||
appendGlobalConfiguration(plugin.getGlobalStateManager());
|
||||
appendWorldConfigurations(plugin, plugin.getServer().getWorlds(),
|
||||
plugin.getGlobalRegionManager(), plugin.getGlobalConfiguration());
|
||||
plugin.getGlobalRegionManager(), plugin.getGlobalStateManager());
|
||||
appendln("-------------");
|
||||
appendln("END OF REPORT");
|
||||
appendln();
|
||||
|
@ -34,7 +34,7 @@ public class SpongeUtil {
|
||||
* @param oz
|
||||
*/
|
||||
public static void clearSpongeWater(WorldGuardPlugin plugin, World world, int ox, int oy, int oz) {
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
for (int cx = -wcfg.spongeRadius; cx <= wcfg.spongeRadius; cx++) {
|
||||
@ -58,7 +58,7 @@ public static void clearSpongeWater(WorldGuardPlugin plugin, World world, int ox
|
||||
* @param oz
|
||||
*/
|
||||
public static void addSpongeWater(WorldGuardPlugin plugin, World world, int ox, int oy, int oz) {
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
// The negative x edge
|
||||
|
@ -81,7 +81,7 @@ public void registerEvents() {
|
||||
* @return
|
||||
*/
|
||||
protected WorldStateManager getWorldConfig(World world) {
|
||||
return plugin.getGlobalConfiguration().get(world);
|
||||
return plugin.getGlobalStateManager().get(world);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -91,7 +91,7 @@ protected WorldStateManager getWorldConfig(World world) {
|
||||
* @return
|
||||
*/
|
||||
protected WorldStateManager getWorldConfig(Player player) {
|
||||
return plugin.getGlobalConfiguration().get(player.getWorld());
|
||||
return plugin.getGlobalStateManager().get(player.getWorld());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -184,7 +184,7 @@ public void onBlockFromTo(BlockFromToEvent event) {
|
||||
boolean isWater = blockFrom.getTypeId() == 8 || blockFrom.getTypeId() == 9;
|
||||
boolean isLava = blockFrom.getTypeId() == 10 || blockFrom.getTypeId() == 11;
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getBlock().getWorld());
|
||||
|
||||
if (wcfg.simulateSponge && isWater) {
|
||||
@ -266,7 +266,7 @@ public void onBlockIgnite(BlockIgniteEvent event) {
|
||||
Block block = event.getBlock();
|
||||
World world = block.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
boolean isFireSpread = cause == IgniteCause.SPREAD;
|
||||
@ -358,7 +358,7 @@ public void onBlockBurn(BlockBurnEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getBlock().getWorld());
|
||||
|
||||
if (wcfg.disableFireSpread) {
|
||||
@ -409,7 +409,7 @@ public void onBlockPhysics(BlockPhysicsEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getBlock().getWorld());
|
||||
|
||||
int id = event.getChangedTypeId();
|
||||
@ -444,7 +444,7 @@ public void onBlockPlace(BlockPlaceEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
World world = blockPlaced.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
@ -494,7 +494,7 @@ public void onBlockRedstoneChange(BlockRedstoneEvent event) {
|
||||
Block blockTo = event.getBlock();
|
||||
World world = blockTo.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.simulateSponge && wcfg.redstoneSponges) {
|
||||
|
@ -82,7 +82,7 @@ public void onEntityInteract(EntityInteractEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
Block block = event.getBlock();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(entity.getWorld());
|
||||
|
||||
if (block.getType() == Material.SOIL) {
|
||||
@ -101,7 +101,7 @@ private void onEntityDamageByBlock(EntityDamageByBlockEvent event) {
|
||||
Entity defender = event.getEntity();
|
||||
DamageCause type = event.getCause();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(defender.getWorld());
|
||||
|
||||
if (defender instanceof Wolf) {
|
||||
@ -158,7 +158,7 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
||||
if (defender instanceof Player) {
|
||||
Player player = (Player) defender;
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (cfg.hasGodMode(player)) {
|
||||
@ -230,7 +230,7 @@ private void onEntityDamageByProjectile(EntityDamageByProjectileEvent event) {
|
||||
if (defender instanceof Player) {
|
||||
Player player = (Player) defender;
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (cfg.hasGodMode(player)) {
|
||||
@ -288,7 +288,7 @@ public void onEntityDamage(EntityDamageEvent event) {
|
||||
Entity defender = event.getEntity();
|
||||
DamageCause type = event.getCause();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(defender.getWorld());
|
||||
|
||||
if (defender instanceof Wolf) {
|
||||
@ -358,7 +358,7 @@ public void onEntityExplode(EntityExplodeEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
Location l = event.getLocation();
|
||||
World world = l.getWorld();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
@ -430,7 +430,7 @@ public void onCreatureSpawn(CreatureSpawnEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getEntity().getWorld());
|
||||
|
||||
//CreatureType creaType = (CreatureType) CreatureType.valueOf(event.getMobType().toString());
|
||||
@ -484,7 +484,7 @@ public void onPigZap(PigZapEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getEntity().getWorld());
|
||||
|
||||
if (wcfg.disablePigZap) {
|
||||
@ -501,7 +501,7 @@ public void onCreeperPower(CreeperPowerEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getEntity().getWorld());
|
||||
|
||||
if (wcfg.disableCreeperPower) {
|
||||
@ -531,7 +531,7 @@ public void onPaintingBreak(PaintingBreakEvent breakEvent) {
|
||||
Player player = (Player) event.getRemover();
|
||||
World world = painting.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
@ -552,7 +552,7 @@ public void onPaintingPlace(PaintingPlaceEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
World world = placedOn.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
|
@ -84,7 +84,7 @@ public void registerEvents() {
|
||||
public void onPlayerLogin(PlayerLoginEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (wcfg.enforceOneSession) {
|
||||
@ -105,7 +105,7 @@ public void onPlayerLogin(PlayerLoginEvent event) {
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (wcfg.fireSpreadDisableToggle) {
|
||||
@ -129,8 +129,9 @@ public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
cfg.forgetPlayer(plugin.wrapPlayer(player));
|
||||
plugin.forgetPlayer(player);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -174,7 +175,7 @@ private void handleBlockLeftClick(PlayerInteractEvent event) {
|
||||
Material type = block.getType();
|
||||
World world = player.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
@ -212,7 +213,7 @@ private void handleAirRightClick(PlayerInteractEvent event) {
|
||||
World world = player.getWorld();
|
||||
ItemStack item = player.getItemInHand();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.getBlacklist() != null) {
|
||||
@ -242,7 +243,7 @@ private void handleBlockRightClick(PlayerInteractEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
ItemStack item = player.getItemInHand();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (wcfg.blockLighter && item.getType() == Material.FLINT_AND_STEEL) {
|
||||
@ -448,7 +449,7 @@ private void handlePhysicalInteract(PlayerInteractEvent event) {
|
||||
Material type = block.getType();
|
||||
World world = player.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (block.getType() == Material.SOIL && wcfg.disablePlayerCropTrampling) {
|
||||
@ -551,7 +552,7 @@ public void onPlayerDropItem(PlayerDropItemEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getPlayer().getWorld());
|
||||
|
||||
if (wcfg.getBlacklist() != null) {
|
||||
@ -575,7 +576,7 @@ public void onPlayerPickupItem(PlayerPickupItemEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getPlayer().getWorld());
|
||||
|
||||
if (wcfg.getBlacklist() != null) {
|
||||
@ -598,7 +599,7 @@ public void onPlayerBucketFill(PlayerBucketFillEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
World world = player.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (!plugin.getGlobalRegionManager().canBuild(player, event.getBlockClicked())) {
|
||||
@ -625,7 +626,7 @@ public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
World world = player.getWorld();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(world);
|
||||
|
||||
if (!plugin.getGlobalRegionManager().canBuild(player, event.getBlockClicked())) {
|
||||
@ -652,7 +653,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
Location location = player.getLocation();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
@ -692,7 +693,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) {
|
||||
public void onItemHeldChange(PlayerItemHeldEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (wcfg.removeInfiniteStacks
|
||||
@ -718,7 +719,7 @@ public void onPlayerBedEnter(PlayerBedEnterEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
Location location = player.getLocation();
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(player.getWorld());
|
||||
|
||||
if (wcfg.useRegions) {
|
||||
|
@ -53,24 +53,24 @@ public class WorldGuardPlugin extends JavaPlugin {
|
||||
/**
|
||||
* Logger for messages.
|
||||
*/
|
||||
protected static final Logger logger = Logger.getLogger("Minecraft.WorldGuard");
|
||||
private static final Logger logger = Logger.getLogger("Minecraft.WorldGuard");
|
||||
|
||||
/**
|
||||
* Manager for commands. This automatically handles nested commands,
|
||||
* permissions checking, and a number of other fancy command things.
|
||||
* We just set it up and register commands against it.
|
||||
*/
|
||||
protected final CommandsManager<CommandSender> commands;
|
||||
private final CommandsManager<CommandSender> commands;
|
||||
|
||||
/**
|
||||
* Handles the region databases for all worlds.
|
||||
*/
|
||||
protected final GlobalRegionManager globalRegionManager;
|
||||
private final GlobalRegionManager globalRegionManager;
|
||||
|
||||
/**
|
||||
* Handles all configuration.
|
||||
*/
|
||||
protected final GlobalStateManager configuration;
|
||||
private final GlobalStateManager configuration;
|
||||
|
||||
/**
|
||||
* Processes queries for permissions information. The permissions manager
|
||||
@ -78,7 +78,12 @@ public class WorldGuardPlugin extends JavaPlugin {
|
||||
* systems and picking the right one. WorldGuard just needs to call
|
||||
* the permission methods.
|
||||
*/
|
||||
protected PermissionsResolverManager perms;
|
||||
private PermissionsResolverManager perms;
|
||||
|
||||
/**
|
||||
* Used for scheduling flags.
|
||||
*/
|
||||
private FlagScheduler flagScheduler;
|
||||
|
||||
/**
|
||||
* Construct objects. Actual loading occurs when the plugin is enabled, so
|
||||
@ -133,6 +138,10 @@ public void onEnable() {
|
||||
(new WorldGuardBlockListener(this)).registerEvents();
|
||||
(new WorldGuardEntityListener(this)).registerEvents();
|
||||
(new WorldGuardWeatherListener(this)).registerEvents();
|
||||
|
||||
flagScheduler = new FlagScheduler(this);
|
||||
getServer().getScheduler().scheduleAsyncRepeatingTask(this,
|
||||
flagScheduler, FlagScheduler.RUN_DELAY, FlagScheduler.RUN_DELAY);
|
||||
|
||||
if (configuration.suppressTickSyncWarnings) {
|
||||
Logger.getLogger("Minecraft").setFilter(
|
||||
@ -199,8 +208,18 @@ public GlobalRegionManager getGlobalRegionManager() {
|
||||
* Get the WorldGuardConfiguraton.
|
||||
*
|
||||
* @return
|
||||
* @deprecated Use {@link #getGlobalStateManager()} instead
|
||||
*/
|
||||
public GlobalStateManager getGlobalConfiguration() {
|
||||
return getGlobalStateManager();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the WorldGuardConfiguraton.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public GlobalStateManager getGlobalStateManager() {
|
||||
return configuration;
|
||||
}
|
||||
|
||||
@ -274,7 +293,7 @@ public String toName(CommandSender sender) {
|
||||
public boolean hasPermission(CommandSender sender, String perm) {
|
||||
if (sender.isOp()) {
|
||||
if (sender instanceof Player) {
|
||||
if (this.getGlobalConfiguration().get(((Player) sender).
|
||||
if (this.getGlobalStateManager().get(((Player) sender).
|
||||
getWorld()).opPermissions) {
|
||||
return true;
|
||||
}
|
||||
@ -657,6 +676,15 @@ public static void createDefaultConfiguration(File actual,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Forgets a player.
|
||||
*
|
||||
* @param player
|
||||
*/
|
||||
public void forgetPlayer(Player player) {
|
||||
flagScheduler.forget(player);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if a player can build at a location. This will return
|
||||
* true if region protection is disabled.
|
||||
|
@ -61,7 +61,7 @@ public void onWeatherChange(WeatherChangeEvent event) {
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getWorld());
|
||||
|
||||
if (event.toWeatherState()) {
|
||||
@ -81,7 +81,7 @@ public void onThunderChange(ThunderChangeEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getWorld());
|
||||
|
||||
if (event.toThunderState()) {
|
||||
@ -101,7 +101,7 @@ public void onLightningStrike(LightningStrikeEvent event) {
|
||||
return;
|
||||
}
|
||||
|
||||
GlobalStateManager cfg = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager cfg = plugin.getGlobalStateManager();
|
||||
WorldStateManager wcfg = cfg.get(event.getWorld());
|
||||
|
||||
if (wcfg.disallowedLightningBlocks.size() > 0) {
|
||||
|
@ -39,7 +39,7 @@ public class GeneralCommands {
|
||||
flags = "s", min = 0, max = 1)
|
||||
public static void god(CommandContext args, WorldGuardPlugin plugin,
|
||||
CommandSender sender) throws CommandException {
|
||||
GlobalStateManager config = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager config = plugin.getGlobalStateManager();
|
||||
|
||||
Iterable<Player> targets = null;
|
||||
boolean included = false;
|
||||
@ -87,7 +87,7 @@ public static void god(CommandContext args, WorldGuardPlugin plugin,
|
||||
flags = "s", min = 0, max = 1)
|
||||
public static void ungod(CommandContext args, WorldGuardPlugin plugin,
|
||||
CommandSender sender) throws CommandException {
|
||||
GlobalStateManager config = plugin.getGlobalConfiguration();
|
||||
GlobalStateManager config = plugin.getGlobalStateManager();
|
||||
|
||||
Iterable<Player> targets = null;
|
||||
boolean included = false;
|
||||
|
@ -234,7 +234,7 @@ public static void claim(CommandContext args, WorldGuardPlugin plugin,
|
||||
region.setOwners(RegionUtil.parseDomainString(args.getSlice(1), 1));
|
||||
}
|
||||
|
||||
WorldStateManager wcfg = plugin.getGlobalConfiguration().get(player.getWorld());
|
||||
WorldStateManager wcfg = plugin.getGlobalStateManager().get(player.getWorld());
|
||||
RegionManager mgr = plugin.getGlobalRegionManager().get(sel.getWorld());
|
||||
|
||||
// Check whether the player has created too many regions
|
||||
|
@ -43,7 +43,7 @@ public static void stopFire(CommandContext args, WorldGuardPlugin plugin,
|
||||
world = plugin.matchWorld(sender, args.getString(0));
|
||||
}
|
||||
|
||||
WorldStateManager wcfg = plugin.getGlobalConfiguration().get(world);
|
||||
WorldStateManager wcfg = plugin.getGlobalStateManager().get(world);
|
||||
|
||||
if (!wcfg.fireSpreadDisableToggle) {
|
||||
plugin.getServer().broadcastMessage(
|
||||
@ -74,7 +74,7 @@ public static void allowFire(CommandContext args, WorldGuardPlugin plugin,
|
||||
world = plugin.matchWorld(sender, args.getString(0));
|
||||
}
|
||||
|
||||
WorldStateManager wcfg = plugin.getGlobalConfiguration().get(world);
|
||||
WorldStateManager wcfg = plugin.getGlobalStateManager().get(world);
|
||||
|
||||
if (wcfg.fireSpreadDisableToggle) {
|
||||
plugin.getServer().broadcastMessage(ChatColor.YELLOW
|
||||
|
@ -69,9 +69,9 @@ public static void relload(CommandContext args, WorldGuardPlugin plugin,
|
||||
}
|
||||
|
||||
try {
|
||||
plugin.getGlobalConfiguration().unload();
|
||||
plugin.getGlobalStateManager().unload();
|
||||
plugin.getGlobalRegionManager().unload();
|
||||
plugin.getGlobalConfiguration().load();
|
||||
plugin.getGlobalStateManager().load();
|
||||
plugin.getGlobalRegionManager().preload();
|
||||
sender.sendMessage("WorldGuard configuration reloaded.");
|
||||
} catch (Throwable t) {
|
||||
|
@ -77,7 +77,7 @@ public class GlobalRegionManager {
|
||||
*/
|
||||
public GlobalRegionManager(WorldGuardPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
config = plugin.getGlobalConfiguration();
|
||||
config = plugin.getGlobalStateManager();
|
||||
managers = new HashMap<String, RegionManager>();
|
||||
lastModified = new HashMap<String, Long>();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user