Use of simple ArrayList to store drops.

This commit is contained in:
MobiusDevelopment 2021-07-22 10:21:06 +00:00
parent db65b65a19
commit 0e745ad289
23 changed files with 167 additions and 161 deletions

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.commons.util.Rnd;
@ -101,8 +100,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
@ -601,7 +600,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -610,7 +609,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -633,12 +632,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.util.Rnd; import org.l2jmobius.commons.util.Rnd;
@ -101,8 +100,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private double _collisionRadiusGrown; private double _collisionRadiusGrown;
private double _collisionHeightGrown; private double _collisionHeightGrown;
@ -601,7 +600,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -610,7 +609,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -633,12 +632,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -663,7 +662,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -672,7 +671,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -696,12 +695,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -663,7 +662,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -672,7 +671,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -696,12 +695,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -663,7 +662,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -672,7 +671,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -696,12 +695,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -112,8 +111,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -678,7 +677,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -687,7 +686,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -711,12 +710,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -112,8 +111,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -678,7 +677,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -687,7 +686,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -711,12 +710,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -112,8 +111,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -678,7 +677,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -687,7 +686,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -711,12 +710,14 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -110,8 +109,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -662,7 +661,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -671,7 +670,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -695,12 +694,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -677,7 +676,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -686,7 +685,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -710,12 +709,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -677,7 +676,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -686,7 +685,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -710,12 +709,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);

View File

@ -22,7 +22,6 @@ 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 java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.Config; import org.l2jmobius.Config;
@ -111,8 +110,8 @@ public class NpcTemplate extends CreatureTemplate 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 CopyOnWriteArrayList<DropHolder> _dropListDeath; private List<DropHolder> _dropListDeath;
private CopyOnWriteArrayList<DropHolder> _dropListSpoil; private List<DropHolder> _dropListSpoil;
private float _collisionRadiusGrown; private float _collisionRadiusGrown;
private float _collisionHeightGrown; private float _collisionHeightGrown;
private int _mpRewardValue; private int _mpRewardValue;
@ -677,7 +676,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListDeath == null) if (_dropListDeath == null)
{ {
_dropListDeath = new CopyOnWriteArrayList<>(); _dropListDeath = new ArrayList<>(1);
} }
_dropListDeath.add(dropHolder); _dropListDeath.add(dropHolder);
} }
@ -686,7 +685,7 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
{ {
if (_dropListSpoil == null) if (_dropListSpoil == null)
{ {
_dropListSpoil = new CopyOnWriteArrayList<>(); _dropListSpoil = new ArrayList<>(1);
} }
_dropListSpoil.add(dropHolder); _dropListSpoil.add(dropHolder);
} }
@ -710,12 +709,13 @@ public class NpcTemplate extends CreatureTemplate implements IIdentifiable
public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer) public Collection<ItemHolder> calculateDrops(DropType dropType, Creature victim, Creature killer)
{ {
if (getDropList(dropType) == null) final List<DropHolder> templateList = getDropList(dropType);
if (templateList == null)
{ {
return null; return null;
} }
final List<DropHolder> dropList = new ArrayList<>(getDropList(dropType)); final List<DropHolder> dropList = new ArrayList<>(templateList);
// randomize drop order // randomize drop order
Collections.shuffle(dropList); Collections.shuffle(dropList);