diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/MinionList.java index 11a7340ef9..3fa8833769 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/MinionList.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/MinionList.java index 7e9a2f0f4c..fa77292518 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/MinionList.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/util/MinionList.java @@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.util; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.ScheduledFuture; import org.l2jmobius.Config; import org.l2jmobius.commons.concurrent.ThreadPool; @@ -36,6 +37,7 @@ public class MinionList { protected final MonsterInstance _master; private final List _spawnedMinions = new CopyOnWriteArrayList<>(); + private final List> _respawnTasks = new CopyOnWriteArrayList<>(); public MinionList(MonsterInstance pMaster) { @@ -117,8 +119,20 @@ public class MinionList minion.deleteMe(); } } - _spawnedMinions.clear(); } + _spawnedMinions.clear(); + + if (!_respawnTasks.isEmpty()) + { + for (ScheduledFuture task : _respawnTasks) + { + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + } + } + _respawnTasks.clear(); } } @@ -135,7 +149,7 @@ public class MinionList final int time = respawnTime < 0 ? _master.isRaid() ? (int) Config.RAID_MINION_RESPAWN_TIMER : 0 : respawnTime; if ((time > 0) && !_master.isAlikeDead()) { - ThreadPool.schedule(new MinionRespawnTask(minion), time); + _respawnTasks.add(ThreadPool.schedule(new MinionRespawnTask(minion), time)); } }