Code cleanup after latest PlayerInstance changes.

This commit is contained in:
MobiusDevelopment
2019-07-02 13:41:38 +00:00
parent c14b8f9b18
commit 35e41c7989
13 changed files with 341 additions and 713 deletions
@@ -597,12 +597,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -671,10 +671,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
@@ -691,7 +691,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0; private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11733,7 +11733,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13214,8 +13214,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13224,7 +13222,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13258,8 +13255,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13267,7 +13262,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13277,8 +13271,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13286,7 +13278,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13296,8 +13287,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13305,7 +13294,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13669,7 +13657,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13678,7 +13666,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13688,7 +13676,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13701,7 +13689,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13711,8 +13699,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13723,8 +13709,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13732,7 +13716,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13740,12 +13724,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13872,10 +13853,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13886,10 +13863,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13898,10 +13871,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -599,12 +599,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -673,10 +673,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
@@ -693,7 +693,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0; private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11740,7 +11740,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13221,8 +13221,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13231,7 +13229,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13265,8 +13262,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13274,7 +13269,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13284,8 +13278,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13293,7 +13285,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13303,8 +13294,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13312,7 +13301,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13676,7 +13664,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13685,7 +13673,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13695,7 +13683,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13708,7 +13696,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13718,8 +13706,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13730,8 +13716,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13739,7 +13723,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13747,12 +13731,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13879,10 +13860,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13893,10 +13870,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13905,10 +13878,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -601,12 +601,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // protects a char from aggro mobs when getting up from fake death
@@ -695,7 +695,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0; private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11742,7 +11742,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13224,8 +13224,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13234,7 +13232,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13268,8 +13265,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13277,7 +13272,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13287,8 +13281,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13296,7 +13288,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13306,8 +13297,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13315,7 +13304,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13679,7 +13667,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13688,7 +13676,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13698,7 +13686,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13711,7 +13699,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13721,8 +13709,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13733,8 +13719,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13742,7 +13726,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13750,12 +13734,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13882,10 +13863,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13896,10 +13873,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13908,10 +13881,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -605,12 +605,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar // client radar
// TODO: This needs to be better integrated and saved/loaded // 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 _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>(); private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -724,7 +724,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this); private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>(); private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet; private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater; private ScheduledFuture<?> _taskWater;
@@ -11722,7 +11722,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13203,8 +13203,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13213,7 +13211,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13247,8 +13244,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13256,7 +13251,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13266,8 +13260,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13275,7 +13267,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13285,8 +13276,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13294,7 +13283,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13650,7 +13638,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13659,7 +13647,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13669,7 +13657,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13682,7 +13670,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13692,8 +13680,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13704,8 +13690,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13713,7 +13697,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13721,12 +13705,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13853,10 +13834,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13867,10 +13844,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13879,10 +13852,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar // client radar
// TODO: This needs to be better integrated and saved/loaded // 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 _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>(); private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this); private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>(); private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet; private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater; private ScheduledFuture<?> _taskWater;
@@ -11712,7 +11712,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13193,8 +13193,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13203,7 +13201,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13237,8 +13234,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13246,7 +13241,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13256,8 +13250,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13265,7 +13257,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13275,8 +13266,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13284,7 +13273,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13640,7 +13628,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13649,7 +13637,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13659,7 +13647,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13672,7 +13660,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13682,8 +13670,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13694,8 +13680,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13703,7 +13687,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13711,12 +13695,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13842,10 +13823,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13856,10 +13833,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13868,10 +13841,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar // client radar
// TODO: This needs to be better integrated and saved/loaded // 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 _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>(); private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this); private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>(); private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet; private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater; private ScheduledFuture<?> _taskWater;
@@ -11712,7 +11712,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13193,8 +13193,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13203,7 +13201,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13237,8 +13234,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13246,7 +13241,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13256,8 +13250,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13265,7 +13257,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13275,8 +13266,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13284,7 +13273,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13640,7 +13628,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13649,7 +13637,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13659,7 +13647,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13672,7 +13660,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13682,8 +13670,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13694,8 +13680,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13703,7 +13687,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13711,12 +13695,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13842,10 +13823,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13856,10 +13833,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13868,10 +13841,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar // client radar
// TODO: This needs to be better integrated and saved/loaded // 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 _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>(); private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this); private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>(); private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet; private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater; private ScheduledFuture<?> _taskWater;
@@ -11718,7 +11718,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13199,8 +13199,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13209,7 +13207,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13243,8 +13240,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13252,7 +13247,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13262,8 +13256,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13271,7 +13263,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13281,8 +13272,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13290,7 +13279,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13646,7 +13634,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13655,7 +13643,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13665,7 +13653,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13678,7 +13666,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13688,8 +13676,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13700,8 +13686,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13709,7 +13693,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13717,12 +13701,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13848,10 +13829,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13862,10 +13839,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13874,10 +13847,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -518,7 +518,7 @@ public final class PlayerInstance extends Playable
private long _offlineShopStart = 0; private long _offlineShopStart = 0;
private Transform _transformation; private Transform _transformation;
private volatile Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>(); private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
/** The table containing all RecipeList of the PlayerInstance */ /** The table containing all RecipeList of the PlayerInstance */
private final Map<Integer, RecipeList> _dwarvenRecipeBook = new ConcurrentHashMap<>(); private final Map<Integer, RecipeList> _dwarvenRecipeBook = new ConcurrentHashMap<>();
@@ -595,12 +595,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -669,10 +669,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11575,7 +11575,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13057,8 +13057,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13067,7 +13065,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13101,8 +13098,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13110,7 +13105,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13120,8 +13114,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13129,7 +13121,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13139,8 +13130,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13148,7 +13137,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13512,7 +13500,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13521,7 +13509,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13531,7 +13519,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13544,7 +13532,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13554,8 +13542,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13566,8 +13552,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13575,7 +13559,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13583,12 +13567,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13715,10 +13696,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13729,10 +13706,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13741,10 +13714,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -596,12 +596,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -670,10 +670,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11582,7 +11582,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13064,8 +13064,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13074,7 +13072,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13108,8 +13105,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13117,7 +13112,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13127,8 +13121,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13136,7 +13128,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13146,8 +13137,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13155,7 +13144,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13519,7 +13507,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13528,7 +13516,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13538,7 +13526,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13551,7 +13539,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13561,8 +13549,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13573,8 +13559,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13582,7 +13566,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13590,12 +13574,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13722,10 +13703,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13736,10 +13713,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13748,10 +13721,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13049,8 +13049,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13059,7 +13057,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13093,8 +13090,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13102,7 +13097,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13112,8 +13106,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13121,7 +13113,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13131,8 +13122,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13140,7 +13129,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13513,7 +13501,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13523,7 +13511,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13536,7 +13524,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13546,8 +13534,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13558,8 +13544,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13575,12 +13559,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13720,10 +13697,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13732,10 +13705,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13049,8 +13049,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13059,7 +13057,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13093,8 +13090,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13102,7 +13097,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13112,8 +13106,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13121,7 +13113,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13131,8 +13122,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13140,7 +13129,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13513,7 +13501,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13523,7 +13511,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13536,7 +13524,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13546,8 +13534,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13558,8 +13544,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13575,12 +13559,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13720,10 +13697,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13732,10 +13705,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */ /** The Pet of the PlayerInstance */
private PetInstance _pet = null; private PetInstance _pet = null;
/** Servitors of the PlayerInstance */ /** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1); private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */ /** The Agathion of the PlayerInstance */
private int _agathionId = 0; private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!! // 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 // after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet(); private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false; private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0; private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0; private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos; private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@SuppressWarnings("rawtypes") @SuppressWarnings("rawtypes")
private volatile Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractEvent>, AbstractEvent<?>> _events = new ConcurrentHashMap<>();
private boolean _isOnCustomEvent = false; private boolean _isOnCustomEvent = false;
// protects a char from aggro mobs when getting up from fake death // 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 _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0; private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>(); private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false; protected boolean _inventoryDisable = false;
/** Player's cubics. */ /** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill) public boolean hasTransformSkill(Skill skill)
{ {
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill); return _transformSkills.get(skill.getId()) == skill;
} }
public boolean hasTransformSkills() public boolean hasTransformSkills()
@@ -13049,8 +13049,6 @@ public final class PlayerInstance extends Playable
*/ */
@Override @Override
public boolean canRevive() public boolean canRevive()
{
if (!_events.isEmpty())
{ {
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
@@ -13059,7 +13057,6 @@ public final class PlayerInstance extends Playable
return false; return false;
} }
} }
}
return _canRevive; return _canRevive;
} }
@@ -13093,8 +13090,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this)) if (listener.isOnEvent(this))
@@ -13102,7 +13097,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return super.isOnEvent(); return super.isOnEvent();
} }
@@ -13112,8 +13106,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingExit(this)) if (listener.isOnEvent(this) && listener.isBlockingExit(this))
@@ -13121,7 +13113,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return false; return false;
} }
@@ -13131,8 +13122,6 @@ public final class PlayerInstance extends Playable
{ {
return true; return true;
} }
if (!_events.isEmpty())
{
for (AbstractEvent<?> listener : _events.values()) for (AbstractEvent<?> listener : _events.values())
{ {
if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this)) if (listener.isOnEvent(this) && listener.isBlockingDeathPenalty(this))
@@ -13140,7 +13129,6 @@ public final class PlayerInstance extends Playable
return true; return true;
} }
} }
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY); return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
} }
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
public boolean canRequest(AbstractRequest request) public boolean canRequest(AbstractRequest request)
{ {
return !_requests.isEmpty() && _requests.values().stream().allMatch(request::canWorkWith); return _requests.values().stream().allMatch(request::canWorkWith);
} }
/** /**
@@ -13513,7 +13501,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeRequest(Class<? extends AbstractRequest> clazz) public boolean removeRequest(Class<? extends AbstractRequest> clazz)
{ {
return !_requests.isEmpty() && (_requests.remove(clazz) != null); return _requests.remove(clazz) != null;
} }
/** /**
@@ -13523,7 +13511,7 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractRequest> T getRequest(Class<T> requestClass) public <T extends AbstractRequest> T getRequest(Class<T> requestClass)
{ {
return !_requests.isEmpty() ? requestClass.cast(_requests.get(requestClass)) : null; return requestClass.cast(_requests.get(requestClass));
} }
/** /**
@@ -13536,7 +13524,7 @@ public final class PlayerInstance extends Playable
public boolean hasItemRequest() public boolean hasItemRequest()
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest); return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
} }
/** /**
@@ -13546,8 +13534,6 @@ public final class PlayerInstance extends Playable
*/ */
@SafeVarargs @SafeVarargs
public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes) public final boolean hasRequest(Class<? extends AbstractRequest> requestClass, Class<? extends AbstractRequest>... classes)
{
if (!_requests.isEmpty())
{ {
for (Class<? extends AbstractRequest> clazz : classes) for (Class<? extends AbstractRequest> clazz : classes)
{ {
@@ -13558,8 +13544,6 @@ public final class PlayerInstance extends Playable
} }
return _requests.containsKey(requestClass); return _requests.containsKey(requestClass);
} }
return false;
}
/** /**
* @param objectId * @param objectId
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/ */
public boolean isProcessingItem(int objectId) public boolean isProcessingItem(int objectId)
{ {
return !_requests.isEmpty() && _requests.values().stream().anyMatch(req -> req.isUsing(objectId)); return _requests.values().stream().anyMatch(req -> req.isUsing(objectId));
} }
/** /**
@@ -13575,12 +13559,9 @@ public final class PlayerInstance extends Playable
* @param objectId * @param objectId
*/ */
public void removeRequestsThatProcessesItem(int objectId) public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{ {
_requests.values().removeIf(req -> req.isUsing(objectId)); _requests.values().removeIf(req -> req.isUsing(objectId));
} }
}
/** /**
* @return the prime shop points of the player. * @return the prime shop points of the player.
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/ */
public boolean removeFromEvent(AbstractEvent<?> event) public boolean removeFromEvent(AbstractEvent<?> event)
{ {
if (_events.isEmpty())
{
return false;
}
return _events.remove(event.getClass()) != null; return _events.remove(event.getClass()) != null;
} }
@@ -13720,10 +13697,6 @@ public final class PlayerInstance extends Playable
*/ */
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null);
} }
@@ -13732,10 +13705,6 @@ public final class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null); return _events.values().stream().findFirst().orElse(null);
} }