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 12b25b7419..818f10326b 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 @@ -434,7 +434,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9788,7 +9788,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9803,17 +9816,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 ead7681e51..f769a2309b 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 @@ -436,7 +436,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9795,7 +9795,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9810,17 +9823,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 db0863c9d1..f98b0f1e46 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 @@ -438,7 +438,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9797,7 +9797,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9812,17 +9825,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 686e1adad0..5223953305 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 @@ -443,7 +443,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9791,7 +9791,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9806,17 +9819,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 3638a29329..6945a914d0 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 @@ -441,7 +441,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9781,7 +9781,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9796,17 +9809,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 9698459a46..3b33960dc8 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 @@ -441,7 +441,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9781,7 +9781,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9796,17 +9809,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 95052ba460..aa423995c8 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 @@ -441,7 +441,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private static final String ORIGINAL_CLASS_VAR = "OriginalClass"; @@ -9787,7 +9787,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9802,17 +9815,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index cfeb8689ef..5e50e751be 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -302,7 +302,7 @@ public final class PlayerInstance extends Playable protected int _classIndex = 0; private boolean _first_log; private int pcBangPoint = 0; - private Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private PlayerAppearance _appearance; private int _charId = 0x00030b7a; private long _expBeforeDeath; @@ -13611,11 +13611,6 @@ public final class PlayerInstance extends Playable */ public Map getSubClasses() { - if (_subClasses == null) - { - _subClasses = new HashMap<>(); - } - return _subClasses; } diff --git a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java index 98eebf5b1f..b8aaba8cdb 100644 --- a/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java +++ b/L2J_Mobius_CT_2.6_HighFive/java/org/l2jmobius/gameserver/model/actor/instance/PlayerInstance.java @@ -437,7 +437,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -10280,11 +10280,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - _subClasses = new ConcurrentSkipListMap<>(); - } - return _subClasses; } 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 87e7318269..33d82a1e25 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 @@ -435,7 +435,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -9723,7 +9723,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9738,17 +9751,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 07969d78d0..d3bcc5b0d2 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 @@ -435,7 +435,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -9730,7 +9730,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9745,17 +9758,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 b77339aa70..fad8cbc94d 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 @@ -433,7 +433,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -9715,7 +9715,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9730,17 +9743,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 c00d8ac557..5224fd8d48 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 @@ -433,7 +433,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -9715,7 +9715,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9730,17 +9743,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; } 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 d90285ec75..a4f0baf0e9 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 @@ -433,7 +433,7 @@ public final class PlayerInstance extends Playable private boolean _petItems = false; /** The list of sub-classes this character has. */ - private volatile Map _subClasses; + private final Map _subClasses = new ConcurrentHashMap<>(); private final PlayerAppearance _appearance; @@ -9715,7 +9715,20 @@ public final class PlayerInstance extends Playable public boolean isDualClassActive() { - return isSubClassActive() && getSubClasses().get(_classIndex).isDualClass(); + if (!isSubClassActive()) + { + return false; + } + if (_subClasses.isEmpty()) + { + return false; + } + final SubClass subClass = _subClasses.get(_classIndex); + if (subClass == null) + { + return false; + } + return subClass.isDualClass(); } public boolean hasDualClass() @@ -9730,17 +9743,6 @@ public final class PlayerInstance extends Playable public Map getSubClasses() { - if (_subClasses == null) - { - synchronized (this) - { - if (_subClasses == null) - { - _subClasses = new ConcurrentHashMap<>(); - } - } - } - return _subClasses; }