Removal of CopyOnWriteArrayList from Player damage taken.

This commit is contained in:
MobiusDevelopment
2022-07-18 08:16:53 +00:00
parent 52fa8ed00a
commit 03aef1c2bd
10 changed files with 120 additions and 70 deletions

View File

@@ -35,7 +35,6 @@ import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
@@ -494,7 +493,7 @@ public class Player extends Playable
/** The PvP Flag state of the Player (0=White, 1=Purple) */
private byte _pvpFlag;
private final List<DamageTakenHolder> _lastDamageTaken = new CopyOnWriteArrayList<>();
private final List<DamageTakenHolder> _lastDamageTaken = new ArrayList<>(21);
/** The Fame of this Player */
private int _fame;
@@ -5085,16 +5084,22 @@ public class Player extends Playable
return;
}
_lastDamageTaken.add(new DamageTakenHolder(attacker, skillId, damage));
while (_lastDamageTaken.size() > 20)
synchronized (_lastDamageTaken)
{
_lastDamageTaken.remove(0);
_lastDamageTaken.add(new DamageTakenHolder(attacker, skillId, damage));
if (_lastDamageTaken.size() > 20)
{
_lastDamageTaken.remove(0);
}
}
}
public void clearDamageTaken()
{
_lastDamageTaken.clear();
synchronized (_lastDamageTaken)
{
_lastDamageTaken.clear();
}
}
private Collection<Item> onDieDropItem(Creature killer)
@@ -10458,7 +10463,7 @@ public class Player extends Playable
instance.doRevive(this);
}
_lastDamageTaken.clear();
clearDamageTaken();
// Stop Tranquil Soul effect.
getEffectList().stopSkillEffects(SkillFinishType.REMOVED, CommonSkill.TRANQUIL_SOUL.getSkill());