From 04ed73da504be3ca67338edabd5cce876eb7eaed Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 1 May 2019 16:31:41 +0000 Subject: [PATCH] Proper fix for henna duration display. --- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- .../network/serverpackets/HennaInfo.java | 17 +++++++++++++---- 7 files changed, 91 insertions(+), 28 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index 4936e803ed..0211e71039 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index a6eb047fad..4d1424d8b1 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index dadc2440e1..b8cea020ed 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index dadc2440e1..b8cea020ed 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index dadc2440e1..b8cea020ed 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index dadc2440e1..b8cea020ed 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else { diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java index dadc2440e1..b8cea020ed 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/network/serverpackets/HennaInfo.java @@ -66,11 +66,20 @@ public final class HennaInfo implements IClientOutgoingPacket packet.writeD(henna.getDyeId()); packet.writeD(henna.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } - if (_player.getHenna(4) != null) + + final Henna premium = _player.getHenna(4); + if (premium != null) { - packet.writeD(_player.getHenna(4).getDyeId()); - packet.writeD(_player.getHenna(4).getDuration()); // Premium Slot Dye Time Left - packet.writeD(_player.getHenna(4).isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); + int duration = premium.getDuration(); + if (duration > 0) + { + final long currentTime = System.currentTimeMillis(); + duration = (int) Math.max(0, _player.getVariables().getLong("HennaDuration4", currentTime) - currentTime) / 1000; + } + + packet.writeD(premium.getDyeId()); + packet.writeD(duration); // Premium Slot Dye Time Left + packet.writeD(premium.isAllowedClass(_player.getClassId()) ? 0x01 : 0x00); } else {