From d61f6f5f08da35948ebce6a9e91af1a7aaa9a22f Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 5 Jun 2019 06:18:07 +0000 Subject: [PATCH] Cancel and remove running henna tasks before restoring hennas. --- .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ .../model/actor/instance/PlayerInstance.java | 13 +++++++++++++ 12 files changed, 156 insertions(+) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 506659c705..7275ea9782 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7809,6 +7809,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7844,6 +7855,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 9fdabd4aa8..0e885e5cb1 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7816,6 +7816,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7851,6 +7862,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index c10608d351..0df16d03f4 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7818,6 +7818,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7853,6 +7864,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 430766c20e..f471f51987 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7816,6 +7816,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7851,6 +7862,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 9caa1c468c..993612606b 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7798,6 +7798,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7833,6 +7844,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index b958f423e7..5ee251d8ac 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7798,6 +7798,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7833,6 +7844,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index d2f0a991cb..9944ba7dbf 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7799,6 +7799,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7834,6 +7845,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 8e75d35eff..18a100c84c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7780,6 +7780,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7815,6 +7826,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 9140cd6d76..ac462b233b 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7781,6 +7781,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7816,6 +7827,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 378ea6eef3..979b0c3521 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7766,6 +7766,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7801,6 +7812,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index b3afdb3ca9..83767d0906 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7766,6 +7766,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7801,6 +7812,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index ca76b5d11a..5535df1de6 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -7766,6 +7766,17 @@ public final class PlayerInstance extends Playable _henna[i - 1] = null; } + // Cancel and remove existing running tasks. + for (Entry> entry : _hennaRemoveSchedules.entrySet()) + { + final ScheduledFuture task = entry.getValue(); + if ((task != null) && !task.isCancelled() && !task.isDone()) + { + task.cancel(true); + } + _hennaRemoveSchedules.remove(entry.getKey()); + } + try (Connection con = DatabaseFactory.getConnection(); PreparedStatement statement = con.prepareStatement(RESTORE_CHAR_HENNAS)) { @@ -7801,6 +7812,8 @@ public final class PlayerInstance extends Playable removeHenna(slot); continue; } + + // Add the new task. _hennaRemoveSchedules.put(slot, ThreadPool.schedule(new HennaDurationTask(this, slot), System.currentTimeMillis() + remainingTime)); }