From 1ff9136a927684bed82b0a9729f948aed987296e Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Thu, 30 Jul 2020 19:14:21 +0000 Subject: [PATCH] Partial revert for previous CreatureStat changes. --- .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ .../model/actor/stat/CreatureStat.java | 61 +++++++------------ 15 files changed, 330 insertions(+), 585 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 1433b394e2..cfe114ebe1 100644 --- a/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_7.0_PreludeOfWar/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -887,25 +888,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -987,36 +974,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_3.0_TheKamael/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast) diff --git a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java index 4be0c7327d..fc38d5ea76 100644 --- a/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java +++ b/L2J_Mobius_Classic_Interlude/java/org/l2jmobius/gameserver/model/actor/stat/CreatureStat.java @@ -16,6 +16,7 @@ */ package org.l2jmobius.gameserver.model.actor.stat; +import java.util.Collections; import java.util.Deque; import java.util.EnumMap; import java.util.EnumSet; @@ -877,25 +878,11 @@ public class CreatureStat */ public void recalculateStats(boolean broadcast) { - _lock.writeLock().lock(); - // Copy old data before wiping it out - final Map adds; - final Map muls; - if (broadcast) - { - adds = new EnumMap<>(_statsAdd); - muls = new EnumMap<>(_statsMul); - } - else - { - adds = null; - muls = null; - } - - // Set of Stat that changed. - Set changed = null; + final Map adds = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsAdd); + final Map muls = !broadcast ? Collections.emptyMap() : new EnumMap<>(_statsMul); + _lock.writeLock().lock(); try { // Wipe all the data @@ -977,36 +964,32 @@ public class CreatureStat } _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); - - if (broadcast && (adds != null) && (muls != null)) // adds and muls cannot be null when broadcast is true, but Eclipse throws warning bellow. - { - // Calculate the difference between old and new stats - changed = new HashSet<>(); - for (Stat stat : Stat.values()) - { - if ((_statsAdd.containsKey(stat) ? _statsAdd.get(stat).doubleValue() : stat.getResetAddValue()) != (adds.containsKey(stat) ? adds.get(stat).doubleValue() : stat.getResetAddValue())) - { - changed.add(stat); - } - else if ((_statsMul.containsKey(stat) ? _statsMul.get(stat).doubleValue() : stat.getResetMulValue()) != (muls.containsKey(stat) ? muls.get(stat).doubleValue() : stat.getResetMulValue())) - { - changed.add(stat); - } - } - } } finally { _lock.writeLock().unlock(); } - if ((changed != null) && !changed.isEmpty()) - { - _creature.broadcastModifiedStats(changed); - } - // Notify recalculation to child classes onRecalculateStats(broadcast); + + if (broadcast) + { + // Calculate the difference between old and new stats + final Set changed = new HashSet<>(); + for (Stat stat : Stat.values()) + { + if (_statsAdd.getOrDefault(stat, stat.getResetAddValue()) != adds.getOrDefault(stat, stat.getResetAddValue())) + { + changed.add(stat); + } + else if (_statsMul.getOrDefault(stat, stat.getResetMulValue()) != muls.getOrDefault(stat, stat.getResetMulValue())) + { + changed.add(stat); + } + } + _creature.broadcastModifiedStats(changed); + } } protected void onRecalculateStats(boolean broadcast)