rendered paste bodyIndex: java/net/sf/l2j/Config.java
===================================================================
--- java/net/sf/l2j/Config.java (revision 1582)
+++ java/net/sf/l2j/Config.java (working copy)
@@ -75,6 +75,20 @@
public static int THREAD_P_MED;
public static int THREAD_P_LOW;
+ /** Thread pools size - new method */
+ public static int THREAD_P_SYSTEM;
+ public static int THREAD_P_TASK;
+ public static int THREAD_P_SPAWN;
+ public static int THREAD_P_POTION;
+ public static int THREAD_P_EFFECT;
+ public static int THREAD_P_AI;
+ public static int THREAD_P_SIEGEAI;
+ public static int THREAD_P_SIEGE;
+ public static int THREAD_P_ACTOR;
+ public static int THREAD_P_CRAFT;
+ public static int THREAD_P_QUEST;
+ public static int THREAD_P_OTHER;
+
/** Auto-loot? */
public static boolean AUTO_LOOT;
@@ -408,7 +422,20 @@
public static int EXECUTOR_PRI_MED;
public static int EXECUTOR_PRI_HIGH;
+ public static int EXECUTOR_PRI_SYSTEM;
+ public static int EXECUTOR_PRI_TASK;
+ public static int EXECUTOR_PRI_SPAWN;
+ public static int EXECUTOR_PRI_POTION;
+ public static int EXECUTOR_PRI_EFFECT;
+ public static int EXECUTOR_PRI_AI;
+ public static int EXECUTOR_PRI_SIEGEAI;
+ public static int EXECUTOR_PRI_SIEGE;
+ public static int EXECUTOR_PRI_ACTOR;
+ public static int EXECUTOR_PRI_CRAFT;
+ public static int EXECUTOR_PRI_QUEST;
+ public static int EXECUTOR_PRI_OTHER;
+
public static enum IdFactoryType
{
Compaction,
@@ -634,6 +661,19 @@
THREAD_P_HIGH = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeHigh", "4"));
THREAD_P_MED = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeMed", "10"));
THREAD_P_LOW = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeLow", "4"));
+
+ THREAD_P_SYSTEM = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSystem", "4"));
+ THREAD_P_TASK = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeTask", "4"));
+ THREAD_P_SPAWN = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSpawn", "4"));
+ THREAD_P_POTION = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizePotion", "4"));
+ THREAD_P_EFFECT = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeEffect", "4"));
+ THREAD_P_AI = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeAi", "4"));
+ THREAD_P_SIEGEAI = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSiegeAi", "4"));
+ THREAD_P_SIEGE = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeSiege", "4"));
+ THREAD_P_ACTOR = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeActor", "4"));
+ THREAD_P_CRAFT = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeCraft", "4"));
+ THREAD_P_QUEST = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeQuest", "4"));
+ THREAD_P_OTHER = Integer.parseInt(serverSettings.getProperty("ThreadPoolSizeOther", "4"));
MAXIMUM_ONLINE_USERS = Integer.parseInt(serverSettings.getProperty("MaximumOnlineUsers", "100"));
@@ -667,7 +707,21 @@
EXECUTOR_PRI_LOW = Integer.parseInt(serverSettings.getProperty("ExecutorPriLow", "-1"));
EXECUTOR_PRI_MED = Integer.parseInt(serverSettings.getProperty("ExecutorPriMed", "0"));
EXECUTOR_PRI_HIGH = Integer.parseInt(serverSettings.getProperty("ExecutorPriHigh", "1"));
+
+ EXECUTOR_PRI_SYSTEM = Integer.parseInt(serverSettings.getProperty("ExecutorPriSystem", "1"));
+ EXECUTOR_PRI_TASK = Integer.parseInt(serverSettings.getProperty("ExecutorPriTask", "0"));
+ EXECUTOR_PRI_SPAWN = Integer.parseInt(serverSettings.getProperty("ExecutorPriSpawn", "0"));
+ EXECUTOR_PRI_POTION = Integer.parseInt(serverSettings.getProperty("ExecutorPriPotion", "-1"));
+ EXECUTOR_PRI_EFFECT = Integer.parseInt(serverSettings.getProperty("ExecutorPriEffect", "-1"));
+ EXECUTOR_PRI_AI = Integer.parseInt(serverSettings.getProperty("ExecutorPriAi", "0"));
+ EXECUTOR_PRI_SIEGEAI = Integer.parseInt(serverSettings.getProperty("ExecutorPriSiegeAi", "0"));
+ EXECUTOR_PRI_SIEGE = Integer.parseInt(serverSettings.getProperty("ExecutorPriSiege", "0"));
+ EXECUTOR_PRI_ACTOR = Integer.parseInt(serverSettings.getProperty("ExecutorPriActor", "0"));
+ EXECUTOR_PRI_CRAFT = Integer.parseInt(serverSettings.getProperty("ExecutorPriCraft", "-1"));
+ EXECUTOR_PRI_QUEST = Integer.parseInt(serverSettings.getProperty("ExecutorPriQuest", "-1"));
+ EXECUTOR_PRI_OTHER = Integer.parseInt(serverSettings.getProperty("ExecutorPriOther", "-1"));
+
DEFAULT_PUNISH = Integer.parseInt(serverSettings.getProperty("DefaultPunish", "2"));
BYPASS_VALIDATION = Boolean.valueOf(serverSettings.getProperty("BypassValidation", "False"));
Index: java/net/sf/l2j/gameserver/ai/AbstractAI.java
===================================================================
--- java/net/sf/l2j/gameserver/ai/AbstractAI.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ai/AbstractAI.java (working copy)
@@ -740,7 +740,7 @@
// Create and Launch an AI Follow Task to execute every 1s
_follow_target = target;
- _follow_task = ClientScheduler.getInstance().scheduleMedAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL);
+ _follow_task = ClientScheduler.getInstance().scheduleAiAtFixedRate(new FollowTask(), 5, FOLLOW_INTERVAL);
}
/**
@@ -758,7 +758,7 @@
}
_follow_target = target;
- _follow_task = ClientScheduler.getInstance().scheduleMedAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL);
+ _follow_task = ClientScheduler.getInstance().scheduleAiAtFixedRate(new FollowTask(range), 5, ATTACK_FOLLOW_INTERVAL);
}
/**
Index: java/net/sf/l2j/gameserver/ai/L2AttackableAI.java
===================================================================
--- java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ai/L2AttackableAI.java (working copy)
@@ -242,7 +242,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleAiAtFixedRate(this, 1000, 1000);
}
}
Index: java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java
===================================================================
--- java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ai/L2SiegeGuardAI.java (working copy)
@@ -195,7 +195,7 @@
// If not idle - create an AI task (schedule onEvtThink repeatedly)
if (aiTask == null)
{
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(this, 1000, 1000);
+ aiTask = ClientScheduler.getInstance().scheduleSiegeAiAtFixedRate(this, 1000, 1000);
}
}
Index: java/net/sf/l2j/gameserver/CastleUpdater.java
===================================================================
--- java/net/sf/l2j/gameserver/CastleUpdater.java (revision 1580)
+++ java/net/sf/l2j/gameserver/CastleUpdater.java (working copy)
@@ -68,7 +68,7 @@
// re-run again in 1 hours
CastleUpdater cu = new CastleUpdater(_clan, _RunCount);
- ClientScheduler.getInstance().scheduleLow(cu, 3600000);
+ ClientScheduler.getInstance().scheduleOther(cu, 3600000);
}
} catch (Throwable e) {
e.printStackTrace();
Index: java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java
===================================================================
--- java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (revision 1582)
+++ java/net/sf/l2j/gameserver/clientpackets/RequestRestartPoint.java (working copy)
@@ -119,25 +119,24 @@
&& castle.getSiege().checkIsAttacker(activeChar.getClan()))
{
// Schedule respawn delay for attacker
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), castle.getSiege().getAttackerRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getAttackerRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
else
{
// Schedule respawn delay for defender with penalty for CT lose
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), castle.getSiege().getDefenderRespawnDelay());
sm.addString("You will be re-spawned in " + castle.getSiege().getDefenderRespawnDelay()/1000 + " seconds");
activeChar.sendPacket(sm);
}
return;
}
- ClientScheduler.getInstance().scheduleLow(new DeathTask(activeChar), 1);
+ ClientScheduler.getInstance().scheduleSiegeAi(new DeathTask(activeChar), 1);
}
+
-
-
/* (non-Javadoc)
* @see net.sf.l2j.gameserver.clientpackets.ClientBasePacket#getType()
*/
Index: java/net/sf/l2j/gameserver/clientpackets/RequestWearItem.java
===================================================================
--- java/net/sf/l2j/gameserver/clientpackets/RequestWearItem.java (revision 1582)
+++ java/net/sf/l2j/gameserver/clientpackets/RequestWearItem.java (working copy)
@@ -219,7 +219,7 @@
sendPacket(il);
if (_removeWearItemsTask == null)
- _removeWearItemsTask=ClientScheduler.getInstance().scheduleLow(new RemoveWearItemsTask(), 10000);
+ _removeWearItemsTask=ClientScheduler.getInstance().scheduleOther(new RemoveWearItemsTask(), 10000);
}
/* (non-Javadoc)
Index: java/net/sf/l2j/gameserver/ClientScheduler.java
===================================================================
--- java/net/sf/l2j/gameserver/ClientScheduler.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ClientScheduler.java (working copy)
@@ -31,20 +31,10 @@
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.clientpackets.ClientBasePacket;
-/**
- * This class permit to create 3 Threads pools and to add to it tasks to execute in function of their priority (HIGH, MEDIUM,LOW).<BR><BR>
- *
- * <B><U> Threads pools </U> :</B><BR><BR>
- * <li> A pool containing 4 Hight Threads </li>
- * <li> A pool containing 10 Medium Threads </li>
- * <li> A pool containing 4 Low priority Threads </li><BR><BR>
- *
- */
-
public final class ClientScheduler
{
- static Logger _log = Logger.getLogger(ClientScheduler.class.getName());
-
+ static Logger _log = Logger.getLogger(ClientScheduler.class.getName());
+
public static final int PRIORITY_URGENT = 3;
public static final int PRIORITY_HIGH = 2;
public static final int PRIORITY_MEDIUM = 1;
@@ -52,48 +42,113 @@
private static final ClientScheduler _instance = new ClientScheduler();
- private final ScheduledThreadPoolExecutor _executorHighPriority;
- private final ScheduledThreadPoolExecutor _executorMedPriority;
- private final ScheduledThreadPoolExecutor _executorLowPriority;
+ private final ScheduledThreadPoolExecutor _executorHigh; // system type threads, highest priority (not urgent)
+ private final ScheduledThreadPoolExecutor _executorMed; // only for "drinkable" type of potions
+ private final ScheduledThreadPoolExecutor _executorLow; // spells/buffs/melee skills with effect ???
+ private final ScheduledThreadPoolExecutor _executorSystem; // system type threads, highest priority (not urgent)
+ private final ScheduledThreadPoolExecutor _executorTask;
+ private final ScheduledThreadPoolExecutor _executorSpawn;
+ private final ScheduledThreadPoolExecutor _executorPotion; // only for "drinkable" type of potions
+ private final ScheduledThreadPoolExecutor _executorEffect; // spells/buffs/melee skills with effect ???
+ private final ScheduledThreadPoolExecutor _executorAi; // ai
+ private final ScheduledThreadPoolExecutor _executorSiegeAi; // think that Siege is important enough to have it's own pool
+ private final ScheduledThreadPoolExecutor _executorSiege;
+ private final ScheduledThreadPoolExecutor _executorActor;
+ private final ScheduledThreadPoolExecutor _executorCraft; // threads used only in alt_craft_mode but wth
+ private final ScheduledThreadPoolExecutor _executorQuest; // quest related stuff ???
+ private final ScheduledThreadPoolExecutor _executorOther; // other ? what other ?
- /**
- * Constructor of ClientScheduler.<BR><BR>
- */
+
public static final ClientScheduler getInstance()
{
return _instance;
}
- /**
- * Create a pool of 4 Hight Threads, a pool of 10 Medium Threads, and a pool of 4 Low priority Threads to execute Task.<BR><BR>
- */
private ClientScheduler()
{
if (Config.ASSERT) assert _instance == null;
- _executorHighPriority = new ScheduledThreadPoolExecutor(Config.THREAD_P_HIGH, new ThrFactory(Config.EXECUTOR_PRI_HIGH, "PoolHIGH"));
- _executorMedPriority = new ScheduledThreadPoolExecutor(Config.THREAD_P_MED, new ThrFactory(Config.EXECUTOR_PRI_MED, "PoolMED"));
- _executorLowPriority = new ScheduledThreadPoolExecutor(Config.THREAD_P_LOW, new ThrFactory(Config.EXECUTOR_PRI_LOW, "PoolLOW"));
+ _executorHigh = new ScheduledThreadPoolExecutor(Config.THREAD_P_HIGH, new ThrFactory(Config.EXECUTOR_PRI_HIGH, "PoolHigh"));
+ _executorMed = new ScheduledThreadPoolExecutor(Config.THREAD_P_MED, new ThrFactory(Config.EXECUTOR_PRI_MED, "PoolMed"));
+ _executorLow = new ScheduledThreadPoolExecutor(Config.THREAD_P_LOW, new ThrFactory(Config.EXECUTOR_PRI_LOW, "PoolLow"));
+
+ _executorSystem = new ScheduledThreadPoolExecutor(Config.THREAD_P_SYSTEM, new ThrFactory(Config.EXECUTOR_PRI_SYSTEM, "PoolSystem"));
+ _executorTask = new ScheduledThreadPoolExecutor(Config.THREAD_P_TASK, new ThrFactory(Config.EXECUTOR_PRI_TASK, "PoolTask"));
+ _executorSpawn = new ScheduledThreadPoolExecutor(Config.THREAD_P_SPAWN, new ThrFactory(Config.EXECUTOR_PRI_SPAWN, "PoolSpawn"));
+ _executorPotion = new ScheduledThreadPoolExecutor(Config.THREAD_P_POTION, new ThrFactory(Config.EXECUTOR_PRI_POTION, "PoolPotion"));
+ _executorEffect = new ScheduledThreadPoolExecutor(Config.THREAD_P_EFFECT, new ThrFactory(Config.EXECUTOR_PRI_EFFECT, "PoolEffect"));
+ _executorAi = new ScheduledThreadPoolExecutor(Config.THREAD_P_AI, new ThrFactory(Config.EXECUTOR_PRI_AI, "PoolAi"));
+ _executorSiegeAi = new ScheduledThreadPoolExecutor(Config.THREAD_P_SIEGEAI, new ThrFactory(Config.EXECUTOR_PRI_SIEGEAI, "PoolSiegeAi"));
+ _executorSiege = new ScheduledThreadPoolExecutor(Config.THREAD_P_SIEGE, new ThrFactory(Config.EXECUTOR_PRI_SIEGE, "PoolSiege"));
+ _executorActor = new ScheduledThreadPoolExecutor(Config.THREAD_P_SIEGE, new ThrFactory(Config.EXECUTOR_PRI_ACTOR, "PoolActor"));
+ _executorCraft = new ScheduledThreadPoolExecutor(Config.THREAD_P_CRAFT, new ThrFactory(Config.EXECUTOR_PRI_CRAFT, "PoolCraft"));
+ _executorQuest = new ScheduledThreadPoolExecutor(Config.THREAD_P_QUEST, new ThrFactory(Config.EXECUTOR_PRI_QUEST, "PoolQuest"));
+ _executorOther = new ScheduledThreadPoolExecutor(Config.THREAD_P_OTHER, new ThrFactory(Config.EXECUTOR_PRI_OTHER, "PoolOther"));
}
- /**
- * Close all pool of Threads.<BR><BR>
- */
public void closeAll()
{
- try { _executorHighPriority.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
- try { _executorMedPriority.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
- try { _executorLowPriority.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
-
- try { _executorHighPriority.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
- try { _executorMedPriority.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
- try { _executorLowPriority.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorHigh.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorHigh.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorHigh.shutdownNow();
+
+ try { _executorMed.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorMed.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorMed.shutdownNow();
+
+ try { _executorLow.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorLow.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorLow.shutdownNow();
- _executorHighPriority.shutdownNow();
- _executorHighPriority.shutdownNow();
- _executorHighPriority.shutdownNow();
+ try { _executorSystem.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorSystem.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorSystem.shutdownNow();
+
+ try { _executorTask.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorTask.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorTask.shutdownNow();
+
+ try { _executorSpawn.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorSpawn.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorSpawn.shutdownNow();
+
+ try { _executorPotion.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorPotion.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorPotion.shutdownNow();
+
+ try { _executorEffect.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorEffect.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorEffect.shutdownNow();
+
+ try { _executorAi.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorAi.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorAi.shutdownNow();
+
+ try { _executorSiegeAi.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorSiegeAi.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorSiegeAi.shutdownNow();
+
+ try { _executorSiege.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorSiege.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorSiege.shutdownNow();
+
+ try { _executorActor.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorActor.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorActor.shutdownNow();
+
+ try { _executorCraft.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorCraft.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorCraft.shutdownNow();
+
+ try { _executorQuest.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorQuest.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorQuest.shutdownNow();
+
+ try { _executorOther.shutdown(); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ try { _executorOther.awaitTermination(1000, TimeUnit.MILLISECONDS); } catch (Throwable t) { _log.log(Level.WARNING, "", t); }
+ _executorOther.shutdownNow();
}
@@ -115,181 +170,288 @@
pkt.run();
return;
case PR_HIGH:
- _instance._executorHighPriority.execute(pkt);
+ _instance._executorHigh.execute(pkt);
return;
case PR_MEDIUM:
- _instance._executorMedPriority.execute(pkt);
+ _instance._executorMed.execute(pkt);
return;
case PR_LOW:
+ _instance._executorLow.execute(pkt);
+ return;
default:
- _instance._executorLowPriority.execute(pkt);
+ _instance._executorOther.execute(pkt);
return;
}
}
-
- /**
- * Create a task that is executed after an initial time (in ms) and each delay ms and define its priority.<BR><BR>
- *
- * <B><U> Example of use </U> :</B><BR><BR>
- * <li> Cubic Task</li><BR><BR>
- *
- * @param r The task to launch
- * @param TaskPriority The priority of the task
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleAtFixedRate(Runnable r, TaskPriority pr, long initial, long delay)
{
switch (pr)
{
case PR_HIGH: return scheduleHighAtFixedRate(r, initial, delay);
case PR_MEDIUM: return scheduleMedAtFixedRate(r, initial, delay);
- default:
case PR_LOW: return scheduleLowAtFixedRate(r, initial, delay);
+ default: return scheduleOtherAtFixedRate(r, initial, delay);
+
}
}
-
- /**
- * Create a High priority task that is executed after an initial time (in ms) and each delay ms.<BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleHighAtFixedRate(Runnable r, long initial, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorHighPriority.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ return _executorHigh.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
-
-
- /**
- * Create a Medium priority task that is executed after an initial time (in ms) and each delay ms.<BR><BR>
- *
- * <B><U> Example of use </U> :</B><BR><BR>
- * <li> MP/HP Regeneration Task</li>
- * <li> Auto SoulShot</li><BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleMedAtFixedRate(Runnable r, long initial, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorMedPriority.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ return _executorMed.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
-
-
- /**
- * Create a Low priority task that is executed after an initial time (in ms) and each delay ms.<BR><BR>
- *
- * <B><U> Example of use </U> :</B><BR><BR>
- * <li> AI change intention</li>
- * <li> Game time controller</li>
- * <li> MP/HP Regeneration Task</li>
- * <li> Effect Task</li>
- * <li> Monster race</li><BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleLowAtFixedRate(Runnable r, long initial, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorLowPriority.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ return _executorLow.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
-
- /**
- * Create a task that is executed after an initial time (in ms) and define its priority.<BR><BR>
- *
- * @param r The task to launch
- * @param TaskPriority The priority of the task
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- *
- */
+ public ScheduledFuture scheduleSystemAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSystem.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleTaskAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorTask.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSpawnAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSpawn.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture schedulePotionAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorPotion.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleEffectAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorEffect.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleAiAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorAi.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSiegeAiAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSiegeAi.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSiegeAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSiege.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleActorAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorActor.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleCraftAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorCraft.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleQuestAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorQuest.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleOtherAtFixedRate(Runnable r, long initial, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorOther.scheduleAtFixedRate(r, initial, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+
public ScheduledFuture schedule(Runnable r, TaskPriority pr, long delay)
{
switch (pr)
{
case PR_HIGH: return scheduleHigh(r, delay);
case PR_MEDIUM: return scheduleMed(r, delay);
- default:
case PR_LOW: return scheduleLow(r, delay);
+ default: return scheduleOther(r, delay);
}
}
-
- /**
- * Create a High priority task that is executed after an initial time (in ms).<BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleHigh(Runnable r, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorHighPriority.schedule(r, delay, TimeUnit.MILLISECONDS);
+ return _executorHigh.schedule(r, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
-
-
- /**
- * Create a Medium priority task that is executed after an initial time (in ms).<BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleMed(Runnable r, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorMedPriority.schedule(r, delay, TimeUnit.MILLISECONDS);
+ return _executorMed.schedule(r, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
-
- /**
- * Create a Low priority task that is executed after an initial time (in ms).<BR><BR>
- *
- * @param r The task to launch
- * @param initial The initial delay (in ms) after what the task is executed for the first time
- * @param delay The delay (in ms) between 2 consecutive executions of the task
- *
- */
public ScheduledFuture scheduleLow(Runnable r, long delay)
{
try
{
if (delay < 0) delay = 0;
- return _executorLowPriority.schedule(r, delay, TimeUnit.MILLISECONDS);
+ return _executorLow.schedule(r, delay, TimeUnit.MILLISECONDS);
} catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
}
+ public ScheduledFuture scheduleSystem(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSystem.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleTask(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorTask.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSpawn(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSpawn.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture schedulePotion(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorPotion.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleEffect(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorEffect.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleAi(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorAi.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSiegeAi(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSiegeAi.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleSiege(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorSiege.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleActor(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorActor.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleCraft(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorCraft.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleQuest(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorQuest.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+ public ScheduledFuture scheduleOther(Runnable r, long delay)
+ {
+ try
+ {
+ if (delay < 0) delay = 0;
+ return _executorOther.schedule(r, delay, TimeUnit.MILLISECONDS);
+ } catch (RejectedExecutionException e) { return null; /* shutdown, ignore */ }
+ }
+
class ThrFactory implements ThreadFactory
{
private final String _prefix;
@@ -316,32 +478,104 @@
{
return new String[] {
"HIGH ("+Config.EXECUTOR_PRI_HIGH+")",
- "ActiveThreads: "+_executorHighPriority.getActiveCount(),
- "CompletedTasks: "+_executorHighPriority.getCompletedTaskCount(),
- "getCorePoolSize: "+_executorHighPriority.getCorePoolSize(),
- "MaximumPoolSize: "+_executorHighPriority.getMaximumPoolSize(),
- "LargestPoolSize: "+_executorHighPriority.getLargestPoolSize(),
- "PoolSize: "+_executorHighPriority.getPoolSize(),
- "ScheduledTasks: "+(_executorHighPriority.getTaskCount() - _executorHighPriority.getCompletedTaskCount()),
+ "ActiveThreads: "+_executorHigh.getActiveCount(),
+ "CompletedTasks: "+_executorHigh.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorHigh.getCorePoolSize(),
+ "PoolSize: "+_executorHigh.getPoolSize(),
+ "ScheduledTasks: "+(_executorHigh.getTaskCount() - _executorHigh.getCompletedTaskCount()),
"MEDIUM ("+Config.EXECUTOR_PRI_MED+")",
- "ActiveThreads: "+_executorMedPriority.getActiveCount(),
- "CompletedTasks: "+_executorMedPriority.getCompletedTaskCount(),
- "getCorePoolSize: "+_executorMedPriority.getCorePoolSize(),
- "MaximumPoolSize: "+_executorMedPriority.getMaximumPoolSize(),
- "LargestPoolSize: "+_executorMedPriority.getLargestPoolSize(),
- "PoolSize: "+_executorMedPriority.getPoolSize(),
- "ScheduledTasks: "+(_executorMedPriority.getTaskCount() - _executorMedPriority.getCompletedTaskCount()),
+ "ActiveThreads: "+_executorMed.getActiveCount(),
+ "CompletedTasks: "+_executorMed.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorMed.getCorePoolSize(),
+ "PoolSize: "+_executorMed.getPoolSize(),
+ "ScheduledTasks: "+(_executorMed.getTaskCount() - _executorMed.getCompletedTaskCount()),
"LOW ("+Config.EXECUTOR_PRI_LOW+")",
- "ActiveThreads: "+_executorLowPriority.getActiveCount(),
- "CompletedTasks: "+_executorLowPriority.getCompletedTaskCount(),
- "getCorePoolSize: "+_executorLowPriority.getCorePoolSize(),
- "MaximumPoolSize: "+_executorLowPriority.getMaximumPoolSize(),
- "LargestPoolSize: "+_executorLowPriority.getLargestPoolSize(),
- "PoolSize: "+_executorLowPriority.getPoolSize(),
- "ScheduledTasks: "+(_executorLowPriority.getTaskCount() - _executorLowPriority.getCompletedTaskCount())
+ "ActiveThreads: "+_executorLow.getActiveCount(),
+ "CompletedTasks: "+_executorLow.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorLow.getCorePoolSize(),
+ "PoolSize: "+_executorLow.getPoolSize(),
+ "ScheduledTasks: "+(_executorLow.getTaskCount() - _executorLow.getCompletedTaskCount())
};
}
+ public String[] getExtendedStats()
+ {
+ return new String[] {
+ "SYSTEM ("+Config.EXECUTOR_PRI_SYSTEM+")",
+ "ActiveThreads: "+_executorSystem.getActiveCount(),
+ "CompletedTasks: "+_executorSystem.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorSystem.getCorePoolSize(),
+ "PoolSize: "+_executorSystem.getPoolSize(),
+ "ScheduledTasks: "+(_executorSystem.getTaskCount() - _executorSystem.getCompletedTaskCount()),
+ "TASK ("+Config.EXECUTOR_PRI_TASK+")",
+ "ActiveThreads: "+_executorTask.getActiveCount(),
+ "CompletedTasks: "+_executorTask.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorTask.getCorePoolSize(),
+ "PoolSize: "+_executorTask.getPoolSize(),
+ "ScheduledTasks: "+(_executorTask.getTaskCount() - _executorTask.getCompletedTaskCount()),
+ "SPAWN ("+Config.EXECUTOR_PRI_SPAWN+")",
+ "ActiveThreads: "+_executorSpawn.getActiveCount(),
+ "CompletedTasks: "+_executorSpawn.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorSpawn.getCorePoolSize(),
+ "PoolSize: "+_executorSpawn.getPoolSize(),
+ "ScheduledTasks: "+(_executorSpawn.getTaskCount() - _executorSpawn.getCompletedTaskCount()),
+ "POTION ("+Config.EXECUTOR_PRI_POTION+")",
+ "ActiveThreads: "+_executorPotion.getActiveCount(),
+ "CompletedTasks: "+_executorPotion.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorPotion.getCorePoolSize(),
+ "PoolSize: "+_executorPotion.getPoolSize(),
+ "ScheduledTasks: "+(_executorPotion.getTaskCount() - _executorPotion.getCompletedTaskCount()),
+ "EFFECT ("+Config.EXECUTOR_PRI_EFFECT+")",
+ "ActiveThreads: "+_executorEffect.getActiveCount(),
+ "CompletedTasks: "+_executorEffect.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorEffect.getCorePoolSize(),
+ "PoolSize: "+_executorEffect.getPoolSize(),
+ "ScheduledTasks: "+(_executorEffect.getTaskCount() - _executorEffect.getCompletedTaskCount()),
+ "AI ("+Config.EXECUTOR_PRI_AI+")",
+ "ActiveThreads: "+_executorAi.getActiveCount(),
+ "CompletedTasks: "+_executorAi.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorAi.getCorePoolSize(),
+ "PoolSize: "+_executorAi.getPoolSize(),
+ "ScheduledTasks: "+(_executorAi.getTaskCount() - _executorAi.getCompletedTaskCount()),
+ "SIEGEAI ("+Config.EXECUTOR_PRI_SIEGEAI+")",
+ "ActiveThreads: "+_executorSiegeAi.getActiveCount(),
+ "CompletedTasks: "+_executorSiegeAi.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorSiegeAi.getCorePoolSize(),
+ "PoolSize: "+_executorSiegeAi.getPoolSize(),
+ "ScheduledTasks: "+(_executorSiegeAi.getTaskCount() - _executorSiegeAi.getCompletedTaskCount()),
+ "SIEGE ("+Config.EXECUTOR_PRI_SIEGE+")",
+ "ActiveThreads: "+_executorSiege.getActiveCount(),
+ "CompletedTasks: "+_executorSiege.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorSiege.getCorePoolSize(),
+ "PoolSize: "+_executorSiege.getPoolSize(),
+ "ScheduledTasks: "+(_executorSiege.getTaskCount() - _executorSiege.getCompletedTaskCount()),
+ "ACTOR ("+Config.EXECUTOR_PRI_ACTOR+")",
+ "ActiveThreads: "+_executorActor.getActiveCount(),
+ "CompletedTasks: "+_executorActor.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorActor.getCorePoolSize(),
+ "PoolSize: "+_executorActor.getPoolSize(),
+ "ScheduledTasks: "+(_executorActor.getTaskCount() - _executorActor.getCompletedTaskCount()),
+ "CRAFT ("+Config.EXECUTOR_PRI_CRAFT+")",
+ "ActiveThreads: "+_executorCraft.getActiveCount(),
+ "CompletedTasks: "+_executorCraft.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorCraft.getCorePoolSize(),
+ "PoolSize: "+_executorCraft.getPoolSize(),
+ "ScheduledTasks: "+(_executorCraft.getTaskCount() - _executorCraft.getCompletedTaskCount()),
+ "QUEST ("+Config.EXECUTOR_PRI_QUEST+")",
+ "ActiveThreads: "+_executorQuest.getActiveCount(),
+ "CompletedTasks: "+_executorQuest.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorQuest.getCorePoolSize(),
+ "PoolSize: "+_executorQuest.getPoolSize(),
+ "ScheduledTasks: "+(_executorQuest.getTaskCount() - _executorQuest.getCompletedTaskCount()),
+ "OTHER ("+Config.EXECUTOR_PRI_OTHER+")",
+ "ActiveThreads: "+_executorOther.getActiveCount(),
+ "CompletedTasks: "+_executorOther.getCompletedTaskCount(),
+ "getCorePoolSize: "+_executorOther.getCorePoolSize(),
+ "PoolSize: "+_executorOther.getPoolSize(),
+ "ScheduledTasks: "+(_executorOther.getTaskCount() - _executorOther.getCompletedTaskCount())
+ };
+ }
+
public static ScheduledFuture scheduleEvent(Runnable event, long delay)
{
Index: java/net/sf/l2j/gameserver/ClientThread.java
===================================================================
--- java/net/sf/l2j/gameserver/ClientThread.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ClientThread.java (working copy)
@@ -95,7 +95,7 @@
{
_sessionId = 0x12345678;
_connection = new Connection(this, socket, _cryptkey);
- _autoSaveInDB = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ _autoSaveInDB = ClientScheduler.getInstance().scheduleOtherAtFixedRate(
new AutoSaveTask(), 5*60*1000L, 15*60*1000L
);
}
Index: java/net/sf/l2j/gameserver/Connection.java
===================================================================
--- java/net/sf/l2j/gameserver/Connection.java (revision 1580)
+++ java/net/sf/l2j/gameserver/Connection.java (working copy)
@@ -90,16 +90,8 @@
public synchronized void addReceivedMsg(ByteBuffer buf) {
if (Config.ASSERT) assert Thread.currentThread() == SelectorThread.instance;
ClientBasePacket pkt = PacketHandler.handlePacket(buf, _client);
- if (pkt != null) {
- if (pkt.getPriority() == TaskPriority.PR_URGENT)
- {
- pkt.run();
- }
- else
- {
+ if (pkt != null)
ClientScheduler.addReceivedMsg(pkt);
- }
- }
}
/** Get next message, received received by NIO's thread, if any.
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java (revision 1580)
+++ java/net/sf/l2j/gameserver/GameServer.java (working copy)
@@ -204,7 +204,7 @@
throw new Exception("Could not initialize the ID factory");
}
- ClientScheduler.getInstance();
+ ClientScheduler.getInstance(); // we don't need singleton in this case but still would be nice to keep
new File(Config.DATAPACK_ROOT, "data/clans").mkdirs();
new File(Config.DATAPACK_ROOT, "data/crests").mkdirs();
Index: java/net/sf/l2j/gameserver/GameTimeController.java
===================================================================
--- java/net/sf/l2j/gameserver/GameTimeController.java (revision 1580)
+++ java/net/sf/l2j/gameserver/GameTimeController.java (working copy)
@@ -72,9 +72,9 @@
_timer = new TimerThread();
_timer.start();
- ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ ClientScheduler.getInstance().scheduleOtherAtFixedRate(
new TimerWatcher(), 0, 1000);
- ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ ClientScheduler.getInstance().scheduleOtherAtFixedRate(
new BroadcastSunState(), 0, 60*60*1000
);
}
@@ -151,7 +151,7 @@
// Create a task to update the _knownObject and _knowPlayers of each L2Character that finished its movement and of their already known L2Object
// then notify AI with EVT_ARRIVED
if (ended != null)
- ClientScheduler.getInstance().scheduleLow(new MovingObjectArrived(ended), 10);
+ ClientScheduler.getInstance().scheduleOther(new MovingObjectArrived(ended), 10);
}
@@ -201,7 +201,7 @@
if (!_timer.isAlive())
{
String time = (new SimpleDateFormat("HH:mm:ss")).format(new Date());
- _log.warning(time+" TimerThread stop with following error. restart it.");
+ _log.warning(time+" TimerThread stop with following error. restarting it.");
if (_timer._error != null)
_timer._error.printStackTrace();
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java (revision 1582)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminMonsterRace.java (working copy)
@@ -114,7 +114,7 @@
activeChar.sendPacket(spk);
activeChar.broadcastPacket(spk);
- ClientScheduler.getInstance().scheduleMed(new RunRace(codes, activeChar), 5000);
+ ClientScheduler.getInstance().scheduleOther(new RunRace(codes, activeChar), 5000);
}
}
@@ -151,7 +151,7 @@
MonRaceInfo spk = new MonRaceInfo(codes[2][0], codes[2][1], MonsterRace.getInstance().getMonsters(), MonsterRace.getInstance().getSpeeds());
activeChar.sendPacket(spk);
activeChar.broadcastPacket(spk);
- ClientScheduler.getInstance().scheduleMed(new RunEnd(activeChar), 30000);
+ ClientScheduler.getInstance().scheduleOther(new RunEnd(activeChar), 30000);
}
}
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java (revision 1582)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminTest.java (working copy)
@@ -70,10 +70,23 @@
if (command.equals("admin_stats"))
{
- for (String line : ClientScheduler.getInstance().getStats())
+
+ activeChar.sendMessage("Stats:");
+ activeChar.sendMessage("");
+ for (String line : ClientScheduler.getInstance().getStats())
{
activeChar.sendMessage(line);
}
+
+ activeChar.sendMessage("");
+ activeChar.sendMessage("Extended stats:");
+ activeChar.sendMessage("");
+
+ for (String line : ClientScheduler.getInstance().getExtendedStats())
+ {
+ activeChar.sendMessage(line);
+ }
+
}
else if (command.startsWith("admin_skill_test") || command.startsWith("admin_st"))
{
Index: java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/itemhandlers/MysteryPotion.java (working copy)
@@ -59,7 +59,7 @@
activeChar.sendPacket(sm);
MysteryPotionStop mp = new MysteryPotionStop(playable);
- ClientScheduler.getInstance().scheduleLow(mp, _effectDuration);
+ ClientScheduler.getInstance().schedulePotion(mp, _effectDuration);
}
public class MysteryPotionStop implements Runnable
Index: java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/itemhandlers/PetSummon.java (working copy)
@@ -158,7 +158,7 @@
newpet.startFeed();
// continue execution in 1 seconds
- ClientScheduler.getInstance().scheduleLow(new SummonFinalizer(activeChar, newpet), 900);
+ ClientScheduler.getInstance().scheduleOther(new SummonFinalizer(activeChar, newpet), 900);
}
static class SummonFinalizer implements Runnable
Index: java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfEscape.java (working copy)
@@ -86,7 +86,7 @@
activeChar.removeItemFromInventory(item, 1);
EscapeFinalizer ef = new EscapeFinalizer(activeChar, item.getItemId());
// continue execution later
- activeChar.setSkillCast(ClientScheduler.getInstance().scheduleLow(ef, skill.getSkillTime()));
+ activeChar.setSkillCast(ClientScheduler.getInstance().scheduleEffect(ef, skill.getSkillTime()));
activeChar.setSkillCastEndTime(10+GameTimeController.getGameTicks()+skill.getSkillTime()/GameTimeController.MILLIS_IN_TICK);
}
Index: java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/itemhandlers/ScrollOfResurrection.java (working copy)
@@ -139,7 +139,7 @@
activeChar.removeItemFromInventory(item, 1);
//ResurrectFinalizer rf = new ResurrectFinalizer(target);
// continue execution later
- //ClientScheduler.getInstance().scheduleLow(rf, skill.getSkillTime() - 200);
+ //ClientScheduler.getInstance().scheduleSkill(rf, skill.getSkillTime() - 200);
}
}
}
Index: java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/itemhandlers/SoulCrystals.java (working copy)
@@ -85,7 +85,7 @@
// Continue execution later
CrystalFinalizer cf = new CrystalFinalizer(activeChar, target, crystalId);
- ClientScheduler.getInstance().scheduleLow(cf, skill.getSkillTime());
+ ClientScheduler.getInstance().scheduleEffect(cf, skill.getSkillTime());
}
Index: java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (revision 1580)
+++ java/net/sf/l2j/gameserver/handler/usercommandhandlers/Escape.java (working copy)
@@ -64,7 +64,7 @@
EscapeFinalizer ef = new EscapeFinalizer(activeChar);
// continue execution later
- ClientScheduler.getInstance().scheduleLow(ef, unstuckTimer);
+ ClientScheduler.getInstance().scheduleOther(ef, unstuckTimer);
return true;
}
Index: java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java
===================================================================
--- java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java (revision 1580)
+++ java/net/sf/l2j/gameserver/idfactory/BitSetIDFactory.java (working copy)
@@ -69,7 +69,7 @@
protected BitSetIDFactory()
{
super();
- ClientScheduler.getInstance().scheduleAtFixedRate(new BitSetCapacityCheck(), TaskPriority.PR_LOW, 30000, 30000);
+ ClientScheduler.getInstance().scheduleSystemAtFixedRate(new BitSetCapacityCheck(), 30000, 30000);
initialize();
_log.info("IDFactory: "+ freeIds.size() + " id's avaliable.");
}
Index: java/net/sf/l2j/gameserver/ItemsAutoDestroy.java
===================================================================
--- java/net/sf/l2j/gameserver/ItemsAutoDestroy.java (revision 1580)
+++ java/net/sf/l2j/gameserver/ItemsAutoDestroy.java (working copy)
@@ -38,7 +38,7 @@
_sleep = Config.AUTODESTROY_ITEM_AFTER * 1000;
if(_sleep == 0) // it should not happend as it is not called when AUTODESTROY_ITEM_AFTER = 0 but we never know..
_sleep = 3600 * 1000;
- ClientScheduler.getInstance().scheduleMedAtFixedRate(new CheckItemsForDestroy(),_sleep,_sleep);
+ ClientScheduler.getInstance().scheduleOtherAtFixedRate(new CheckItemsForDestroy(),_sleep,_sleep);
}
public static ItemsAutoDestroy getInstance()
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2BoatInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2BoatInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2BoatInstance.java (working copy)
@@ -321,17 +321,17 @@
case 1:
_boat.say(5);
bc = new BoatCaptain(2,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, 240000);
+ ClientScheduler.getInstance().scheduleActor(bc, 240000);
break;
case 2:
_boat.say(1);
bc = new BoatCaptain(3,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, 40000);
+ ClientScheduler.getInstance().scheduleActor(bc, 40000);
break;
case 3:
_boat.say(0);
bc = new BoatCaptain(4,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, 20000);
+ ClientScheduler.getInstance().scheduleActor(bc, 20000);
break;
case 4:
_boat.say(-1);
@@ -365,7 +365,7 @@
{
_state++;
Boatrun bc = new Boatrun(_state,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, time);
+ ClientScheduler.getInstance().scheduleActor(bc, time);
}
else if(time == 0)
@@ -373,7 +373,7 @@
_boat._cycle = 2;
_boat.say(10);
BoatCaptain bc = new BoatCaptain(1,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, 300000);
+ ClientScheduler.getInstance().scheduleActor(bc, 300000);
}
else
{
@@ -389,14 +389,14 @@
{
_state++;
Boatrun bc = new Boatrun(_state,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, time);
+ ClientScheduler.getInstance().scheduleActor(bc, time);
}
else if(time == 0)
{
_boat._cycle = 1;
_boat.say(10);
BoatCaptain bc = new BoatCaptain(1,_boat);
- ClientScheduler.getInstance().scheduleLow(bc, 300000);
+ ClientScheduler.getInstance().scheduleActor(bc, 300000);
}
else
{
@@ -422,7 +422,7 @@
{
//_runstate++;
Boatrun bc = new Boatrun(_runstate,this);
- ClientScheduler.getInstance().scheduleLow(bc, 10);
+ ClientScheduler.getInstance().scheduleActor(bc, 10);
_runstate = 0;
}
}
@@ -444,7 +444,7 @@
{
say(10);
BoatCaptain bc = new BoatCaptain(1,this);
- ClientScheduler.getInstance().scheduleLow(bc, 300000);
+ ClientScheduler.getInstance().scheduleActor(bc, 300000);
}
/**
* @param destination
@@ -532,7 +532,7 @@
}
}
Boatrun bc = new Boatrun(0,this);
- ClientScheduler.getInstance().scheduleLow(bc, 0);
+ ClientScheduler.getInstance().scheduleActor(bc, 0);
}
else if(_cycle == 2)
{
@@ -568,7 +568,7 @@
}
Boatrun bc = new Boatrun(0,this);
- ClientScheduler.getInstance().scheduleLow(bc, 0);
+ ClientScheduler.getInstance().scheduleActor(bc, 0);
}
}
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2CabaleBufferInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2CabaleBufferInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2CabaleBufferInstance.java (working copy)
@@ -119,7 +119,7 @@
public L2CabaleBufferInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(new CabalaAI(this), 3000, 3000);
+ aiTask = ClientScheduler.getInstance().scheduleActorAtFixedRate(new CabalaAI(this), 3000, 3000);
}
public void deleteMe()
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2CubicInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2CubicInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2CubicInstance.java (working copy)
@@ -65,7 +65,7 @@
_owner = owner;
_id = id;
_level = level;
- _disappearTask = ClientScheduler.getInstance().scheduleLow(new Disappear(), 1200000); // disappear in 20 mins
+ _disappearTask = ClientScheduler.getInstance().scheduleActor(new Disappear(), 1200000); // disappear in 20 mins
switch(_id)
{
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2DoorInstance.java (working copy)
@@ -210,7 +210,7 @@
if (actionDelay > -1) {
AutoOpenClose ao = new AutoOpenClose();
- ClientScheduler.getInstance().scheduleLowAtFixedRate(ao, actionDelay, actionDelay);
+ ClientScheduler.getInstance().scheduleActorAtFixedRate(ao, actionDelay, actionDelay);
}
else {
if (_autoActionTask != null)
@@ -417,7 +417,7 @@
public void onOpen()
{
- ClientScheduler.getInstance().scheduleLow(new CloseTask(), 60000);
+ ClientScheduler.getInstance().scheduleActor(new CloseTask(), 60000);
}
public void onClose()
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2GuardInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2GuardInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2GuardInstance.java (working copy)
@@ -75,7 +75,7 @@
super.setKnownList(new GuardKnownList(new L2GuardInstance[] {this}));
Random rnd = new Random();
- ClientScheduler.getInstance().scheduleLowAtFixedRate(new ReturnTask(),RETURN_INTERVAL,RETURN_INTERVAL+rnd.nextInt(60000));
+ ClientScheduler.getInstance().scheduleActorAtFixedRate(new ReturnTask(),RETURN_INTERVAL,RETURN_INTERVAL+rnd.nextInt(60000));
}
public final GuardKnownList getKnownList() { return (GuardKnownList)super.getKnownList(); }
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2MerchantInstance.java (working copy)
@@ -152,7 +152,7 @@
while (c.compareTo(Calendar.getInstance()) <= 0)
c.add(Calendar.DATE, 7);
swapLeaseHolderTime = c.getTime();
- swapLeaseHolderTask = ClientScheduler.getInstance().scheduleLow(this,
+ swapLeaseHolderTask = ClientScheduler.getInstance().scheduleActor(this,
100 + _rnd.nextInt(300000) + swapLeaseHolderTime.getTime() - System.currentTimeMillis());
}
@@ -626,7 +626,7 @@
c.setTime(swapLeaseHolderTime);
c.add(Calendar.DATE, 7);
swapLeaseHolderTime.setTime(c.getTime().getTime());
- swapLeaseHolderTask = ClientScheduler.getInstance().scheduleLow(this,
+ swapLeaseHolderTask = ClientScheduler.getInstance().scheduleActor(this,
100 + _rnd.nextInt(300000) + swapLeaseHolderTime.getTime() - System.currentTimeMillis());
final int oldHolderId = leaseHolderId;
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2NpcInstance.java (working copy)
@@ -796,7 +796,7 @@
if(rnd.nextInt(100)<chance) {
- ClientScheduler.getInstance().scheduleLow(new destroyTemporalSummon(summon, player), 6000);
+ ClientScheduler.getInstance().scheduleActor(new destroyTemporalSummon(summon, player), 6000);
L2ItemInstance createditem = ItemTable.getInstance().createItem(exchangeItem);
player.getInventory().addItem(createditem);
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
@@ -812,7 +812,7 @@
summon.reduceCurrentHp(summon.getCurrentHp(), player);
}
- ClientScheduler.getInstance().scheduleLow(new destroyTemporalNPC(spawn), 15000);
+ ClientScheduler.getInstance().scheduleActor(new destroyTemporalNPC(spawn), 15000);
ItemList il = new ItemList(player, true);
player.sendPacket(il);
@@ -882,7 +882,7 @@
if(rnd.nextInt(100)<chance) {
- ClientScheduler.getInstance().scheduleLow(new destroyTemporalSummon(summon, player), 6000);
+ ClientScheduler.getInstance().scheduleActor(new destroyTemporalSummon(summon, player), 6000);
L2ItemInstance createditem = ItemTable.getInstance().createItem(exchangeItem);
player.getInventory().addItem(createditem);
NpcHtmlMessage adminReply = new NpcHtmlMessage(5);
@@ -899,7 +899,7 @@
}
- ClientScheduler.getInstance().scheduleLow(new destroyTemporalNPC(spawn), 15000);
+ ClientScheduler.getInstance().scheduleActor(new destroyTemporalNPC(spawn), 15000);
ItemList il = new ItemList(player, true);
player.sendPacket(il);
} catch(Exception e) {e.printStackTrace();}
@@ -1024,7 +1024,7 @@
int interval = (Rnd.nextInt(maxWait - minWait) + minWait) * 1000;
// Create a RandomAnimation Task that will be launched after the calculated delay
- ClientScheduler.getInstance().scheduleLow(new RandomAnimationTask(), interval);
+ ClientScheduler.getInstance().scheduleActor(new RandomAnimationTask(), interval);
}
/**
@@ -1821,7 +1821,7 @@
public void doDie(L2Character killer)
{
// Create a DecayTask to remove the corpse of the L2NpcInstance after 8.5 seconds
- //_decayTask = ClientScheduler.getInstance().scheduleLow(new DecayTask(), 8500);
+ //_decayTask = ClientScheduler.getInstance().scheduleActor(new DecayTask(), 8500);
//SpawnTable.getInstance().addDecayTask(this);
DecayTaskManager.getInstance().addDecayTask(this);
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
@@ -6209,7 +6209,7 @@
public void startWarnUserTakeBreak()
{
if (_taskWarnUserTakeBreak == null)
- _taskWarnUserTakeBreak = ClientScheduler.getInstance().scheduleLowAtFixedRate(new WarnUserTakeBreak(), 7200000, 7200000);
+ _taskWarnUserTakeBreak = ClientScheduler.getInstance().scheduleActorAtFixedRate(new WarnUserTakeBreak(), 7200000, 7200000);
}
public void stopRentPet()
{
@@ -6229,7 +6229,7 @@
public void startRentPet(int seconds)
{
if (_taskRentPet == null)
- _taskRentPet = ClientScheduler.getInstance().scheduleLowAtFixedRate(new RentPetTask(), seconds * 1000, seconds * 1000);
+ _taskRentPet = ClientScheduler.getInstance().scheduleActorAtFixedRate(new RentPetTask(), seconds * 1000, seconds * 1000);
}
public boolean isRentedPet()
{
@@ -6252,7 +6252,7 @@
{
int timeinwater = 86;
sendPacket(new SetupGauge(2, timeinwater * 1000));
- _taskWater = ClientScheduler.getInstance().scheduleLowAtFixedRate(new WaterTask(), timeinwater * 1000, 1000);
+ _taskWater = ClientScheduler.getInstance().scheduleActorAtFixedRate(new WaterTask(), timeinwater * 1000, 1000);
}
}
public boolean isInWater()
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2RaceManagerInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2RaceManagerInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2RaceManagerInstance.java (working copy)
@@ -78,26 +78,26 @@
managers = new FastList<L2RaceManagerInstance>();
ClientScheduler s = ClientScheduler.getInstance();
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_AVAILABLE_FOR_S1_RACE), 0, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_NOW_AVAILABLE_FOR_S1_RACE), 30 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_AVAILABLE_FOR_S1_RACE), MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_NOW_AVAILABLE_FOR_S1_RACE), MINUTE + 30 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 2 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 3 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 4 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 5 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 6 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKET_SALES_CLOSED), 7 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_MINUTES), 7 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_MINUTES), 8 * MINUTE, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_30_SECONDS), 8 * MINUTE + 30 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_COUNTDOWN_IN_FIVE_SECONDS), 8 * MINUTE + 50 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 55 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 56 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 57 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 58 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 59 * SECOND, 10 * MINUTE);
- s.scheduleLowAtFixedRate(new Announcement(SystemMessage.MONSRACE_RACE_START), 9 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_AVAILABLE_FOR_S1_RACE), 0, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_NOW_AVAILABLE_FOR_S1_RACE), 30 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_AVAILABLE_FOR_S1_RACE), MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_NOW_AVAILABLE_FOR_S1_RACE), MINUTE + 30 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 2 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 3 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 4 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 5 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKETS_STOP_IN_S1_MINUTES), 6 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_TICKET_SALES_CLOSED), 7 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_MINUTES), 7 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_MINUTES), 8 * MINUTE, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_30_SECONDS), 8 * MINUTE + 30 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_COUNTDOWN_IN_FIVE_SECONDS), 8 * MINUTE + 50 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 55 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 56 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 57 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 58 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_BEGINS_IN_S1_SECONDS), 8 * MINUTE + 59 * SECOND, 10 * MINUTE);
+ s.scheduleActorAtFixedRate(new Announcement(SystemMessage.MONSRACE_RACE_START), 9 * MINUTE, 10 * MINUTE);
//*/
}
managers.add(this);
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2SummonInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2SummonInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2SummonInstance.java (working copy)
@@ -39,7 +39,7 @@
{
super(objectId, template, owner);
setShowSummonAnimation(true);
- _disappearTask = ClientScheduler.getInstance().scheduleLow(new Disappear(getOwner(), this), 1200000); // disappear in 20 mins
+ _disappearTask = ClientScheduler.getInstance().scheduleActor(new Disappear(getOwner(), this), 1200000); // disappear in 20 mins
}
public final int getLevel() {
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2XmassTreeInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2XmassTreeInstance.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2XmassTreeInstance.java (working copy)
@@ -62,7 +62,7 @@
public L2XmassTreeInstance(int objectId, L2NpcTemplate template)
{
super(objectId, template);
- aiTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(new XmassAI(this), 3000, 3000);
+ aiTask = ClientScheduler.getInstance().scheduleActorAtFixedRate(new XmassAI(this), 3000, 3000);
}
public void deleteMe()
Index: java/net/sf/l2j/gameserver/model/AutoChatHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/model/AutoChatHandler.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/AutoChatHandler.java (working copy)
@@ -483,7 +483,7 @@
if (isActive()) {
AutoChatRunner acr = new AutoChatRunner(_npcId, -1);
- _chatTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(acr, _defaultDelay, _defaultDelay);
+ _chatTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(acr, _defaultDelay, _defaultDelay);
}
else {
_chatTask.cancel(false);
@@ -585,7 +585,7 @@
if (activeValue) {
AutoChatRunner acr = new AutoChatRunner(_npcId, _npcInstance.getObjectId());
- _chatTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(acr, getChatDelay(), getChatDelay());
+ _chatTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(acr, getChatDelay(), getChatDelay());
}
else {
_chatTask.cancel(false);
Index: java/net/sf/l2j/gameserver/model/AutoSpawnHandler.java
===================================================================
--- java/net/sf/l2j/gameserver/model/AutoSpawnHandler.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/AutoSpawnHandler.java (working copy)
@@ -255,7 +255,7 @@
if (isActive) {
AutoSpawner rs = new AutoSpawner(objectId);
- spawnTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay);
+ spawnTask = ClientScheduler.getInstance().scheduleSpawnAtFixedRate(rs, spawnInst._initDelay, spawnInst._resDelay);
_runningSpawns.put(objectId, spawnTask);
}
else {
@@ -448,7 +448,7 @@
// If there is no despawn time, do not create a despawn task.
if (spawnInst.getDespawnDelay() > 0) {
AutoDespawner rd = new AutoDespawner(_objectId);
- ClientScheduler.getInstance().scheduleLow(rd, spawnInst.getDespawnDelay()-1000);
+ ClientScheduler.getInstance().scheduleSpawn(rd, spawnInst.getDespawnDelay()-1000);
}
}
catch (Exception e) {
Index: java/net/sf/l2j/gameserver/model/entity/Castle.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/Castle.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/entity/Castle.java (working copy)
@@ -214,7 +214,7 @@
clan.setHasCastle(getCastleId()); // Set has castle flag for new owner
new Announcements().announceToAll(clan.getName() + " has taken " + getName() + " castle!");
updateOwnerInDB(clan); // Update in database
- ClientScheduler.getInstance().scheduleLow(new CastleUpdater(clan, 1), 3600000); // Schedule owner tasks to start running
+ ClientScheduler.getInstance().scheduleSiege(new CastleUpdater(clan, 1), 3600000); // Schedule owner tasks to start running
if (getSiege().getIsInProgress()) // If siege in progress
getSiege().midVictory(); // Mid victory phase of siege
@@ -345,7 +345,7 @@
if (getOwnerId() > 0)
{
L2Clan clan = ClanTable.getInstance().getClan(getOwnerId()); // Try to find clan instance
- ClientScheduler.getInstance().scheduleLow(new CastleUpdater(clan, 1), 3600000); // Schedule owner tasks to start running
+ ClientScheduler.getInstance().scheduleSiege(new CastleUpdater(clan, 1), 3600000); // Schedule owner tasks to start running
}
statement.close();
Index: java/net/sf/l2j/gameserver/model/entity/Siege.java
===================================================================
--- java/net/sf/l2j/gameserver/model/entity/Siege.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/entity/Siege.java (working copy)
@@ -122,27 +122,27 @@
long timeRemaining = _SiegeEndDate.getTimeInMillis() - Calendar.getInstance().getTimeInMillis();
if (timeRemaining > 3600000)
{
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(_Castle), timeRemaining - 3600000); // Prepare task for 1 hr left.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(_Castle), timeRemaining - 3600000); // Prepare task for 1 hr left.
}
else if ((timeRemaining <= 3600000) && (timeRemaining > 600000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege conclusion.", true);
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(_Castle), timeRemaining - 600000); // Prepare task for 10 minute left.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(_Castle), timeRemaining - 600000); // Prepare task for 10 minute left.
}
else if ((timeRemaining <= 600000) && (timeRemaining > 300000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege conclusion.", true);
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(_Castle), timeRemaining - 300000); // Prepare task for 5 minute left.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(_Castle), timeRemaining - 300000); // Prepare task for 5 minute left.
}
else if ((timeRemaining <= 300000) && (timeRemaining > 10000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege conclusion.", true);
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(_Castle), timeRemaining - 10000); // Prepare task for 10 seconds count down
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(_Castle), timeRemaining - 10000); // Prepare task for 10 seconds count down
}
else if ((timeRemaining <= 10000) && (timeRemaining > 0))
{
announceToPlayer(getCastle().getName() + " siege " + Math.round(timeRemaining / 1000) + " second(s) left!", true);
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(_Castle), timeRemaining); // Prepare task for second count down
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(_Castle), timeRemaining); // Prepare task for second count down
}
else
{
@@ -173,34 +173,34 @@
long timeRemaining = getSiegeDate().getTimeInMillis() - Calendar.getInstance().getTimeInMillis();
if (timeRemaining > 86400000)
{
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining - 86400000); // Prepare task for 24 before siege start to end registration
}
else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000))
{
announceToPlayer("The registration term for " + getCastle().getName() + " has ended.", false);
_IsRegistrationOver = true;
clearSiegeWaitingClan();
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining - 13600000); // Prepare task for 1 hr left before siege start.
}
else if ((timeRemaining <= 13600000) && (timeRemaining > 600000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege begin.", false);
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining - 600000); // Prepare task for 10 minute left.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining - 600000); // Prepare task for 10 minute left.
}
else if ((timeRemaining <= 600000) && (timeRemaining > 300000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege begin.", false);
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining - 300000); // Prepare task for 5 minute left.
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining - 300000); // Prepare task for 5 minute left.
}
else if ((timeRemaining <= 300000) && (timeRemaining > 10000))
{
announceToPlayer(Math.round(timeRemaining / 60000) + " minute(s) until " + getCastle().getName() + " siege begin.", false);
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining - 10000); // Prepare task for 10 seconds count down
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining - 10000); // Prepare task for 10 seconds count down
}
else if ((timeRemaining <= 10000) && (timeRemaining > 0))
{
announceToPlayer(getCastle().getName() + " siege " + Math.round(timeRemaining / 1000) + " second(s) to start!", false);
- ClientScheduler.getInstance().scheduleLow(new ScheduleStartSiegeTask(_Castle), timeRemaining); // Prepare task for second count down
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleStartSiegeTask(_Castle), timeRemaining); // Prepare task for second count down
}
else
{
@@ -339,7 +339,7 @@
// Schedule a task to prepare auto siege end
_SiegeEndDate = Calendar.getInstance();
_SiegeEndDate.add(Calendar.MINUTE, SiegeManager.getInstance().getSiegeLength());
- ClientScheduler.getInstance().scheduleLow(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task
+ ClientScheduler.getInstance().scheduleSiege(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task
announceToPlayer("The siege of " + getCastle().getName() + " has started!", false);
}
@@ -649,7 +649,7 @@
_SiegeRegistrationEndDate.add(Calendar.DAY_OF_MONTH, -1);
// Schedule siege auto start
- ClientScheduler.getInstance().scheduleLow(new Siege.ScheduleStartSiegeTask(getCastle()), 1000);
+ ClientScheduler.getInstance().scheduleSiege(new Siege.ScheduleStartSiegeTask(getCastle()), 1000);
}
/**
Index: java/net/sf/l2j/gameserver/model/L2Character.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2Character.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/L2Character.java (working copy)
@@ -416,7 +416,7 @@
{
// If L2PcInstance doesn't have enough MP, stop the attack
- ClientScheduler.getInstance().scheduleMed(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
+ ClientScheduler.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
sendPacket(new SystemMessage(SystemMessage.NOT_ENOUGH_MP));
@@ -436,7 +436,7 @@
else
{
// Cancel the action because the bow can't be re-use at this moment
- ClientScheduler.getInstance().scheduleMed(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
+ ClientScheduler.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), 1000);
ActionFailed af = new ActionFailed();
sendPacket(af);
@@ -522,7 +522,7 @@
int reuse = weaponItem==null ? 0 : weaponItem.getAttackReuseDelay();
// Notify AI with EVT_READY_TO_ACT
- ClientScheduler.getInstance().scheduleMed(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), sAtk+reuse);
+ ClientScheduler.getInstance().scheduleAi(new NotifyAITask(CtrlEvent.EVT_READY_TO_ACT), sAtk+reuse);
}
/**
@@ -598,7 +598,7 @@
}
// Create a new hit task with Medium priority
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), sAtk);
+ ClientScheduler.getInstance().scheduleAi(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), sAtk);
// Calculate and set the disable delay of the bow in function of the Attack Speed
_disableBowAttackEndTime = (sAtk+reuse)/GameTimeController.MILLIS_IN_TICK + GameTimeController.getGameTicks();
@@ -670,10 +670,10 @@
}
// Create a new hit task with Medium priority for hit 1
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 650);
+ ClientScheduler.getInstance().scheduleAi(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 650);
// Create a new hit task with Medium priority for hit 2 with a higher delay
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage2, crit2, miss2, attack._soulshot, shld2), 1250);
+ ClientScheduler.getInstance().scheduleAi(new HitTask(target, damage2, crit2, miss2, attack._soulshot, shld2), 1250);
// Add those hits to the Server-Client packet Attack
attack.addHit(target, damage1, miss1, crit1, shld1);
@@ -830,7 +830,7 @@
}
// Create a new hit task with Medium priority
- ClientScheduler.getInstance().scheduleMed(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 980);
+ ClientScheduler.getInstance().scheduleAi(new HitTask(target, damage1, crit1, miss1, attack._soulshot, shld1), 980);
// Add this hit to the Server-Client packet Attack
attack.addHit(target, damage1, miss1, crit1, shld1);
@@ -919,12 +919,10 @@
getAI().notifyEvent(CtrlEvent.EVT_CANCEL);
return;
}
-
- /*
- if (Config.DEBUG)
- _log.warning("L2Character: doCast -> " + skill + " " + target + " " + targets);
- */
+ if (Config.DEBUG)
+ _log.warning("L2Character: doCast -> " + skill.getName() + " " + target.getName() + " " + targets);
+
// Get the Identifier of the skill
int magicId = skill.getId();
@@ -1009,7 +1007,7 @@
if (reuseDelay > 10)
{
disableSkill(skill.getId());
- ClientScheduler.getInstance().scheduleMed(new EnableSkill(skill.getId()), reuseDelay);
+ ClientScheduler.getInstance().scheduleAi(new EnableSkill(skill.getId()), reuseDelay);
}
// launch the magic in skillTime milliseconds
@@ -1024,7 +1022,7 @@
// Disable all skills during the casting time and create a task EnableAllSkills with Medium priority to enable all skills at the end of the cating time
disableAllSkills();
- ClientScheduler.getInstance().scheduleMed(new EnableAllSkills(skill), skillTime);
+ ClientScheduler.getInstance().scheduleAi(new EnableAllSkills(skill), skillTime);
if (_skillCast != null)
{
@@ -1033,7 +1031,7 @@
}
// Create a task MagicUseTask with Medium priority to launch the MagicSkill at the end of the casting time
- _skillCast = ClientScheduler.getInstance().scheduleMed(new MagicUseTask(targets, skill), skillTime);
+ _skillCast = ClientScheduler.getInstance().scheduleAi(new MagicUseTask(targets, skill), skillTime);
}
else
{
@@ -1277,7 +1275,7 @@
if(_IsAttacked || value) _LastAttackChange = GameTimeController.getGameTicks();
// launch the task for attacking stance
- if(value && !_IsAttacked) ClientScheduler.getInstance().scheduleLow(new AttackingStanceTask(), 15000);
+ if(value && !_IsAttacked) ClientScheduler.getInstance().scheduleAi(new AttackingStanceTask(), 15000);
_IsAttacked = value;
}
@@ -1422,13 +1420,13 @@
if(GameTimeController.getGameTicks() - _LastAttackChange < 15 * GameTimeController.TICKS_PER_SECOND)
{
int time = 15 * GameTimeController.TICKS_PER_SECOND - (GameTimeController.getGameTicks() - _LastAttackChange);
- ClientScheduler.getInstance().scheduleLow(new AttackingStanceTask(), time);
+ ClientScheduler.getInstance().scheduleAi(new AttackingStanceTask(), time);
}
// last attack time is less than 15s
else if(GameTimeController.getGameTicks() - getAttackEndTime() < 15 * GameTimeController.TICKS_PER_SECOND)
{
int time = 15 * GameTimeController.TICKS_PER_SECOND - (GameTimeController.getGameTicks() - getAttackEndTime());
- ClientScheduler.getInstance().scheduleLow(new AttackingStanceTask(), time);
+ ClientScheduler.getInstance().scheduleAi(new AttackingStanceTask(), time);
}
else
{
@@ -3298,7 +3296,7 @@
// Create a task to notify the AI that L2Character arrives at a check point of the movement
if (tm > 3000)
- ClientScheduler.getInstance().scheduleMed( new NotifyAITask(CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000);
+ ClientScheduler.getInstance().scheduleAi( new NotifyAITask(CtrlEvent.EVT_ARRIVED_REVALIDATE), 2000);
// the CtrlEvent.EVT_ARRIVED will be sent when the character will actually arrive
// to destination by GameTimeController
@@ -4326,7 +4324,7 @@
{
updatePvPFlag(1);
- _PvPRegTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ _PvPRegTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(
new PvPFlag(), 1000, 1000);
}
@@ -4359,7 +4357,7 @@
// public void checkPvPFlag()
// {
// if (Config.DEBUG) _log.fine("Checking PvpFlag");
-// _PvPRegTask = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+// _PvPRegTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(
// new PvPFlag(), 1000, 5000);
// _PvPRegActive = true;
// // _log.fine("PvP recheck");
Index: java/net/sf/l2j/gameserver/model/L2Effect.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2Effect.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/L2Effect.java (working copy)
@@ -187,7 +187,7 @@
int duration = _period - _periodfirsttime;
//_log.warning("Period: "+_period+"-"+_periodfirsttime+"="+duration);
_currentTask = new EffectTask(duration * 1000, -1);
- _currentFuture = ClientScheduler.getInstance().scheduleLow(
+ _currentFuture = ClientScheduler.getInstance().scheduleEffect(
_currentTask, duration * 1000 );
}
}
@@ -248,7 +248,7 @@
{
stopEffectTask();
_currentTask = new EffectTask(duration, -1);
- _currentFuture = ClientScheduler.getInstance().scheduleLow(
+ _currentFuture = ClientScheduler.getInstance().scheduleEffect(
_currentTask, duration);
if (_state == EffectState.ACTING)
_effected.addEffect(this);
@@ -259,7 +259,7 @@
{
stopEffectTask();
_currentTask = new EffectTask(delay, rate);
- _currentFuture = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ _currentFuture = ClientScheduler.getInstance().scheduleEffectAtFixedRate(
_currentTask, delay, rate);
if (_state == EffectState.ACTING)
_effected.addEffect(this);
Index: java/net/sf/l2j/gameserver/model/L2Skill.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2Skill.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/L2Skill.java (working copy)
@@ -1320,6 +1320,72 @@
return targetList.toArray(new L2Object[targetList.size()]);
}
}
+ case TARGET_AREA_CORPSE_MOB:
+ {
+ L2PcInstance player = null;
+ player = (L2PcInstance)activeChar;
+ player.sendMessage("Target area corpse mob");
+ if(!(target instanceof L2Attackable) || !target.isDead())
+ {
+ activeChar.sendPacket(new SystemMessage(SystemMessage.TARGET_IS_INCORRECT));
+ return null;
+ }
+ L2Character cha;
+ cha = target;
+
+ boolean skillUserIsL2PcInstance = (activeChar instanceof L2PcInstance);
+ boolean effectOriginIsL2PcInstance = (cha instanceof L2PcInstance);
+ boolean objIsL2PcInstance;
+ int radius = getSkillRadius();
+ for (L2Object obj : cha.getKnownList().getKnownObjects())
+ {
+ if (!(obj instanceof L2Character)) continue;
+
+ target = (L2Character) obj;
+ if(!target.isAlikeDead() && target != activeChar) // If target is not dead/fake death and not self
+ {
+ if (!Util.checkIfInRange(radius, cha, obj, true)) // Go to next obj if obj isn't in range
+ continue;
+
+ objIsL2PcInstance = (obj instanceof L2PcInstance);
+
+ if (skillUserIsL2PcInstance) // Skill attacker is L2PcInstance, hit everything except
+ {
+ if (
+ ( // (
+ objIsL2PcInstance && // obj is L2PcInstance and
+ ( // (
+ ( // In same clan
+ (((L2PcInstance)activeChar).getClan() != null && ((L2PcInstance)obj).getClan() != null) &&
+ ((L2PcInstance)activeChar).getClan().getClanId() == ((L2PcInstance)obj).getClan().getClanId()
+ ) || // or in same party
+ (
+ (((L2PcInstance)activeChar).getParty() != null && ((L2PcInstance)obj).getParty() != null) &&
+ ((L2PcInstance)activeChar).getParty().getPartyLeaderOID() == ((L2PcInstance)obj).getParty().getPartyLeaderOID()
+ ) || // or not pvp with
+ !((L2PcInstance)activeChar).checkPvpSkill(obj, this)
+ ) // )
+ )
+ )
+ continue;
+ }
+ else // Skill user is not L2PcInstance
+ {
+ if (effectOriginIsL2PcInstance && // If effect starts at L2PcInstance and
+ !objIsL2PcInstance) // Object is not L2PcInstance
+ continue;
+ }
+
+ targetList.add((L2Character)obj); // Add obj to target lists
+ }
+ }
+ System.out.println("Amount of targets: "+targetList.size());
+ player.sendMessage("Targets: "+targetList.size());
+ if (targetList.size() == 0)
+ return null;
+
+ return targetList.toArray(new L2Character[targetList.size()]);
+ }
default:
{
SystemMessage sm = new SystemMessage(614);
Index: java/net/sf/l2j/gameserver/model/L2Spawn.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2Spawn.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/L2Spawn.java (working copy)
@@ -317,8 +317,8 @@
_scheduledCount++;
// Create a new SpawnTask to launch after the respawn Delay
- //ClientScheduler.getInstance().scheduleLow(new SpawnTask(npcId), _respawnDelay);
- ClientScheduler.getInstance().scheduleLow(new SpawnTask(oldNpc), _respawnDelay);
+ //ClientScheduler.getInstance().scheduleSpawn(new SpawnTask(npcId), _respawnDelay);
+ ClientScheduler.getInstance().scheduleSpawn(new SpawnTask(oldNpc), _respawnDelay);
}
}
Index: java/net/sf/l2j/gameserver/model/quest/QuestPcSpawn.java
===================================================================
--- java/net/sf/l2j/gameserver/model/quest/QuestPcSpawn.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/quest/QuestPcSpawn.java (working copy)
@@ -335,7 +335,7 @@
private void addDeSpawnTask(int objectId, int spawnLength)
{
if (spawnLength > 0)
- ClientScheduler.getInstance().scheduleLow(new DeSpawnScheduleTimerTask(objectId), spawnLength);
+ ClientScheduler.getInstance().scheduleQuest(new DeSpawnScheduleTimerTask(objectId), spawnLength);
}
// =========================================================
Index: java/net/sf/l2j/gameserver/model/quest/QuestPcSpawnManager.java
===================================================================
--- java/net/sf/l2j/gameserver/model/quest/QuestPcSpawnManager.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/quest/QuestPcSpawnManager.java (working copy)
@@ -19,7 +19,7 @@
try
{
cleanUp();
- ClientScheduler.getInstance().scheduleLow(new ScheduleTimerTask(), 60000);
+ ClientScheduler.getInstance().scheduleQuest(new ScheduleTimerTask(), 60000);
} catch (Throwable t){}
}
}
@@ -33,7 +33,7 @@
// Constructor
public QuestPcSpawnManager()
{
- ClientScheduler.getInstance().scheduleLow(new ScheduleTimerTask(), 60000);
+ ClientScheduler.getInstance().scheduleQuest(new ScheduleTimerTask(), 60000);
}
// =========================================================
Index: java/net/sf/l2j/gameserver/model/quest/QuestStateManager.java
===================================================================
--- java/net/sf/l2j/gameserver/model/quest/QuestStateManager.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/quest/QuestStateManager.java (working copy)
@@ -19,7 +19,7 @@
try
{
cleanUp();
- ClientScheduler.getInstance().scheduleLow(new ScheduleTimerTask(), 60000);
+ ClientScheduler.getInstance().scheduleQuest(new ScheduleTimerTask(), 60000);
} catch (Throwable t){}
}
}
@@ -33,7 +33,7 @@
// Constructor
public QuestStateManager()
{
- ClientScheduler.getInstance().scheduleLow(new ScheduleTimerTask(), 60000);
+ ClientScheduler.getInstance().scheduleQuest(new ScheduleTimerTask(), 60000);
}
// =========================================================
Index: java/net/sf/l2j/gameserver/model/quest/QuestTimer.java
===================================================================
--- java/net/sf/l2j/gameserver/model/quest/QuestTimer.java (revision 1582)
+++ java/net/sf/l2j/gameserver/model/quest/QuestTimer.java (working copy)
@@ -36,7 +36,7 @@
{
_Name = name;
_QuestState = qs;
- _Schedular = ClientScheduler.getInstance().scheduleLow(new ScheduleTimerTask(), time); // Prepare auto end task
+ _Schedular = ClientScheduler.getInstance().scheduleQuest(new ScheduleTimerTask(), time); // Prepare auto end task
}
// =========================================================
Index: java/net/sf/l2j/gameserver/RecipeController.java
===================================================================
--- java/net/sf/l2j/gameserver/RecipeController.java (revision 1581)
+++ java/net/sf/l2j/gameserver/RecipeController.java (working copy)
@@ -524,7 +524,7 @@
manufacturer.isInCraftMode(true); // here we say craf mode started, no reason to do it sooner, just makes problems
- //ClientScheduler.scheduleCraftAction(this, 100);
+ //ClientScheduler.getInstance().scheduleCraft(this, 100);
run(); // for not-alternative crafting -> no reason why not craft immediately, cause it uses really little cpu
// and will never make lag ... scheduled things tend to make lag, things that are immediately done don't if you
// have sufficient cpu anyway ... how long can craft take ? few nanoseconds ?
@@ -633,7 +633,7 @@
manufacturer.isInCraftMode(false);
activeMakers.remove(manufacturer);
} else
- ClientScheduler.scheduleEvent(this, 1+delay); // Craft thread pool has nothing to do with other pools, so
+ ClientScheduler.getInstance().scheduleCraft(this, 1+delay); // Craft thread pool has nothing to do with other pools, so
// only way this can make any kind of lag is when CPU usage is 100%
// when nobody is "in craft mode" scheduled tasks for
// craft thread pool must be 0 or we have a bug again :/
Index: java/net/sf/l2j/gameserver/SelectorThread.java
===================================================================
--- java/net/sf/l2j/gameserver/SelectorThread.java (revision 1580)
+++ java/net/sf/l2j/gameserver/SelectorThread.java (working copy)
@@ -140,7 +140,7 @@
if (Config.ASSERT) assert instance == null;
if (Config.COUNT_PACKETS)
{
- packetMonitor = ClientScheduler.getInstance().scheduleLowAtFixedRate(new MonitorPackets(), 10000, 10000);
+ packetMonitor = ClientScheduler.getInstance().scheduleOtherAtFixedRate(new MonitorPackets(), 10000, 10000);
}
instance = this;
this._hostname = hostname;
@@ -685,7 +685,7 @@
if(GameTimeController.getGameTicks() - player.getAttackEndTime() < 15 * GameTimeController.TICKS_PER_SECOND || player.isAttacked())
{
c.onlyClose();
- ClientScheduler.getInstance().scheduleLow(new DisconnectionTask(c), 15000);
+ ClientScheduler.getInstance().scheduleOther(new DisconnectionTask(c), 15000);
return;
}
}
@@ -734,7 +734,7 @@
packetHistory.clear();
byteHistory.clear();
- packetMonitor = ClientScheduler.getInstance().scheduleLowAtFixedRate(
+ packetMonitor = ClientScheduler.getInstance().scheduleOtherAtFixedRate(
new Runnable()
{
public void run()
Index: java/net/sf/l2j/gameserver/SevenSigns.java
===================================================================
--- java/net/sf/l2j/gameserver/SevenSigns.java (revision 1580)
+++ java/net/sf/l2j/gameserver/SevenSigns.java (working copy)
@@ -340,7 +340,7 @@
// Schedule a time for the next period change.
SevenSignsPeriodChange sspc = new SevenSignsPeriodChange();
- ClientScheduler.getInstance().scheduleMed(sspc, milliToChange);
+ ClientScheduler.getInstance().scheduleOther(sspc, milliToChange);
// Thanks to http://rainbow.arch.scriptmania.com/scripts/timezone_countdown.html for help with this.
double numSecs = (milliToChange / 1000) % 60;
@@ -1460,7 +1460,7 @@
setCalendarForNextPeriodChange();
SevenSignsPeriodChange sspc = new SevenSignsPeriodChange();
- ClientScheduler.getInstance().scheduleMed(sspc, getMilliToPeriodChange());
+ ClientScheduler.getInstance().scheduleOther(sspc, getMilliToPeriodChange());
}
}
}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/SevenSignsFestival.java
===================================================================
--- java/net/sf/l2j/gameserver/SevenSignsFestival.java (revision 1580)
+++ java/net/sf/l2j/gameserver/SevenSignsFestival.java (working copy)
@@ -964,7 +964,7 @@
// at the specified time, then invoke it automatically after every cycle.
FestivalManager fm = new FestivalManager();
setNextFestivalStart(FESTIVAL_MANAGER_START + FESTIVAL_SIGNUP_TIME);
- _managerScheduledTask = ClientScheduler.getInstance().scheduleMedAtFixedRate(fm, FESTIVAL_MANAGER_START, FESTIVAL_CYCLE_LENGTH);
+ _managerScheduledTask = ClientScheduler.getInstance().scheduleOtherAtFixedRate(fm, FESTIVAL_MANAGER_START, FESTIVAL_CYCLE_LENGTH);
_log.info("SevenSignsFestival: The first Festival of Darkness cycle begins in " + (FESTIVAL_MANAGER_START / 1000 / 60) + " minute(s).");
}
Index: java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java
===================================================================
--- java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java (revision 1580)
+++ java/net/sf/l2j/gameserver/taskmanager/DecayTaskManager.java (working copy)
@@ -24,7 +24,7 @@
public DecayTaskManager()
{
- ClientScheduler.getInstance().scheduleMedAtFixedRate(new DecayScheduler(),10000,5000);
+ ClientScheduler.getInstance().scheduleOtherAtFixedRate(new DecayScheduler(),10000,5000);
}
public static DecayTaskManager getInstance()
Index: java/net/sf/l2j/gameserver/taskmanager/TaskManager.java
===================================================================
--- java/net/sf/l2j/gameserver/taskmanager/TaskManager.java (revision 1580)
+++ java/net/sf/l2j/gameserver/taskmanager/TaskManager.java (working copy)
@@ -235,7 +235,7 @@
else if (type == TYPE_SHEDULED)
{
long delay = Long.valueOf(task.getParams()[0]);
- task._scheduled = scheduler.scheduleLow(task, delay);
+ task._scheduled = scheduler.scheduleTask(task, delay);
return true;
}
else if (type == TYPE_FIXED_SHEDULED)
@@ -243,7 +243,7 @@
long delay = Long.valueOf(task.getParams()[0]);
long interval = Long.valueOf(task.getParams()[1]);
- task._scheduled = scheduler.scheduleLowAtFixedRate(task,delay,interval);
+ task._scheduled = scheduler.scheduleTaskAtFixedRate(task,delay,interval);
return true;
}
else if (type == TYPE_TIME)
@@ -253,7 +253,7 @@
long diff = desired.getTime() - System.currentTimeMillis();
if (diff >= 0)
{
- task._scheduled = scheduler.scheduleLow(task, diff);
+ task._scheduled = scheduler.scheduleTask(task, diff);
return true;
}
_log.info("Task " + task.getId() + " is obsoleted.");
@@ -302,7 +302,7 @@
delay += interval;
}
- task._scheduled = scheduler.scheduleLowAtFixedRate(task,delay,interval);
+ task._scheduled = scheduler.scheduleTaskAtFixedRate(task,delay,interval);
return true;
}
Index: java/net/sf/l2j/gameserver/taskmanager/tasks/TaskCleanUp.java
===================================================================
--- java/net/sf/l2j/gameserver/taskmanager/tasks/TaskCleanUp.java (revision 1580)
+++ java/net/sf/l2j/gameserver/taskmanager/tasks/TaskCleanUp.java (working copy)
@@ -23,8 +23,8 @@
public void onTimeElapsed(ExecutedTask task)
{
- System.runFinalization();
- System.gc();
+// System.runFinalization();
+// System.gc();
}
public void initializate()
Index: java/net/sf/l2j/L2DatabaseFactory.java
===================================================================
--- java/net/sf/l2j/L2DatabaseFactory.java (revision 1580)
+++ java/net/sf/l2j/L2DatabaseFactory.java (working copy)
@@ -63,8 +63,11 @@
config.setMinPoolSize(1);
config.setMaxPoolSize(Config.DATABASE_MAX_CONNECTIONS);
config.setMaxStatements(100);
- config.setIdleConnectionTestPeriod(0); // test idle connection every 1 minute
- config.setMaxIdleTime(0); // remove unused connection after 10 minutes
+ config.setIdleConnectionTestPeriod(60); // test idle connection every 1 minute
+ config.setMaxIdleTime(60); // remove unused connection after 10 minutes
+ config.setNumHelperThreads(5);
+ config.setTestConnectionOnCheckin(true);
+ config.setTestConnectionOnCheckout(true);
Class.forName(Config.DATABASE_DRIVER).newInstance();
Index: java/net/sf/l2j/loginserver/ClientThread.java
===================================================================
--- java/net/sf/l2j/loginserver/ClientThread.java (revision 1580)
+++ java/net/sf/l2j/loginserver/ClientThread.java (working copy)
@@ -413,7 +413,7 @@
_bannedIPs.add(ip);
int time = incorrectCount * incorrectCount * 1000;
//System.out.println("Banning ip "+ip+" for "+time/1000.0+" seconds.");
- ClientScheduler.getInstance().scheduleMed(new UnbanTask(ip), time);
+ ClientScheduler.getInstance().scheduleSystem(new UnbanTask(ip), time);
}
public static void addBannedIP(String ip)
Index: java/net/sf/l2j/status/GameStatusThread.java
===================================================================
--- java/net/sf/l2j/status/GameStatusThread.java (revision 1580)
+++ java/net/sf/l2j/status/GameStatusThread.java (working copy)
@@ -255,6 +255,14 @@
}
_print.flush();
}
+ else if (_usrCommand.equals("extended_performance") || _usrCommand.equals("extended") )
+ {
+ for (String line : ClientScheduler.getInstance().getExtendedStats())
+ {
+ _print.println(line);
+ }
+ _print.flush();
+ }
else if (_usrCommand.startsWith("announce"))
{
try