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.Map;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config;
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 Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil;
private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown;
private double _collisionHeightGrown;
private int _mpRewardValue;
@ -640,7 +641,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{
if (_dropListDeath == null)
{
_dropListDeath = new ArrayList<>();
_dropListDeath = new CopyOnWriteArrayList<>();
}
_dropListDeath.add(dropHolder);
}
@ -649,7 +650,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{
if (_dropListSpoil == null)
{
_dropListSpoil = new ArrayList<>();
_dropListSpoil = new CopyOnWriteArrayList<>();
}
_dropListSpoil.add(dropHolder);
}

View File

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

View File

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

View File

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

View File

@ -22,6 +22,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import com.l2jmobius.Config;
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 Set<Integer> _clans;
private Set<Integer> _ignoreClanNpcIds;
private List<DropHolder> _dropListDeath;
private List<DropHolder> _dropListSpoil;
private CopyOnWriteArrayList<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown;
private double _collisionHeightGrown;
@ -513,7 +514,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{
if (_dropListDeath == null)
{
_dropListDeath = new ArrayList<>();
_dropListDeath = new CopyOnWriteArrayList<>();
}
_dropListDeath.add(dropHolder);
}
@ -522,7 +523,7 @@ public final class L2NpcTemplate extends L2CharTemplate implements IIdentifiable
{
if (_dropListSpoil == null)
{
_dropListSpoil = new ArrayList<>();
_dropListSpoil = new CopyOnWriteArrayList<>();
}
_dropListSpoil.add(dropHolder);
}

View File

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