Probable fix for concurrent droplist shuffle.

This commit is contained in:
MobiusDev
2018-01-15 09:05:59 +00:00
parent 4a287a282d
commit be6b0566ee
6 changed files with 30 additions and 24 deletions

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.commons.util.Rnd;
@@ -103,8 +104,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.commons.util.Rnd;
@@ -103,8 +104,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.commons.util.Rnd;
@@ -103,8 +104,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.commons.util.Rnd;
@@ -103,8 +104,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.gameserver.data.xml.impl.NpcData; import com.l2jmobius.gameserver.data.xml.impl.NpcData;
@@ -94,8 +95,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
@@ -513,7 +514,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -522,7 +523,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }

View File

@@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config; import com.l2jmobius.Config;
import com.l2jmobius.commons.util.Rnd; import com.l2jmobius.commons.util.Rnd;
@@ -103,8 +104,8 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
private Map<AISkillScope, List<Skill>> _aiSkillLists; private Map<AISkillScope, List<Skill>> _aiSkillLists;
private Set<Integer> _clans; private Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds; private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath; private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil; private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new ArrayList<>(); _dropListDeath = new CopyOnWriteArrayList<>();
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new ArrayList<>(); _dropListSpoil = new CopyOnWriteArrayList<>();
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }