diff --git a/src/com/wimbli/WorldBorder/Config.java b/src/com/wimbli/WorldBorder/Config.java index 67b42a1..51bbe8b 100644 --- a/src/com/wimbli/WorldBorder/Config.java +++ b/src/com/wimbli/WorldBorder/Config.java @@ -236,6 +236,12 @@ public class Config + public static boolean isBorderTimerRunning() + { + if (borderTask == -1) return false; + return (plugin.getServer().getScheduler().isQueued(borderTask) || plugin.getServer().getScheduler().isCurrentlyRunning(borderTask)); + } + public static void StartBorderTimer() { StopBorderTimer(); diff --git a/src/com/wimbli/WorldBorder/WBListener.java b/src/com/wimbli/WorldBorder/WBListener.java index 214dc47..1f6d064 100644 --- a/src/com/wimbli/WorldBorder/WBListener.java +++ b/src/com/wimbli/WorldBorder/WBListener.java @@ -4,6 +4,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerTeleportEvent; +import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.Location; @@ -22,4 +23,14 @@ public class WBListener implements Listener if (newLoc != null) event.setTo(newLoc); } + + @EventHandler(priority = EventPriority.MONITOR) + public void onChunkLoad(ChunkLoadEvent event) + { + // make sure our border monitoring task is still running like it should + if (Config.isBorderTimerRunning()) return; + + Config.LogWarn("Border-checking task was not running! Something on your server apparently killed it. It will now be restarted."); + Config.StartBorderTimer(); + } }