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 */
private PetInstance _pet = null;
/** 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 */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -671,10 +671,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// 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 _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;
/** Player's cubics. */
@@ -11733,7 +11733,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13215,14 +13215,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13258,14 +13255,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13277,14 +13271,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13296,14 +13287,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13669,7 +13657,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13712,18 +13700,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13732,7 +13716,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13741,10 +13725,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13872,10 +13853,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -599,12 +599,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** 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 */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -673,10 +673,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// 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 _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;
/** Player's cubics. */
@@ -11740,7 +11740,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13222,14 +13222,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13265,14 +13262,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13284,14 +13278,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13303,14 +13294,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13676,7 +13664,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13719,18 +13707,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13739,7 +13723,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13748,10 +13732,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13879,10 +13860,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -601,12 +601,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** 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 */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// 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 _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;
/** Player's cubics. */
@@ -11742,7 +11742,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13225,14 +13225,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13268,14 +13265,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13287,14 +13281,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13306,14 +13297,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13679,7 +13667,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13722,18 +13710,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13742,7 +13726,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13751,10 +13735,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13882,10 +13863,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -605,12 +605,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar
// TODO: This needs to be better integrated and saved/loaded
@@ -677,10 +677,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -701,7 +701,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -724,7 +724,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater;
@@ -11722,7 +11722,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13204,14 +13204,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13247,14 +13244,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13266,14 +13260,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13285,14 +13276,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13650,7 +13638,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13693,18 +13681,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13713,7 +13697,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13722,10 +13706,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13853,10 +13834,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar
// TODO: This needs to be better integrated and saved/loaded
@@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater;
@@ -11712,7 +11712,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13194,14 +13194,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13237,14 +13234,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13256,14 +13250,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13275,14 +13266,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13640,7 +13628,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13683,18 +13671,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13703,7 +13687,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13712,10 +13696,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13842,10 +13823,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar
// TODO: This needs to be better integrated and saved/loaded
@@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater;
@@ -11712,7 +11712,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13194,14 +13194,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13237,14 +13234,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13256,14 +13250,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13275,14 +13266,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13640,7 +13628,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13683,18 +13671,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13703,7 +13687,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13712,10 +13696,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13842,10 +13823,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -603,12 +603,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
// client radar
// TODO: This needs to be better integrated and saved/loaded
@@ -675,10 +675,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -699,7 +699,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -722,7 +722,7 @@ public final class PlayerInstance extends Playable
private final BlockList _blockList = new BlockList(this);
private Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private final Map<Integer, Skill> _transformSkills = new ConcurrentHashMap<>();
private ScheduledFuture<?> _taskRentPet;
private ScheduledFuture<?> _taskWater;
@@ -11718,7 +11718,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13200,14 +13200,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13243,14 +13240,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13262,14 +13256,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13281,14 +13272,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13646,7 +13634,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13689,18 +13677,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13709,7 +13693,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13718,10 +13702,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13848,10 +13829,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -518,7 +518,7 @@ public final class PlayerInstance extends Playable
private long _offlineShopStart = 0;
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 */
private final Map<Integer, RecipeList> _dwarvenRecipeBook = new ConcurrentHashMap<>();
@@ -595,12 +595,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -669,10 +669,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -689,7 +689,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -11575,7 +11575,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13058,14 +13058,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13101,14 +13098,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13120,14 +13114,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13139,14 +13130,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13512,7 +13500,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13555,18 +13543,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13575,7 +13559,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13584,10 +13568,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13715,10 +13696,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -596,12 +596,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -670,10 +670,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -690,7 +690,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -11582,7 +11582,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13065,14 +13065,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13108,14 +13105,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13127,14 +13121,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13146,14 +13137,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13519,7 +13507,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13562,18 +13550,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13582,7 +13566,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13591,10 +13575,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13722,10 +13703,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -688,7 +688,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13050,14 +13050,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13093,14 +13090,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13112,14 +13106,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13131,14 +13122,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13547,18 +13535,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13576,10 +13560,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -688,7 +688,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13050,14 +13050,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13093,14 +13090,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13112,14 +13106,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13131,14 +13122,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13547,18 +13535,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13576,10 +13560,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}
@@ -594,12 +594,12 @@ public final class PlayerInstance extends Playable
/** The Pet of the PlayerInstance */
private PetInstance _pet = null;
/** Servitors of the PlayerInstance */
private volatile Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
private final Map<Integer, Summon> _servitors = new ConcurrentHashMap<>(1);
/** The Agathion of the PlayerInstance */
private int _agathionId = 0;
// apparently, a PlayerInstance CAN have both a summon AND a tamed beast at the same time!!
// after Freya players can control more than one tamed beast
private volatile Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private final Set<TamedBeastInstance> _tamedBeast = ConcurrentHashMap.newKeySet();
private boolean _minimapAllowed = false;
@@ -668,10 +668,10 @@ public final class PlayerInstance extends Playable
private long _spawnProtectEndTime = 0;
private long _teleportProtectEndTime = 0;
private volatile Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos;
private final Map<Integer, ExResponseCommissionInfo> _lastCommissionInfos = new ConcurrentHashMap<>();
@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;
// protects a char from aggro mobs when getting up from fake death
@@ -688,7 +688,7 @@ public final class PlayerInstance extends Playable
private int _expertiseWeaponPenalty = 0;
private int _expertisePenaltyBonus = 0;
private volatile Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
private final Map<Class<? extends AbstractRequest>, AbstractRequest> _requests = new ConcurrentHashMap<>();
protected boolean _inventoryDisable = false;
/** Player's cubics. */
@@ -11567,7 +11567,7 @@ public final class PlayerInstance extends Playable
public boolean hasTransformSkill(Skill skill)
{
return !_transformSkills.isEmpty() && (_transformSkills.get(skill.getId()) == skill);
return _transformSkills.get(skill.getId()) == skill;
}
public boolean hasTransformSkills()
@@ -13050,14 +13050,11 @@ public final class PlayerInstance extends Playable
@Override
public boolean canRevive()
{
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
if (listener.isOnEvent(this) && !listener.canRevive(this))
{
return false;
}
return false;
}
}
return _canRevive;
@@ -13093,14 +13090,11 @@ public final class PlayerInstance extends Playable
{
return true;
}
if (!_events.isEmpty())
for (AbstractEvent<?> listener : _events.values())
{
for (AbstractEvent<?> listener : _events.values())
if (listener.isOnEvent(this))
{
if (listener.isOnEvent(this))
{
return true;
}
return true;
}
}
return super.isOnEvent();
@@ -13112,14 +13106,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return false;
@@ -13131,14 +13122,11 @@ public final class PlayerInstance extends Playable
{
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))
{
return true;
}
return true;
}
}
return isAffected(EffectFlag.PROTECT_DEATH_PENALTY);
@@ -13504,7 +13492,7 @@ public final class PlayerInstance extends Playable
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)
{
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)
{
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()
{
return !_requests.isEmpty() && _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
return _requests.values().stream().anyMatch(AbstractRequest::isItemRequest);
}
/**
@@ -13547,18 +13535,14 @@ public final class PlayerInstance extends Playable
@SafeVarargs
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)
if (_requests.containsKey(clazz))
{
if (_requests.containsKey(clazz))
{
return true;
}
return true;
}
return _requests.containsKey(requestClass);
}
return false;
return _requests.containsKey(requestClass);
}
/**
@@ -13567,7 +13551,7 @@ public final class PlayerInstance extends Playable
*/
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));
}
/**
@@ -13576,10 +13560,7 @@ public final class PlayerInstance extends Playable
*/
public void removeRequestsThatProcessesItem(int objectId)
{
if (!_requests.isEmpty())
{
_requests.values().removeIf(req -> req.isUsing(objectId));
}
_requests.values().removeIf(req -> req.isUsing(objectId));
}
/**
@@ -13706,10 +13687,6 @@ public final class PlayerInstance extends Playable
*/
public boolean removeFromEvent(AbstractEvent<?> event)
{
if (_events.isEmpty())
{
return false;
}
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)
{
if (_events.isEmpty())
{
return 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()
{
if (_events.isEmpty())
{
return null;
}
return _events.values().stream().findFirst().orElse(null);
}