diff --git a/src/de/diddiz/LogBlock/Consumer.java b/src/de/diddiz/LogBlock/Consumer.java index ca66870..85a5d2e 100644 --- a/src/de/diddiz/LogBlock/Consumer.java +++ b/src/de/diddiz/LogBlock/Consumer.java @@ -5,13 +5,14 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.HashSet; +import java.util.TimerTask; import java.util.concurrent.LinkedBlockingQueue; import java.util.logging.Level; import org.bukkit.block.Block; import org.bukkit.entity.Player; -public class Consumer implements Runnable +public class Consumer extends TimerTask implements Runnable { private LinkedBlockingQueue bqueue = new LinkedBlockingQueue(); private HashSet hiddenplayers = new HashSet(); diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 23c7b78..515caab 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -7,6 +7,7 @@ import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java.sql.Statement; +import java.util.Timer; import java.util.logging.Level; import java.util.logging.Logger; @@ -54,6 +55,7 @@ public class LogBlock extends JavaPlugin public static Config config; public ConnectionPool pool; private Consumer consumer = null; + private Timer timer = null; @Override public void onEnable() { @@ -123,13 +125,18 @@ public class LogBlock extends JavaPlugin consumer = new Consumer(this); if (getServer().getScheduler().scheduleAsyncRepeatingTask(this, consumer, config.delay * 20, config.delay * 20) > 0) log.info("[LogBlock] Started consumer"); - else - log.severe("[LogBlock] Failed to start consumer"); + else { + log.warning("[LogBlock] Failed to schedule consumer with bukkit scheduler. Now trying timer scheduler."); + timer = new Timer(); + timer.scheduleAtFixedRate(consumer, config.delay*1000, config.delay*1000); + } log.info("Logblock v" + getDescription().getVersion() + " enabled."); } @Override public void onDisable() { + if (timer != null) + timer.cancel(); if (consumer != null && consumer.getQueueSize() > 0) { log.info("[LogBlock] Waiting for consumer ..."); Thread thread = new Thread(consumer);