From a0fe1121505d33632f96c200161f51705015de11 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 30 Jun 2019 23:11:52 +0000 Subject: [PATCH] Removed several synchronized locks. --- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 156 ++++----------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 156 ++++----------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 156 ++++----------- .../actor/instance/TamedBeastInstance.java | 4 +- .../ai/areas/BeastFarm/FeedableBeasts.java | 7 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 156 ++++----------- .../actor/instance/TamedBeastInstance.java | 4 +- .../model/actor/instance/PlayerInstance.java | 83 +++----- .../model/actor/instance/PlayerInstance.java | 10 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- .../gameserver/model/EffectList.java | 4 +- .../model/actor/instance/PlayerInstance.java | 181 +++++------------- .../actor/instance/TamedBeastInstance.java | 4 +- 45 files changed, 646 insertions(+), 1664 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b07df2971b..a2b231af92 100644 --- a/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_1.0_Ertheia/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -414,12 +414,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 7275ea9782..32473c8322 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -114,6 +113,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -596,12 +596,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -673,7 +673,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -690,7 +690,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -713,7 +713,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2025,11 +2025,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4306,7 +4302,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -5026,13 +5029,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5454,7 +5457,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5505,16 +5508,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5532,16 +5525,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10432,14 +10415,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10539,12 +10519,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10936,16 +10913,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11750,38 +11717,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11791,8 +11747,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11804,8 +11759,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11838,7 +11792,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13250,7 +13204,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13293,7 +13247,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13312,7 +13266,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13331,7 +13285,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13699,22 +13653,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13723,7 +13667,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13733,7 +13677,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13741,12 +13685,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13757,7 +13701,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13777,7 +13721,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13786,7 +13730,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13818,16 +13762,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13918,16 +13852,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13937,7 +13861,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13951,11 +13875,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13964,11 +13887,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13978,11 +13900,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_1.0_Ertheia/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b07df2971b..a2b231af92 100644 --- a/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_2.5_Underground/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -414,12 +414,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 0e885e5cb1..5d83c06e1c 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -598,12 +598,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -675,7 +675,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -692,7 +692,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -715,7 +715,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2031,11 +2031,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4312,7 +4308,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -5032,13 +5035,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5460,7 +5463,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5511,16 +5514,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5538,16 +5531,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10439,14 +10422,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10546,12 +10526,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10943,16 +10920,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11757,38 +11724,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11798,8 +11754,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11811,8 +11766,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11845,7 +11799,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13257,7 +13211,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13300,7 +13254,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13319,7 +13273,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13338,7 +13292,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13706,22 +13660,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13730,7 +13674,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13740,7 +13684,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13748,12 +13692,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13764,7 +13708,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13784,7 +13728,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13793,7 +13737,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13825,16 +13769,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13925,16 +13859,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13944,7 +13868,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13958,11 +13882,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13971,11 +13894,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13985,11 +13907,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_2.5_Underground/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b07df2971b..a2b231af92 100644 --- a/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_3.0_Helios/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -414,12 +414,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 0df16d03f4..a42fa25250 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -116,6 +115,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -600,12 +600,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -677,7 +677,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -694,7 +694,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -717,7 +717,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2033,11 +2033,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4314,7 +4310,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -5034,13 +5037,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5462,7 +5465,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5513,16 +5516,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5540,16 +5533,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10441,14 +10424,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10548,12 +10528,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10945,16 +10922,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11759,38 +11726,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11800,8 +11756,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11813,8 +11768,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11847,7 +11801,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13260,7 +13214,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13303,7 +13257,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13322,7 +13276,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13341,7 +13295,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13709,22 +13663,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13733,7 +13677,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13743,7 +13687,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13751,12 +13695,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13767,7 +13711,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13787,7 +13731,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13796,7 +13740,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13828,16 +13772,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13928,16 +13862,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13947,7 +13871,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13961,11 +13885,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13974,11 +13897,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13988,11 +13910,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_3.0_Helios/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b07df2971b..a2b231af92 100644 --- a/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_4.0_GrandCrusade/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -414,12 +414,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 f471f51987..318185f738 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 @@ -605,12 +605,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); // client radar // TODO: This needs to be better integrated and saved/loaded @@ -677,10 +677,10 @@ public final class PlayerInstance extends Playable private long _spawnProtectEndTime = 0; private long _teleportProtectEndTime = 0; - private volatile Map _lastCommissionInfos; + private volatile Map _lastCommissionInfos = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -701,7 +701,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -724,7 +724,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -5032,13 +5032,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5460,7 +5460,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5511,16 +5511,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5538,16 +5528,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10435,14 +10415,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10542,12 +10519,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -11743,38 +11717,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11784,8 +11747,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11797,8 +11759,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11831,7 +11792,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13243,7 +13204,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13286,7 +13247,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13305,7 +13266,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13324,7 +13285,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13684,22 +13645,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13708,7 +13659,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13718,7 +13669,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13726,12 +13677,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13742,7 +13693,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13762,7 +13713,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13771,7 +13722,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13803,16 +13754,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13903,16 +13844,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13922,7 +13853,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13936,11 +13867,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13949,11 +13879,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13963,11 +13892,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_4.0_GrandCrusade/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b07df2971b..a2b231af92 100644 --- a/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_5.0_Salvation/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -414,12 +414,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 993612606b..ec0663a87f 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 @@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); // client radar // TODO: This needs to be better integrated and saved/loaded @@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable private long _spawnProtectEndTime = 0; private long _teleportProtectEndTime = 0; - private volatile Map _lastCommissionInfos; + private volatile Map _lastCommissionInfos = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -5013,13 +5013,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5441,7 +5441,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5492,16 +5492,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5519,16 +5509,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10425,14 +10405,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10532,12 +10509,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -11733,38 +11707,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11774,8 +11737,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11787,8 +11749,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11821,7 +11782,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13233,7 +13194,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13276,7 +13237,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13295,7 +13256,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13314,7 +13275,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13674,22 +13635,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13698,7 +13649,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13708,7 +13659,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13716,12 +13667,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13732,7 +13683,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13752,7 +13703,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13761,7 +13712,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13793,16 +13744,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13892,16 +13833,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13911,7 +13842,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13925,11 +13856,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13938,11 +13868,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13952,11 +13881,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_5.0_Salvation/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b916c6a9b9..4cc70b7fff 100644 --- a/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_5.5_EtinasFate/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -413,12 +413,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 5ee251d8ac..a70a88323a 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 @@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); // client radar // TODO: This needs to be better integrated and saved/loaded @@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable private long _spawnProtectEndTime = 0; private long _teleportProtectEndTime = 0; - private volatile Map _lastCommissionInfos; + private volatile Map _lastCommissionInfos = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -5013,13 +5013,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5441,7 +5441,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5492,16 +5492,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5519,16 +5509,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10425,14 +10405,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10532,12 +10509,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -11733,38 +11707,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11774,8 +11737,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11787,8 +11749,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11821,7 +11782,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13233,7 +13194,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13276,7 +13237,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13295,7 +13256,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13314,7 +13275,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13674,22 +13635,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13698,7 +13649,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13708,7 +13659,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13716,12 +13667,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13732,7 +13683,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13752,7 +13703,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13761,7 +13712,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13793,16 +13744,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13892,16 +13833,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13911,7 +13842,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13925,11 +13856,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13938,11 +13868,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13952,11 +13881,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_5.5_EtinasFate/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java index b916c6a9b9..4cc70b7fff 100644 --- a/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java +++ b/L2J_Mobius_6.0_Fafurion/dist/game/data/scripts/ai/areas/BeastFarm/FeedableBeasts.java @@ -413,12 +413,9 @@ public final class FeedableBeasts extends AbstractNpcAI // player might have and initialize the Tamed Beast. if (CommonUtil.contains(TAMED_BEASTS, nextNpcId)) { - if ((player.getTrainedBeasts() != null) && !player.getTrainedBeasts().isEmpty()) + for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) { - for (TamedBeastInstance oldTrained : player.getTrainedBeasts()) - { - oldTrained.deleteMe(); - } + oldTrained.deleteMe(); } final TamedBeastInstance nextNpc = new TamedBeastInstance(nextNpcId, player, food - FOODSKILLDIFF, npc.getX(), npc.getY(), npc.getZ()); diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 9944ba7dbf..1694f25647 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 @@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); // client radar // TODO: This needs to be better integrated and saved/loaded @@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable private long _spawnProtectEndTime = 0; private long _teleportProtectEndTime = 0; - private volatile Map _lastCommissionInfos; + private volatile Map _lastCommissionInfos = new ConcurrentHashMap<>(); @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -5014,13 +5014,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5442,7 +5442,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5493,16 +5493,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5520,16 +5510,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10431,14 +10411,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10538,12 +10515,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -11739,38 +11713,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11780,8 +11743,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11793,8 +11755,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11827,7 +11788,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13239,7 +13200,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13282,7 +13243,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13301,7 +13262,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13320,7 +13281,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13680,22 +13641,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13704,7 +13655,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13714,7 +13665,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13722,12 +13673,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13738,7 +13689,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13758,7 +13709,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13767,7 +13718,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13799,16 +13750,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13898,16 +13839,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13917,7 +13848,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13931,11 +13862,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13944,11 +13874,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13958,11 +13887,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_6.0_Fafurion/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } 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 bdf7cf3c00..25d21549cc 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 @@ -31,7 +31,6 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.Future; import java.util.concurrent.ScheduledFuture; @@ -462,7 +461,7 @@ public final class PlayerInstance extends Playable private int _masteryPenalty = 0; private ItemInstance _activeEnchantItem = null; protected boolean _inventoryDisable = false; - protected Map _cubics = new HashMap<>(); + protected Map _cubics = new ConcurrentHashMap<>(); protected Map _activeSoulShots = new ConcurrentHashMap<>(); public final ReentrantLock soulShotLock = new ReentrantLock(); public Quest dialog = null; @@ -710,14 +709,11 @@ public final class PlayerInstance extends Playable // cancel the recent fake-death protection instantly if the player attacks or casts spells getPlayer().setRecentFakeDeath(false); - synchronized (_cubics) + for (CubicInstance cubic : _cubics.values()) { - for (CubicInstance cubic : _cubics.values()) + if (cubic.getId() != CubicInstance.LIFE_CUBIC) { - if (cubic.getId() != CubicInstance.LIFE_CUBIC) - { - cubic.doAction(); - } + cubic.doAction(); } } } @@ -769,14 +765,11 @@ public final class PlayerInstance extends Playable return; } - synchronized (_cubics) + for (CubicInstance cubic : _cubics.values()) { - for (CubicInstance cubic : _cubics.values()) + if ((cubic != null) && (cubic.getId() != CubicInstance.LIFE_CUBIC)) { - if ((cubic != null) && (cubic.getId() != CubicInstance.LIFE_CUBIC)) - { - cubic.doAction(); - } + cubic.doAction(); } } break; @@ -1328,7 +1321,6 @@ public final class PlayerInstance extends Playable } } } - return _ai; } @@ -3571,7 +3563,6 @@ public final class PlayerInstance extends Playable { synchronized (_movingTaskDefined) { - if (!_movingTaskDefined) { return; @@ -11911,28 +11902,23 @@ public final class PlayerInstance extends Playable */ public Map getCubics() { - synchronized (_cubics) + // clean cubics instances + for (Integer id : _cubics.keySet()) { - // clean cubics instances - final Set cubicsIds = _cubics.keySet(); - - for (Integer id : cubicsIds) + if ((id == null) || (_cubics.get(id) == null)) { - if ((id == null) || (_cubics.get(id) == null)) + try { - try - { - _cubics.remove(id); - } - catch (NullPointerException e) - { - // FIXME: tried to remove a null key, to be found where this action has been performed (DEGUB) - } + _cubics.remove(id); + } + catch (NullPointerException e) + { + // FIXME: tried to remove a null key, to be found where this action has been performed (DEGUB) } } - - return _cubics; } + + return _cubics; } /** @@ -11949,11 +11935,7 @@ public final class PlayerInstance extends Playable public void addCubic(int id, int level, double matk, int activationtime, int activationchance, int totalLifetime, boolean givenByOther) { final CubicInstance cubic = new CubicInstance(this, id, level, (int) matk, activationtime, activationchance, totalLifetime, givenByOther); - - synchronized (_cubics) - { - _cubics.put(id, cubic); - } + _cubics.put(id, cubic); } /** @@ -11963,10 +11945,7 @@ public final class PlayerInstance extends Playable */ public void delCubic(int id) { - synchronized (_cubics) - { - _cubics.remove(id); - } + _cubics.remove(id); } /** @@ -11977,27 +11956,21 @@ public final class PlayerInstance extends Playable */ public CubicInstance getCubic(int id) { - synchronized (_cubics) - { - return _cubics.get(id); - } + return _cubics.get(id); } public void unsummonAllCubics() { // Unsummon Cubics - synchronized (_cubics) + if (_cubics.size() > 0) { - if (_cubics.size() > 0) + for (CubicInstance cubic : _cubics.values()) { - for (CubicInstance cubic : _cubics.values()) - { - cubic.stopAction(); - cubic.cancelDisappear(); - } - - _cubics.clear(); + cubic.stopAction(); + cubic.cancelDisappear(); } + + _cubics.clear(); } } @@ -13700,12 +13673,10 @@ public final class PlayerInstance extends Playable synchronized (getAllSkills()) { - for (Skill oldSkill : getAllSkills()) { super.removeSkill(oldSkill); } - } // Rebind CursedWeapon passive. 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 b8aaba8cdb..406d2ad26b 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 @@ -5008,13 +5008,13 @@ public final class PlayerInstance extends Playable stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (_isFakeDeath) { - if (_isFakeDeath) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } if (killer != null) { diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 18a100c84c..85b5312182 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -671,7 +671,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -688,7 +688,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -711,7 +711,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2006,11 +2006,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4281,7 +4277,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -4998,13 +5001,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5425,7 +5428,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5476,16 +5479,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5503,16 +5496,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10367,14 +10350,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10474,12 +10454,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10871,16 +10848,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11592,38 +11559,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11633,8 +11589,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11646,8 +11601,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11680,7 +11634,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13093,7 +13047,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13136,7 +13090,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13155,7 +13109,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13174,7 +13128,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13542,22 +13496,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13566,7 +13510,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13576,7 +13520,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13584,12 +13528,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13600,7 +13544,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13620,7 +13564,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13629,7 +13573,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13661,16 +13605,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13761,16 +13695,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13780,7 +13704,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13794,11 +13718,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13807,11 +13730,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13821,11 +13743,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 ac462b233b..5e03ac67fe 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -595,12 +595,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -672,7 +672,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -689,7 +689,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -712,7 +712,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2007,11 +2007,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4282,7 +4278,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -4999,13 +5002,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5426,7 +5429,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5477,16 +5480,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5504,16 +5497,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10374,14 +10357,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10481,12 +10461,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10878,16 +10855,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11599,38 +11566,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11640,8 +11596,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11653,8 +11608,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11687,7 +11641,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13100,7 +13054,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13143,7 +13097,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13162,7 +13116,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13181,7 +13135,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13549,22 +13503,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13573,7 +13517,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13583,7 +13527,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13591,12 +13535,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13607,7 +13551,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13627,7 +13571,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13636,7 +13580,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13668,16 +13612,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13768,16 +13702,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13787,7 +13711,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13801,11 +13725,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13814,11 +13737,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13828,11 +13750,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_Classic_2.1_Zaken/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 979b0c3521..b95600f0b0 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -593,12 +593,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -670,7 +670,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -687,7 +687,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -710,7 +710,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2005,11 +2005,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4265,7 +4261,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -4983,13 +4986,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5410,7 +5413,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5461,16 +5464,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5488,16 +5481,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10359,14 +10342,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10466,12 +10446,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10863,16 +10840,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11584,38 +11551,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11625,8 +11581,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11638,8 +11593,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11672,7 +11626,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13085,7 +13039,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13128,7 +13082,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13147,7 +13101,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13166,7 +13120,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13534,22 +13488,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13558,7 +13502,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13568,7 +13512,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13576,12 +13520,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13592,7 +13536,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13612,7 +13556,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13621,7 +13565,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13653,16 +13597,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13752,16 +13686,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13771,7 +13695,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13785,11 +13709,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13798,11 +13721,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13812,11 +13734,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_Classic_2.2_Antharas/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 83767d0906..8c7e3db695 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -593,12 +593,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -670,7 +670,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -687,7 +687,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -710,7 +710,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2005,11 +2005,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4265,7 +4261,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -4983,13 +4986,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5410,7 +5413,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5461,16 +5464,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5488,16 +5481,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10359,14 +10342,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10466,12 +10446,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10863,16 +10840,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11584,38 +11551,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11625,8 +11581,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11638,8 +11593,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11672,7 +11626,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13085,7 +13039,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13128,7 +13082,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13147,7 +13101,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13166,7 +13120,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13534,22 +13488,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13558,7 +13502,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13568,7 +13512,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13576,12 +13520,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13592,7 +13536,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13612,7 +13556,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13621,7 +13565,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13653,16 +13597,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13752,16 +13686,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13771,7 +13695,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13785,11 +13709,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13798,11 +13721,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13812,11 +13734,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_Classic_2.3_SevenSigns/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/EffectList.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/EffectList.java index 8a807f5d30..8b5f30779b 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/EffectList.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/EffectList.java @@ -712,7 +712,7 @@ public final class EffectList * @param info * @param removed */ - private synchronized void removeActive(BuffInfo info, boolean removed) + private void removeActive(BuffInfo info, boolean removed) { if (!_actives.isEmpty()) { @@ -790,7 +790,7 @@ public final class EffectList updateEffectList(true); } - private synchronized void addActive(BuffInfo info) + private void addActive(BuffInfo info) { final Skill skill = info.getSkill(); 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 5535df1de6..b398a405a3 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 @@ -51,7 +51,6 @@ import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.gameserver.GameTimeController; import org.l2jmobius.gameserver.ItemsAutoDestroy; import org.l2jmobius.gameserver.LoginServerThread; -import org.l2jmobius.gameserver.RecipeController; import org.l2jmobius.gameserver.ai.CreatureAI; import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.PlayerAI; @@ -115,6 +114,7 @@ import org.l2jmobius.gameserver.instancemanager.MatchingRoomManager; import org.l2jmobius.gameserver.instancemanager.MentorManager; import org.l2jmobius.gameserver.instancemanager.PunishmentManager; import org.l2jmobius.gameserver.instancemanager.QuestManager; +import org.l2jmobius.gameserver.instancemanager.SellBuffsManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.ZoneManager; import org.l2jmobius.gameserver.model.AccessLevel; @@ -593,12 +593,12 @@ public final class PlayerInstance extends Playable /** The Pet of the PlayerInstance */ private PetInstance _pet = null; /** Servitors of the PlayerInstance */ - private volatile Map _servitors = null; + private volatile Map _servitors = new ConcurrentHashMap<>(1); /** The Agathion of the PlayerInstance */ private int _agathionId = 0; // apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // after Freya players can control more than one tamed beast - private volatile Set _tamedBeast = null; + private volatile Set _tamedBeast = ConcurrentHashMap.newKeySet(); private boolean _minimapAllowed = false; @@ -670,7 +670,7 @@ public final class PlayerInstance extends Playable private volatile Map _lastCommissionInfos; @SuppressWarnings("rawtypes") - private volatile Map, AbstractEvent> _events; + private volatile Map, AbstractEvent> _events = new ConcurrentHashMap<>(); private boolean _isOnCustomEvent = false; // protects a char from aggro mobs when getting up from fake death @@ -687,7 +687,7 @@ public final class PlayerInstance extends Playable private int _expertiseWeaponPenalty = 0; private int _expertisePenaltyBonus = 0; - private volatile Map, AbstractRequest> _requests; + private volatile Map, AbstractRequest> _requests = new ConcurrentHashMap<>(); protected boolean _inventoryDisable = false; /** Player's cubics. */ @@ -710,7 +710,7 @@ public final class PlayerInstance extends Playable private final BlockList _blockList = new BlockList(this); - private volatile Map _transformSkills; + private final Map _transformSkills = new ConcurrentHashMap<>(); private ScheduledFuture _taskRentPet; private ScheduledFuture _taskWater; @@ -2005,11 +2005,7 @@ public final class PlayerInstance extends Playable public int getWeightPenalty() { - if (_dietMode) - { - return 0; - } - return _curWeightPenalty; + return _dietMode ? 0 : _curWeightPenalty; } /** @@ -4265,7 +4261,14 @@ public final class PlayerInstance extends Playable if ((targetPlayer.getPrivateStoreType() == PrivateStoreType.SELL) || (targetPlayer.getPrivateStoreType() == PrivateStoreType.PACKAGE_SELL)) { - sendPacket(new PrivateStoreListSell(this, targetPlayer)); + if (_isSellingBuffs) + { + SellBuffsManager.getInstance().sendBuffMenu(this, targetPlayer, 0); + } + else + { + sendPacket(new PrivateStoreListSell(this, targetPlayer)); + } } else if (targetPlayer.getPrivateStoreType() == PrivateStoreType.BUY) { @@ -4983,13 +4986,13 @@ public final class PlayerInstance extends Playable { stopFeed(); } - synchronized (this) + // synchronized (this) + // { + if (isFakeDeath()) { - if (isFakeDeath()) - { - stopFakeDeath(true); - } + stopFakeDeath(true); } + // } // Unsummon Cubics if (!_cubics.isEmpty()) @@ -5410,7 +5413,7 @@ public final class PlayerInstance extends Playable @Override public Map getServitors() { - return _servitors == null ? Collections.emptyMap() : _servitors; + return _servitors; } public Summon getAnyServitor() @@ -5461,16 +5464,6 @@ public final class PlayerInstance extends Playable public void addServitor(Summon servitor) { - if (_servitors == null) - { - synchronized (this) - { - if (_servitors == null) - { - _servitors = new ConcurrentHashMap<>(1); - } - } - } _servitors.put(servitor.getObjectId(), servitor); } @@ -5488,16 +5481,6 @@ public final class PlayerInstance extends Playable */ public void addTrainedBeast(TamedBeastInstance tamedBeast) { - if (_tamedBeast == null) - { - synchronized (this) - { - if (_tamedBeast == null) - { - _tamedBeast = ConcurrentHashMap.newKeySet(); - } - } - } _tamedBeast.add(tamedBeast); } @@ -10359,14 +10342,11 @@ public final class PlayerInstance extends Playable } // Trained beast is lost after teleport - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.deleteMe(); - } - _tamedBeast.clear(); + tamedBeast.deleteMe(); } + _tamedBeast.clear(); // Modify the position of the pet if necessary if (_pet != null) @@ -10466,12 +10446,9 @@ public final class PlayerInstance extends Playable super.reduceCurrentHp(value, attacker, skill, isDOT, directlyToHp, critical, reflect); // notify the tamed beast of attacks - if (_tamedBeast != null) + for (TamedBeastInstance tamedBeast : _tamedBeast) { - for (TamedBeastInstance tamedBeast : _tamedBeast) - { - tamedBeast.onOwnerGotAttacked(attacker); - } + tamedBeast.onOwnerGotAttacked(attacker); } } @@ -10863,16 +10840,6 @@ public final class PlayerInstance extends Playable LOGGER.log(Level.SEVERE, "deleteMe()", e); } - // Stop crafting, if in progress - try - { - RecipeController.getInstance().requestMakeItemAbort(this); - } - catch (Exception e) - { - LOGGER.log(Level.SEVERE, "deleteMe()", e); - } - // Cancel Attak or Cast try { @@ -11584,38 +11551,27 @@ public final class PlayerInstance extends Playable public void addTransformSkill(Skill skill) { - if (_transformSkills == null) - { - synchronized (this) - { - if (_transformSkills == null) - { - _transformSkills = new HashMap<>(); - } - } - } _transformSkills.put(skill.getId(), skill); } public boolean hasTransformSkill(Skill skill) { - return (_transformSkills != null) && (_transformSkills.get(skill.getId()) == skill); + return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); } public boolean hasTransformSkills() { - return (_transformSkills != null); + return !_transformSkills.isEmpty(); } public Collection getAllTransformSkills() { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.values() : Collections.emptyList(); + return _transformSkills.values(); } - public synchronized void removeAllTransformSkills() + public void removeAllTransformSkills() { - _transformSkills = null; + _transformSkills.clear(); } /** @@ -11625,8 +11581,7 @@ public final class PlayerInstance extends Playable @Override public final Skill getKnownSkill(int skillId) { - final Map transformSkills = _transformSkills; - return transformSkills != null ? transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); + return !_transformSkills.isEmpty() ? _transformSkills.getOrDefault(skillId, super.getKnownSkill(skillId)) : super.getKnownSkill(skillId); } /** @@ -11638,8 +11593,7 @@ public final class PlayerInstance extends Playable if (isTransformed()) { - final Map transformSkills = _transformSkills; - if (transformSkills != null) + if (!_transformSkills.isEmpty()) { // Include transformation skills and those skills that are allowed during transformation. currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); @@ -11672,7 +11626,7 @@ public final class PlayerInstance extends Playable } } // Include transformation skills. - currentSkills.addAll(transformSkills.values()); + currentSkills.addAll(_transformSkills.values()); } } @@ -13085,7 +13039,7 @@ public final class PlayerInstance extends Playable @Override public boolean canRevive() { - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13128,7 +13082,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13147,7 +13101,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13166,7 +13120,7 @@ public final class PlayerInstance extends Playable { return true; } - if (_events != null) + if (!_events.isEmpty()) { for (AbstractEvent listener : _events.values()) { @@ -13534,22 +13488,12 @@ public final class PlayerInstance extends Playable */ public boolean addRequest(AbstractRequest request) { - if (_requests == null) - { - synchronized (this) - { - if (_requests == null) - { - _requests = new ConcurrentHashMap<>(); - } - } - } return canRequest(request) && (_requests.putIfAbsent(request.getClass(), request) == null); } public boolean canRequest(AbstractRequest request) { - return (_requests != null) && _requests.values().stream().allMatch(request::canWorkWith); + return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); } /** @@ -13558,7 +13502,7 @@ public final class PlayerInstance extends Playable */ public boolean removeRequest(Class clazz) { - return (_requests != null) && (_requests.remove(clazz) != null); + return !_requests.isEmpty() && (_requests.remove(clazz) != null); } /** @@ -13568,7 +13512,7 @@ public final class PlayerInstance extends Playable */ public T getRequest(Class requestClass) { - return _requests != null ? requestClass.cast(_requests.get(requestClass)) : null; + return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; } /** @@ -13576,12 +13520,12 @@ public final class PlayerInstance extends Playable */ public boolean hasRequests() { - return (_requests != null) && !_requests.isEmpty(); + return !_requests.isEmpty(); } public boolean hasItemRequest() { - return (_requests != null) && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); } /** @@ -13592,7 +13536,7 @@ public final class PlayerInstance extends Playable @SafeVarargs public final boolean hasRequest(Class requestClass, Class... classes) { - if (_requests != null) + if (!_requests.isEmpty()) { for (Class clazz : classes) { @@ -13612,7 +13556,7 @@ public final class PlayerInstance extends Playable */ public boolean isProcessingItem(int objectId) { - return (_requests != null) && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); + return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); } /** @@ -13621,7 +13565,7 @@ public final class PlayerInstance extends Playable */ public void removeRequestsThatProcessesItem(int objectId) { - if (_requests != null) + if (!_requests.isEmpty()) { _requests.values().removeIf(req -> req.isUsing(objectId)); } @@ -13653,16 +13597,6 @@ public final class PlayerInstance extends Playable */ public Map getLastCommissionInfos() { - if (_lastCommissionInfos == null) - { - synchronized (this) - { - if (_lastCommissionInfos == null) - { - _lastCommissionInfos = new ConcurrentHashMap<>(); - } - } - } return _lastCommissionInfos; } @@ -13752,16 +13686,6 @@ public final class PlayerInstance extends Playable */ public boolean registerOnEvent(AbstractEvent event) { - if (_events == null) - { - synchronized (this) - { - if (_events == null) - { - _events = new ConcurrentHashMap<>(); - } - } - } return _events.putIfAbsent(event.getClass(), event) == null; } @@ -13771,7 +13695,7 @@ public final class PlayerInstance extends Playable */ public boolean removeFromEvent(AbstractEvent event) { - if (_events == null) + if (_events.isEmpty()) { return false; } @@ -13785,11 +13709,10 @@ public final class PlayerInstance extends Playable */ public > T getEvent(Class clazz) { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); } @@ -13798,11 +13721,10 @@ public final class PlayerInstance extends Playable */ public AbstractEvent getEvent() { - if (_events == null) + if (_events.isEmpty()) { return null; } - return _events.values().stream().findFirst().orElse(null); } @@ -13812,11 +13734,6 @@ public final class PlayerInstance extends Playable */ public boolean isOnEvent(Class> clazz) { - if (_events == null) - { - return false; - } - return _events.containsKey(clazz); } diff --git a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java index b1f9192ec0..1efe1daf3e 100644 --- a/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java +++ b/L2J_Mobius_Classic_2.4_SecretOfEmpire/java/org/l2jmobius/gameserver/model/actor/instance/TamedBeastInstance.java @@ -178,7 +178,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance } // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); } @@ -311,7 +311,7 @@ public final class TamedBeastInstance extends FeedableBeastInstance stopHpMpRegeneration(); // clean up variables - if ((_owner != null) && (_owner.getTrainedBeasts() != null)) + if (_owner != null) { _owner.getTrainedBeasts().remove(this); }