diff --git a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandTask.java b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandTask.java index 703d1145..138c8119 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandTask.java +++ b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/CommandTask.java @@ -49,7 +49,7 @@ public class CommandTask extends BukkitRunnable { @Override public void run() { - if (isWorldFinished()) { + if (sign.isWorldFinished()) { sign.deactivate(); return; } diff --git a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DelayedPowerTask.java b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DelayedPowerTask.java index eaa5b6d2..60f676e2 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DelayedPowerTask.java +++ b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DelayedPowerTask.java @@ -16,6 +16,7 @@ */ package de.erethon.dungeonsxl.sign.windup; +import de.erethon.dungeonsxl.api.DungeonsAPI; import org.bukkit.scheduler.BukkitRunnable; /** @@ -23,17 +24,19 @@ import org.bukkit.scheduler.BukkitRunnable; */ public class DelayedPowerTask extends BukkitRunnable { + private DungeonsAPI api; + private RedstoneSign sign; private boolean enable; - public DelayedPowerTask(RedstoneSign sign, boolean enable) { + public DelayedPowerTask(DungeonsAPI api, RedstoneSign sign, boolean enable) { this.sign = sign; this.enable = enable; } @Override public void run() { - if (isWorldFinished()) { + if (api.getGameWorld(sign.getSign().getWorld()) != null) { sign.getEnableTask().cancel(); sign.getDisableTask().cancel(); return; diff --git a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DropSign.java b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DropSign.java index 7345fa6a..9855857e 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DropSign.java +++ b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/DropSign.java @@ -93,10 +93,14 @@ public class DropSign extends Windup { setRunnable(new BukkitRunnable() { @Override public void run() { + if (isWorldFinished()) { + deactivate(); + return; + } try { spawnLocation.getWorld().dropItem(spawnLocation, getItem()); } catch (NullPointerException exception) { - cancel(); + deactivate(); } } }); diff --git a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSpawnTask.java b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSpawnTask.java index 3239eebb..b44d9003 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSpawnTask.java +++ b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/MobSpawnTask.java @@ -35,7 +35,7 @@ public class MobSpawnTask extends BukkitRunnable { @Override public void run() { - if (isWorldFinished()) { + if (sign.isWorldFinished()) { sign.deactivate(); return; } diff --git a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/RedstoneSign.java b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/RedstoneSign.java index da1eab8c..0447baba 100644 --- a/core/src/main/java/de/erethon/dungeonsxl/sign/windup/RedstoneSign.java +++ b/core/src/main/java/de/erethon/dungeonsxl/sign/windup/RedstoneSign.java @@ -22,7 +22,6 @@ import de.erethon.dungeonsxl.api.DungeonsAPI; import de.erethon.dungeonsxl.api.sign.Rocker; import de.erethon.dungeonsxl.api.world.InstanceWorld; import de.erethon.dungeonsxl.player.DPermission; -import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.bukkit.scheduler.BukkitTask; @@ -157,11 +156,11 @@ public class RedstoneSign extends Rocker { } if (delay > 0) { - enableTask = new DelayedPowerTask(this, true).runTaskTimer(api, delay, delay + offDelay); + enableTask = new DelayedPowerTask(api, this, true).runTaskTimer(api, delay, delay + offDelay); if (repeat != 1) { repeatsToDo = repeat; - disableTask = new DelayedPowerTask(this, false).runTaskTimer(api, delay + offDelay, delay + offDelay); + disableTask = new DelayedPowerTask(api, this, false).runTaskTimer(api, delay + offDelay, delay + offDelay); } } else {