From 6bd33afd5aef8bdc9d93ed8f1c2927c267a47255 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Tue, 22 Mar 2022 11:45:49 +0000 Subject: [PATCH] Fixed Clan addExp method ArrayIndexOutOfBoundsException. --- .../java/org/l2jmobius/gameserver/model/clan/Clan.java | 10 +++++++--- .../java/org/l2jmobius/gameserver/model/clan/Clan.java | 10 +++++++--- .../java/org/l2jmobius/gameserver/model/clan/Clan.java | 10 +++++++--- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java index 1ba6b570f3..e3e1dfe4d4 100644 --- a/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_5.2_FrostLord/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -3087,10 +3087,14 @@ public class Clan implements IIdentifiable, INamable public void addExp(int objId, int value) { - _exp += value; - broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + if ((_exp + value) < EXP_TABLE[EXP_TABLE.length - 1]) + { + _exp += value; + broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + } - if (((EXP_TABLE[Math.max(0, getLevel() + 1)]) <= _exp)) + final int nextLevel = getLevel() + 1; + if ((nextLevel < EXP_TABLE.length) && ((EXP_TABLE[Math.max(0, nextLevel)]) <= _exp)) { changeLevel(_level + 1); } diff --git a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java index 1ba6b570f3..e3e1dfe4d4 100644 --- a/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.1_BattleChronicle/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -3087,10 +3087,14 @@ public class Clan implements IIdentifiable, INamable public void addExp(int objId, int value) { - _exp += value; - broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + if ((_exp + value) < EXP_TABLE[EXP_TABLE.length - 1]) + { + _exp += value; + broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + } - if (((EXP_TABLE[Math.max(0, getLevel() + 1)]) <= _exp)) + final int nextLevel = getLevel() + 1; + if ((nextLevel < EXP_TABLE.length) && ((EXP_TABLE[Math.max(0, nextLevel)]) <= _exp)) { changeLevel(_level + 1); } diff --git a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java index 1ba6b570f3..e3e1dfe4d4 100644 --- a/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java +++ b/L2J_Mobius_Essence_6.2_Vanguard/java/org/l2jmobius/gameserver/model/clan/Clan.java @@ -3087,10 +3087,14 @@ public class Clan implements IIdentifiable, INamable public void addExp(int objId, int value) { - _exp += value; - broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + if ((_exp + value) < EXP_TABLE[EXP_TABLE.length - 1]) + { + _exp += value; + broadcastToOnlineMembers(new ExPledgeV3Info(_exp, getRank(), getNotice(), isNoticeEnabled())); + } - if (((EXP_TABLE[Math.max(0, getLevel() + 1)]) <= _exp)) + final int nextLevel = getLevel() + 1; + if ((nextLevel < EXP_TABLE.length) && ((EXP_TABLE[Math.max(0, nextLevel)]) <= _exp)) { changeLevel(_level + 1); }