Prevent converting skill targets to arrays.

This commit is contained in:
MobiusDevelopment 2022-12-30 22:59:01 +00:00
parent 15e8e6842e
commit e28b5bce65
226 changed files with 1286 additions and 1486 deletions

View File

@ -17,6 +17,7 @@
package ai.areas.BeastFarm;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ -512,11 +513,11 @@ public class FeedableBeasts extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
// this behavior is only run when the target of skill is the passed npc (chest)
// i.e. when the player is attempting to open the chest using a skill
if (!CommonUtil.contains(targets, npc))
if (!targets.contains(npc))
{
return super.onSkillSee(npc, caster, skill, targets, isSummon);
}

View File

@ -16,7 +16,8 @@
*/
package ai.areas.MonasteryOfSilence;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.commons.util.Rnd;
@ -103,11 +104,11 @@ public class MonasteryOfSilence extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (CommonUtil.contains(mobs2, npc.getId()))
{
if (skill.hasEffectType(EffectType.AGGRESSION) && (targets.length != 0))
if (skill.hasEffectType(EffectType.AGGRESSION) && !targets.isEmpty())
{
for (WorldObject obj : targets)
{
@ -129,7 +130,7 @@ public class MonasteryOfSilence extends AbstractNpcAI
{
if (CommonUtil.contains(mobs1, npc.getId()))
{
final ArrayList<Playable> result = new ArrayList<>();
final List<Playable> result = new LinkedList<>();
for (WorldObject obj : World.getInstance().getVisibleObjects(npc, WorldObject.class))
{
if ((obj instanceof Player) || (obj instanceof Pet))
@ -140,12 +141,12 @@ public class MonasteryOfSilence extends AbstractNpcAI
}
}
}
if (!result.isEmpty() && (result.size() != 0))
if (!result.isEmpty())
{
final Object[] characters = result.toArray();
for (Object obj : characters)
for (Playable obj : result)
{
final Playable target = (Playable) (obj instanceof Player ? obj : ((Summon) obj).getOwner());
final Playable target = obj instanceof Player ? obj : ((Summon) obj).getOwner();
if ((target.getActiveWeaponInstance() != null) && !npc.isInCombat() && (npc.getTarget() == null))
{
npc.setTarget(target);

View File

@ -17,6 +17,7 @@
package ai.bosses.Orfen;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.Config;
@ -235,7 +236,7 @@ public class Orfen extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (npc.getId() == ORFEN)
{

View File

@ -16,6 +16,8 @@
*/
package ai.others;
import java.util.List;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -60,7 +62,7 @@ public class Chests extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (npc instanceof Chest)
{

View File

@ -16,6 +16,7 @@
*/
package custom.SellBuff;
import java.util.Collections;
import java.util.StringTokenizer;
import org.l2jmobius.Config;
@ -407,7 +408,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
skillToBuy.activateSkill(seller, player);
skillToBuy.activateSkill(seller, Collections.singletonList(player));
}
else
{

View File

@ -16,7 +16,6 @@
*/
package handlers.effecthandlers;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
@ -78,11 +77,10 @@ public class Confuse extends AbstractEffect
{
info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_CONFUSED);
final List<Creature> targetList = new ArrayList<>();
// Getting the possible targets
World.getInstance().forEachVisibleObject(info.getEffected(), Creature.class, targetList::add);
final List<Creature> targetList = World.getInstance().getVisibleObjects(info.getEffected(), Creature.class);
// if there is no target, exit function
// If there is no target, exit function
if (!targetList.isEmpty())
{
// Choosing randomly a new target

View File

@ -140,8 +140,7 @@ public class TriggerSkillByAttack extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -78,8 +78,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -95,8 +95,7 @@ public class TriggerSkillByDamage extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -85,8 +85,7 @@ public class TriggerSkillBySkill extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
public class Area implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final Creature origin;
@ -50,15 +50,13 @@ public class Area implements ITargetTypeHandler
{
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
origin = target;
@ -93,12 +91,7 @@ public class Area implements ITargetTypeHandler
}
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,25 +35,22 @@ import org.l2jmobius.gameserver.util.Util;
public class AreaCorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || !target.isAttackable() || !target.isDead())
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
targetList.add(target);
if (onlyFirst)
{
return new Creature[]
{
target
};
return targetList;
}
final List<Creature> targetList = new ArrayList<>();
targetList.add(target);
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
World.getInstance().forEachVisibleObject(creature, Creature.class, obj ->
{
@ -70,11 +67,7 @@ public class AreaCorpseMob implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,8 +16,8 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@ -38,31 +38,28 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class AreaFriendly implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
if (!checkTarget(player, target) && (skill.getCastRange() >= 0))
{
player.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
if (player.getActingPlayer().isInOlympiadMode())
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
targetList.add(target); // Add target to target list
if (target != null)
{
@ -83,11 +80,7 @@ public class AreaFriendly implements ITargetTypeHandler
});
}
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
private boolean checkTarget(Player player, Creature target)

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,21 +33,19 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class AreaSummon implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Creature targetCreature = creature.getSummon();
if ((targetCreature == null) || !targetCreature.isServitor() || targetCreature.isDead())
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
targetCreature
};
targetList.add(targetCreature);
return targetList;
}
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
@ -77,12 +75,7 @@ public class AreaSummon implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class Aura implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
{
@ -63,18 +63,16 @@ public class Aura implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,32 +33,29 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class AuraCorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
// Go through the Creature _knownList
final int maxTargets = skill.getAffectLimit();
for (Attackable obj : World.getInstance().getVisibleObjectsInRange(creature, Attackable.class, skill.getAffectRange()))
{
if (obj.isDead())
{
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@ -37,9 +37,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class AuraFriendly implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
final int maxTargets = skill.getAffectLimit();
World.getInstance().forEachVisibleObject(player, Creature.class, obj ->
@ -57,12 +57,7 @@ public class AuraFriendly implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
private boolean checkTarget(Player player, Creature target)

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
public class BehindArea implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final Creature origin;
@ -50,19 +50,16 @@ public class BehindArea implements ITargetTypeHandler
{
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
{
return EMPTY_TARGET_LIST;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
return targetList;
}
origin = target;
targetList.add(origin); // Add target to target list
if (onlyFirst)
{
return targetList;
}
}
else
{
@ -103,12 +100,7 @@ public class BehindArea implements ITargetTypeHandler
}
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class BehindAura implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
final int maxTargets = skill.getAffectLimit();
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
@ -52,23 +52,20 @@ public class BehindAura implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,31 +35,27 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Clan implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if (creature.isPlayable())
{
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
targetList.add(player);
@ -115,32 +111,25 @@ public class Clan implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
targetList.add(obj);
}
}
}
else if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
targetList.add(creature);
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new Creature[]
{
creature
};
return targetList;
}
targetList.add(creature);
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
@ -156,7 +145,7 @@ public class Clan implements ITargetTypeHandler
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,20 +33,19 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class ClanMember implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
@ -55,16 +54,14 @@ public class ClanMember implements ITargetTypeHandler
break;
}
}
if (targetList.isEmpty())
{
targetList.add(npc);
}
}
else
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,13 +33,13 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class CommandChannel implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
targetList.add(player);
@ -55,7 +55,7 @@ public class CommandChannel implements ITargetTypeHandler
// if player in not in party
if (party == null)
{
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
// Get all visible objects in a spherical area near the Creature
@ -78,7 +78,7 @@ public class CommandChannel implements ITargetTypeHandler
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class CorpseClan implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<WorldObject> targetList = new ArrayList<>();
if (creature.isPlayable())
@ -45,15 +45,13 @@ public class CorpseClan implements ITargetTypeHandler
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (player.isInOlympiadMode())
{
return new WorldObject[]
{
player
};
targetList.add(player);
return targetList;
}
final Clan clan = player.getClan();
@ -103,37 +101,30 @@ public class CorpseClan implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new WorldObject[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
}
else if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
targetList.add(creature);
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new WorldObject[]
{
creature
};
return targetList;
}
targetList.add(creature);
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (npc.isInMyClan(newTarget))
@ -148,7 +139,7 @@ public class CorpseClan implements ITargetTypeHandler
}
}
return targetList.toArray(new WorldObject[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
@ -33,28 +36,25 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class CorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target == null) || !target.isAttackable() || !target.isDead())
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
if (skill.hasEffectType(EffectType.SUMMON) && target.isServitor() && (target.getActingPlayer() != null) && (target.getActingPlayer().getObjectId() == creature.getObjectId()))
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
if (skill.hasEffectType(EffectType.HP_DRAIN) && ((Attackable) target).isOldCorpse(creature.getActingPlayer(), Config.CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY, true))
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -30,20 +33,18 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class EnemySummon implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target != null) && target.isSummon())
{
final Summon targetSummon = (Summon) target;
if ((creature.isPlayer() && (creature.getSummon() != targetSummon) && !targetSummon.isDead() && ((targetSummon.getOwner().getPvpFlag() != 0) || (targetSummon.getOwner().getKarma() > 0))) || (targetSummon.getOwner().isInsideZone(ZoneId.PVP) && creature.getActingPlayer().isInsideZone(ZoneId.PVP)) || (targetSummon.getOwner().isInDuel() && creature.getActingPlayer().isInDuel() && (targetSummon.getOwner().getDuelId() == creature.getActingPlayer().getDuelId())))
{
return new Creature[]
{
targetSummon
};
return Collections.singletonList(targetSummon);
}
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -28,16 +31,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class FlagPole implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (!creature.isPlayer())
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
return new WorldObject[]
{
target
};
return Collections.singletonList(target);
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
public class FrontArea implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final Creature origin;
@ -50,19 +50,16 @@ public class FrontArea implements ITargetTypeHandler
{
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
{
return EMPTY_TARGET_LIST;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
return targetList;
}
origin = target;
targetList.add(origin); // Add target to target list
if (onlyFirst)
{
return targetList;
}
}
else
{
@ -109,12 +106,7 @@ public class FrontArea implements ITargetTypeHandler
}
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class FrontAura implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
final int maxTargets = skill.getAffectLimit();
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
@ -52,23 +52,21 @@ public class FrontAura implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class Ground implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = (Player) creature;
final int maxTargets = skill.getAffectLimit();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
@ -55,11 +55,12 @@ public class Ground implements ITargetTypeHandler
return;
}
targetList.add(character);
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
return;
}
targetList.add(character);
}
});
@ -67,7 +68,8 @@ public class Ground implements ITargetTypeHandler
{
targetList.add(creature);
}
return targetList.isEmpty() ? EMPTY_TARGET_LIST : targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -28,16 +31,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Holy implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target == null) || !target.isArtefact())
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
return new WorldObject[]
{
target
};
return Collections.singletonList(target);
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,20 +32,17 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class One implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
// Check for null target or any other invalid target
if ((target == null) || target.isDead() || ((target == creature) && skill.isBad()))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
// If a target is found, return it in a table else send a system message TARGET_IS_INCORRECT
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -30,20 +33,18 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class OwnerPet implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (creature.isSummon())
{
final Player owner = ((Summon) creature).getOwner();
if ((owner != null) && !owner.isDead())
{
return new Creature[]
{
owner
};
return Collections.singletonList(owner);
}
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -32,19 +32,15 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Party implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
targetList.add(creature);
if (onlyFirst)
{
return new Creature[]
{
creature
};
return targetList;
}
targetList.add(creature);
final int radius = skill.getAffectRange();
final Player player = creature.getActingPlayer();
if (creature.isSummon())
@ -83,7 +79,8 @@ public class Party implements ITargetTypeHandler
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,25 +33,22 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class PartyClan implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
if (onlyFirst)
{
return new Creature[]
{
creature
};
}
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
targetList.add(player);
if (onlyFirst)
{
return targetList;
}
final int radius = skill.getAffectRange();
final boolean hasClan = player.getClan() != null;
final boolean hasParty = player.isInParty();
@ -63,7 +60,7 @@ public class PartyClan implements ITargetTypeHandler
// if player in clan and not in party
if (!(hasClan || hasParty))
{
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
// Get all visible objects in a spherical area near the Creature
@ -132,22 +129,20 @@ public class PartyClan implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,21 +32,20 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class PartyMember implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (target == null)
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
if (!target.isDead() && ((target == creature) || (creature.isInParty() && target.isInParty() && (creature.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId())) || (creature.isPlayer() && target.isSummon() && (creature.getSummon() == target)) || (creature.isSummon() && target.isPlayer() && (creature == target.getSummon()))))
{
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.Config;
@ -34,9 +34,9 @@ import org.l2jmobius.gameserver.util.Util;
public class PartyNotMe implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if (creature.getParty() != null)
{
final List<Player> partyList = creature.getParty().getMembers();
@ -52,7 +52,7 @@ public class PartyNotMe implements ITargetTypeHandler
}
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,7 +32,7 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class PartyOther implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target != null) && (target != creature) && creature.isInParty() && target.isInParty() && (creature.getParty().getLeaderObjectId() == target.getParty().getLeaderObjectId()))
{
@ -44,35 +47,27 @@ public class PartyOther implements ITargetTypeHandler
{
if (!target.getActingPlayer().isMageClass())
{
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
case 427:
{
if (target.getActingPlayer().isMageClass())
{
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
}
}
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -36,9 +36,9 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class PcBody implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target != null) && target.isDead())
{
final Player player;
@ -92,20 +92,14 @@ public class PcBody implements ITargetTypeHandler
if (condGood)
{
if (!onlyFirst)
{
targetList.add(target);
return targetList.toArray(new WorldObject[targetList.size()]);
}
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
}
}
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Pet implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (creature.hasPet())
{
return new Creature[]
{
creature.getSummon()
};
return Collections.singletonList(creature.getSummon());
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -28,12 +31,9 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Self implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
return new Creature[]
{
creature
};
return Collections.singletonList(creature);
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Servitor implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (creature.hasServitor())
{
return new Creature[]
{
creature.getSummon()
};
return Collections.singletonList(creature.getSummon());
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Summon implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if (creature.hasSummon())
{
return new Creature[]
{
creature.getSummon()
};
return Collections.singletonList(creature.getSummon());
}
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,15 +33,15 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class TargetParty implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
// Check for null target or any other invalid target
if ((target == null) || target.isDead() || (target == creature))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final int radius = skill.getAffectRange();
@ -70,7 +70,8 @@ public class TargetParty implements ITargetTypeHandler
{
targetList.add(target);
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -29,16 +32,14 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Unlockable implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target == null) || (!target.isDoor() && !(target instanceof Chest)))
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
@Override

View File

@ -762,7 +762,7 @@ public abstract class AbstractSagaQuest extends Quest
}
@Override
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (SPAWN_LIST.containsKey(npc) && (SPAWN_LIST.get(npc) != player.getObjectId()))
{

View File

@ -16,6 +16,8 @@
*/
package quests.Q00120_PavelsLastResearch;
import java.util.List;
import org.l2jmobius.gameserver.enums.QuestSound;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
@ -1105,7 +1107,7 @@ public class Q00120_PavelsLastResearch extends Quest
}
@Override
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
{
final QuestState qs = getQuestState(player, false);
if ((qs != null) && qs.isStarted())

View File

@ -185,7 +185,7 @@ public class Q00350_EnhanceYourWeapon extends Quest
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
super.onSkillSee(npc, caster, skill, targets, isSummon);

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.handler;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skill.Skill;
@ -26,9 +28,7 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
*/
public interface ITargetTypeHandler
{
WorldObject[] EMPTY_TARGET_LIST = new WorldObject[0];
WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target);
List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target);
Enum<TargetType> getTargetType();
}

View File

@ -21,6 +21,8 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ATTACK;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
@ -37,7 +39,6 @@ import java.util.logging.Logger;
import org.l2jmobius.Config;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.commons.util.EmptyQueue;
import org.l2jmobius.commons.util.Rnd;
import org.l2jmobius.gameserver.ai.AttackableAI;
@ -1485,7 +1486,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
beginCast(skill, true);
}
public void doCast(Skill skill, Creature target, WorldObject[] targets)
public void doCast(Skill skill, Creature target, List<WorldObject> targets)
{
if (!checkDoCastConditions(skill))
{
@ -1507,7 +1508,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
beginCast(skill, false, target, targets);
}
public void doSimultaneousCast(Skill skill, Creature target, WorldObject[] targets)
public void doSimultaneousCast(Skill skill, Creature target, List<WorldObject> targets)
{
if (!checkDoCastConditions(skill))
{
@ -1550,7 +1551,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
// Set the target of the skill in function of Skill Type and Target Type
Creature target = null;
// Get all possible targets of the skill in a table in function of the skill target type
final WorldObject[] targets = skill.getTargetList(this);
final List<WorldObject> targets = skill.getTargetList(this);
boolean doit = false;
// AURA skills should always be using caster as target
@ -1586,7 +1587,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
}
default:
{
if (targets.length == 0)
if (targets.isEmpty())
{
if (simultaneously)
{
@ -1612,7 +1613,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
if (doit)
{
target = (Creature) targets[0];
target = (Creature) targets.get(0);
}
else
{
@ -1624,7 +1625,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
beginCast(skill, simultaneously, target, targets);
}
private void beginCast(Skill skill, boolean simultaneously, Creature target, WorldObject[] targets)
private void beginCast(Skill skill, boolean simultaneously, Creature target, List<WorldObject> targets)
{
if (target == null)
{
@ -5228,14 +5229,14 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
public void onMagicLaunchedTimer(MagicUseTask mut)
{
final Skill skill = mut.getSkill();
final WorldObject[] targets = mut.getTargets();
final List<WorldObject> targets = mut.getTargets();
if ((skill == null) || (targets == null))
{
abortCast();
return;
}
if (targets.length == 0)
if (targets.isEmpty())
{
switch (skill.getTargetType())
{
@ -5267,12 +5268,12 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
escapeRange = skill.getAffectRange();
}
if ((targets.length > 0) && (escapeRange > 0))
if (!targets.isEmpty() && (escapeRange > 0))
{
int skipRange = 0;
int skipLOS = 0;
int skipPeaceZone = 0;
final List<WorldObject> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
for (WorldObject target : targets)
{
if (target.isCreature())
@ -5333,7 +5334,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
abortCast();
return;
}
mut.setTargets(targetList.toArray(new WorldObject[targetList.size()]));
mut.setTargets(targetList);
}
// Ensure that a cast is in progress
@ -5361,7 +5362,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
public void onMagicHitTimer(MagicUseTask mut)
{
final Skill skill = mut.getSkill();
final WorldObject[] targets = mut.getTargets();
final List<WorldObject> targets = mut.getTargets();
if ((skill == null) || (targets == null))
{
abortCast();
@ -5499,7 +5500,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
setCastingSimultaneouslyNow(false);
final Skill skill = mut.getSkill();
final WorldObject target = mut.getTargets().length > 0 ? mut.getTargets()[0] : null;
final WorldObject target = !mut.getTargets().isEmpty() ? mut.getTargets().get(0) : null;
// Attack target after skill use
if ((skill.nextActionIsAttack()) && (_target != this) && (target != null) && (_target == target) && _target.isCreature() && target.canBeAttacked())
@ -5567,7 +5568,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
* @param skill The Skill to use
* @param targets The table of WorldObject targets
*/
public void callSkill(Skill skill, WorldObject[] targets)
public void callSkill(Skill skill, List<WorldObject> targets)
{
try
{
@ -5739,7 +5740,7 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{
final Attackable attackable = (Attackable) npcMob;
int skillEffectPoint = skill.getEffectPoint();
if (player.hasSummon() && (targets.length == 1) && CommonUtil.contains(targets, player.getSummon()))
if (player.hasSummon() && (targets.size() == 1) && targets.contains(player.getSummon()))
{
skillEffectPoint = 0;
}
@ -6321,10 +6322,8 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
disableSkill(skill, skill.getReuseDelay());
}
// @formatter:off
final WorldObject[] targets = !ignoreTargetType ? skill.getTargetList(this, false, target) : new Creature[]{ target };
// @formatter:on
if (targets.length == 0)
final List<WorldObject> targets = !ignoreTargetType ? skill.getTargetList(this, false, target) : Collections.singletonList(target);
if (targets.isEmpty())
{
return;
}

View File

@ -468,9 +468,9 @@ public class Cubic implements IIdentifiable
}
}
public void useCubicContinuous(Skill skill, WorldObject[] targets)
public void useCubicContinuous(Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{
@ -503,9 +503,9 @@ public class Cubic implements IIdentifiable
* @param skill
* @param targets
*/
public void useCubicMdam(Skill skill, WorldObject[] targets)
public void useCubicMdam(Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target == null)
{
@ -550,9 +550,9 @@ public class Cubic implements IIdentifiable
}
}
public void useCubicDrain(Skill skill, WorldObject[] targets)
public void useCubicDrain(Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if (target.isAlikeDead())
{
@ -585,9 +585,9 @@ public class Cubic implements IIdentifiable
}
}
public void useCubicDisabler(Skill skill, WorldObject[] targets)
public void useCubicDisabler(Skill skill, List<Creature> targets)
{
for (Creature target : (Creature[]) targets)
for (Creature target : targets)
{
if ((target == null) || target.isDead())
{

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.actor.instance;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.InstanceType;
import org.l2jmobius.gameserver.model.WorldObject;
@ -194,7 +196,7 @@ public class Monster extends Attackable
}
@Override
public void doCast(Skill skill, Creature target, WorldObject[] targets)
public void doCast(Skill skill, Creature target, List<WorldObject> targets)
{
// Might need some exceptions here, but it will prevent the monster buffing player bug.
if (!skill.isBad() && (getTarget() != null) && getTarget().isPlayer())
@ -203,6 +205,7 @@ public class Monster extends Attackable
setCastingSimultaneouslyNow(false);
return;
}
super.doCast(skill, target, targets);
}
}

View File

@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.model.actor.instance;
import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_IDLE;
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Future;
@ -456,14 +457,10 @@ public class TamedBeast extends FeedableBeast
{
final WorldObject oldTarget = owner.getTarget();
owner.setTarget(_tamedBeast);
final WorldObject[] targets =
{
_tamedBeast
};
// emulate a call to the owner using food, but bypass all checks for range, etc
// this also causes a call to the AI tasks handling feeding, which may call onReceiveFood as required.
owner.callSkill(SkillData.getInstance().getSkill(foodTypeSkillId, 1), targets);
owner.callSkill(SkillData.getInstance().getSkill(foodTypeSkillId, 1), Collections.singletonList(_tamedBeast));
owner.setTarget(oldTarget);
}
else

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.actor.tasks.creature;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.skill.Skill;
@ -27,17 +29,17 @@ import org.l2jmobius.gameserver.model.skill.Skill;
public class MagicUseTask implements Runnable
{
private final Creature _creature;
private WorldObject[] _targets;
private List<WorldObject> _targets;
private final Skill _skill;
private int _count;
private int _skillTime;
private int _phase;
private final boolean _simultaneously;
public MagicUseTask(Creature creature, WorldObject[] tgts, Skill s, int hit, boolean simultaneous)
public MagicUseTask(Creature creature, List<WorldObject> targets, Skill s, int hit, boolean simultaneous)
{
_creature = creature;
_targets = tgts;
_targets = targets;
_skill = s;
_count = 0;
_phase = 1;
@ -92,7 +94,7 @@ public class MagicUseTask implements Runnable
return _skillTime;
}
public WorldObject[] getTargets()
public List<WorldObject> getTargets()
{
return _targets;
}
@ -117,7 +119,7 @@ public class MagicUseTask implements Runnable
_skillTime = skillTime;
}
public void setTargets(WorldObject[] targets)
public void setTargets(List<WorldObject> targets)
{
_targets = targets;
}

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.model.actor.tasks.cubics;
import java.util.Collections;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -139,39 +140,34 @@ public class CubicAction implements Runnable
{
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
final Creature[] targets =
{
target
};
if (skill.isContinuous())
{
_cubic.useCubicContinuous(skill, targets);
_cubic.useCubicContinuous(skill, Collections.singletonList(target));
}
else
{
skill.activateSkill(_cubic, targets);
skill.activateSkill(_cubic, Collections.singletonList(target));
}
if (skill.hasEffectType(EffectType.MAGICAL_ATTACK))
{
_cubic.useCubicMdam(skill, targets);
_cubic.useCubicMdam(skill, Collections.singletonList(target));
}
else if (skill.hasEffectType(EffectType.HP_DRAIN))
{
_cubic.useCubicDrain(skill, targets);
_cubic.useCubicDrain(skill, Collections.singletonList(target));
}
else if (skill.hasEffectType(EffectType.STUN, EffectType.ROOT, EffectType.PARALYZE))
{
_cubic.useCubicDisabler(skill, targets);
_cubic.useCubicDisabler(skill, Collections.singletonList(target));
}
else if (skill.hasEffectType(EffectType.DMG_OVER_TIME, EffectType.DMG_OVER_TIME_PERCENT))
{
_cubic.useCubicContinuous(skill, targets);
_cubic.useCubicContinuous(skill, Collections.singletonList(target));
}
else if (skill.hasEffectType(EffectType.AGGRESSION))
{
_cubic.useCubicDisabler(skill, targets);
_cubic.useCubicDisabler(skill, Collections.singletonList(target));
}
// The cubic has done an action, increase the current count

View File

@ -16,6 +16,7 @@
*/
package org.l2jmobius.gameserver.model.actor.tasks.cubics;
import java.util.Collections;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -75,7 +76,7 @@ public class CubicHeal implements Runnable
final Creature target = _cubic.getTarget();
if ((target != null) && !target.isDead() && ((target.getMaxHp() - target.getCurrentHp()) > skill.getPower()))
{
skill.activateSkill(_cubic, target);
skill.activateSkill(_cubic, Collections.singletonList(target));
_cubic.getOwner().broadcastPacket(new MagicSkillUse(_cubic.getOwner(), target, skill.getId(), skill.getLevel(), 0, 0));
}
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.conditions;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Attackable;
@ -55,7 +57,7 @@ public class ConditionPlayerCanSweep extends Condition
final Player sweeper = effector.getActingPlayer();
if (skill != null)
{
final WorldObject[] targets = skill.getTargetList(sweeper);
final List<WorldObject> targets = skill.getTargetList(sweeper);
if (targets != null)
{
Attackable target;

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.events.impl.creature;
import java.util.Collection;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.events.EventType;
@ -32,7 +34,7 @@ public class OnCreatureSkillUse implements IBaseEvent
private Skill _skill;
private boolean _simultaneously;
private Creature _target;
private WorldObject[] _targets;
private Collection<WorldObject> _targets;
public OnCreatureSkillUse()
{
@ -78,12 +80,12 @@ public class OnCreatureSkillUse implements IBaseEvent
_target = target;
}
public WorldObject[] getTargets()
public Collection<WorldObject> getTargets()
{
return _targets;
}
public synchronized void setTargets(WorldObject[] targets)
public synchronized void setTargets(Collection<WorldObject> targets)
{
_targets = targets;
}

View File

@ -16,6 +16,8 @@
*/
package org.l2jmobius.gameserver.model.events.impl.creature.npc;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@ -31,10 +33,10 @@ public class OnNpcSkillSee implements IBaseEvent
private final Npc _npc;
private final Player _caster;
private final Skill _skill;
private final WorldObject[] _targets;
private final List<WorldObject> _targets;
private final boolean _isSummon;
public OnNpcSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public OnNpcSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
_npc = npc;
_caster = caster;
@ -58,7 +60,7 @@ public class OnNpcSkillSee implements IBaseEvent
return _skill;
}
public WorldObject[] getTargets()
public List<WorldObject> getTargets()
{
return _targets;
}

View File

@ -16,8 +16,12 @@
*/
package org.l2jmobius.gameserver.model.item;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.conditions.Condition;
@ -365,7 +369,7 @@ public class Weapon extends ItemTemplate
return;
}
onCritSkill.activateSkill(caster, target);
onCritSkill.activateSkill(caster, Collections.singletonList(target));
}
/**
@ -423,16 +427,12 @@ public class Weapon extends ItemTemplate
// Launch the magic skill and calculate its effects
// Get the skill handler corresponding to the skill type
onMagicSkill.activateSkill(caster, target);
onMagicSkill.activateSkill(caster, Collections.singletonList(target));
// notify quests of a skill use
if (caster.isPlayer())
{
final Creature[] targets =
{
target
};
final List<WorldObject> targets = Collections.singletonList(target);
World.getInstance().forEachVisibleObjectInRange(caster, Npc.class, 1000, npc ->
{
if (EventDispatcher.getInstance().hasListener(EventType.ON_NPC_SKILL_SEE, npc))

View File

@ -21,6 +21,7 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
@ -334,7 +335,7 @@ public abstract class Inventory extends ItemContainer
final Skill unequipSkill = it.getUnequipSkill();
if (unequipSkill != null)
{
unequipSkill.activateSkill(player, player);
unequipSkill.activateSkill(player, Collections.singletonList(player));
}
if (update)

View File

@ -705,7 +705,7 @@ public class Quest extends AbstractScript implements IIdentifiable
* @param targets
* @param isSummon
*/
public void notifySkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public void notifySkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
String res = null;
try
@ -1142,7 +1142,7 @@ public class Quest extends AbstractScript implements IIdentifiable
* @param isSummon if {@code true}, the skill was actually cast by the player's summon, not the player himself
* @return
*/
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
return null;
}

View File

@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.model.skill;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
import java.util.HashSet;
@ -64,8 +65,6 @@ public class Skill implements IIdentifiable
{
private static final Logger LOGGER = Logger.getLogger(Skill.class.getName());
private static final WorldObject[] EMPTY_TARGET_LIST = new WorldObject[0];
/** Skill ID. */
private final int _id;
/** Skill level. */
@ -950,7 +949,7 @@ public class Skill implements IIdentifiable
return true;
}
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst)
public List<WorldObject> getTargetList(Creature creature, boolean onlyFirst)
{
// Init to null the target of the skill
Creature target = null;
@ -987,7 +986,7 @@ public class Skill implements IIdentifiable
* @param target
* @return
*/
public WorldObject[] getTargetList(Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Creature creature, boolean onlyFirst, Creature target)
{
final ITargetTypeHandler handler = TargetHandler.getInstance().getHandler(getTargetType());
if (handler != null)
@ -1001,23 +1000,25 @@ public class Skill implements IIdentifiable
LOGGER.log(Level.WARNING, "Exception in Skill.getTargetList(): " + e.getMessage(), e);
}
}
creature.sendMessage("Target type of skill is not currently handled.");
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
public WorldObject[] getTargetList(Creature creature)
public List<WorldObject> getTargetList(Creature creature)
{
return getTargetList(creature, false);
}
public WorldObject getFirstOfTargetList(Creature creature)
{
final WorldObject[] targets = getTargetList(creature, true);
if (targets.length == 0)
final List<WorldObject> targets = getTargetList(creature, true);
if (targets.isEmpty())
{
return null;
}
return targets[0];
return targets.get(0);
}
/**
@ -1321,7 +1322,7 @@ public class Skill implements IIdentifiable
* @param caster the caster
* @param targets the targets
*/
public void activateSkill(Creature caster, WorldObject... targets)
public void activateSkill(Creature caster, Collection<WorldObject> targets)
{
activateSkill(caster, null, targets);
}
@ -1331,7 +1332,7 @@ public class Skill implements IIdentifiable
* @param cubic the cubic
* @param targets the targets
*/
public void activateSkill(Cubic cubic, WorldObject... targets)
public void activateSkill(Cubic cubic, Collection<WorldObject> targets)
{
activateSkill(cubic.getOwner(), cubic, targets);
}
@ -1342,7 +1343,7 @@ public class Skill implements IIdentifiable
* @param cubic the cubic, can be {@code null}
* @param targets the targets
*/
private void activateSkill(Creature caster, Cubic cubic, WorldObject... targets)
private void activateSkill(Creature caster, Cubic cubic, Collection<WorldObject> targets)
{
for (WorldObject obj : targets)
{

View File

@ -16,7 +16,7 @@
*/
package org.l2jmobius.gameserver.model.skill;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level;
@ -162,8 +162,7 @@ public class SkillChannelizer implements Runnable
return;
}
final List<Creature> targetList = new ArrayList<>();
final List<Creature> targetList = new LinkedList<>();
for (WorldObject chars : skill.getTargetList(_channelizer))
{
if (chars.isCreature())

View File

@ -16,9 +16,8 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -33,9 +32,9 @@ public class MagicSkillLaunched extends ServerPacket
private final int _objectId;
private final int _skillId;
private final int _skillLevel;
private final List<WorldObject> _targets;
private final Collection<WorldObject> _targets;
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, WorldObject... targets)
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, Collection<WorldObject> targets)
{
_objectId = creature.getObjectId();
_skillId = skillId;
@ -45,12 +44,17 @@ public class MagicSkillLaunched extends ServerPacket
_targets = Collections.singletonList(creature);
return;
}
_targets = Arrays.asList(targets);
_targets = targets;
}
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel, WorldObject target)
{
this(creature, skillId, skillLevel, Collections.singletonList(target == null ? creature : target));
}
public MagicSkillLaunched(Creature creature, int skillId, int skillLevel)
{
this(creature, skillId, skillLevel, creature);
this(creature, skillId, skillLevel, Collections.singletonList(creature));
}
@Override

View File

@ -17,6 +17,7 @@
package ai.areas.BeastFarm;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@ -512,11 +513,11 @@ public class FeedableBeasts extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
// this behavior is only run when the target of skill is the passed npc (chest)
// i.e. when the player is attempting to open the chest using a skill
if (!CommonUtil.contains(targets, npc))
if (!targets.contains(npc))
{
return super.onSkillSee(npc, caster, skill, targets, isSummon);
}

View File

@ -25,7 +25,6 @@ import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.Config;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.data.xml.DoorData;
import org.l2jmobius.gameserver.data.xml.NpcData;
@ -310,9 +309,9 @@ public class EnergySeeds extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (!CommonUtil.contains(targets, npc) || (skill.getId() != 5780))
if (!targets.contains(npc) || (skill.getId() != 5780))
{
return super.onSkillSee(npc, caster, skill, targets, isSummon);
}

View File

@ -16,6 +16,8 @@
*/
package ai.areas.Gracia.AI;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@ -45,7 +47,7 @@ public class StarStones extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (skill.getId() == 932)
{

View File

@ -18,6 +18,7 @@ package ai.areas.Gracia.instances.HallOfSufferingAttack;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.l2jmobius.gameserver.ai.CtrlEvent;
@ -353,7 +354,7 @@ public class HallOfSufferingAttack extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (skill.hasEffectType(EffectType.REBALANCE_HP, EffectType.HEAL))
{

View File

@ -18,6 +18,7 @@ package ai.areas.Gracia.instances.HallOfSufferingDefence;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.l2jmobius.gameserver.ai.CtrlEvent;
@ -353,7 +354,7 @@ public class HallOfSufferingDefence extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (skill.hasEffectType(EffectType.REBALANCE_HP, EffectType.HEAL))
{

View File

@ -16,6 +16,8 @@
*/
package ai.areas.Hellbound.AI;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.commons.threads.ThreadPool;
import org.l2jmobius.gameserver.model.Location;
@ -82,10 +84,10 @@ public class Chimeras extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (((skill.getId() == BOTTLE) && !npc.isDead()) //
&& ((targets.length > 0) && (targets[0] == npc)) //
&& ((!targets.isEmpty()) && (targets.get(0) == npc)) //
&& (npc.getCurrentHp() < (npc.getMaxHp() * 0.1)))
{
if (HellboundEngine.getInstance().getLevel() == 7)

View File

@ -16,7 +16,8 @@
*/
package ai.areas.MonasteryOfSilence;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.commons.util.Rnd;
@ -103,11 +104,11 @@ public class MonasteryOfSilence extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (CommonUtil.contains(mobs2, npc.getId()))
{
if (skill.hasEffectType(EffectType.AGGRESSION) && (targets.length != 0))
if (skill.hasEffectType(EffectType.AGGRESSION) && !targets.isEmpty())
{
for (WorldObject obj : targets)
{
@ -129,7 +130,7 @@ public class MonasteryOfSilence extends AbstractNpcAI
{
if (CommonUtil.contains(mobs1, npc.getId()))
{
final ArrayList<Playable> result = new ArrayList<>();
final List<Playable> result = new LinkedList<>();
for (WorldObject obj : World.getInstance().getVisibleObjects(npc, WorldObject.class))
{
if ((obj instanceof Player) || (obj instanceof Pet))
@ -140,12 +141,12 @@ public class MonasteryOfSilence extends AbstractNpcAI
}
}
}
if (!result.isEmpty() && (result.size() != 0))
if (!result.isEmpty())
{
final Object[] characters = result.toArray();
for (Object obj : characters)
for (Playable obj : result)
{
final Playable target = (Playable) (obj instanceof Player ? obj : ((Summon) obj).getOwner());
final Playable target = obj instanceof Player ? obj : ((Summon) obj).getOwner();
if ((target.getActiveWeaponInstance() != null) && !npc.isInCombat() && (npc.getTarget() == null))
{
npc.setTarget(target);

View File

@ -184,9 +184,9 @@ public class StakatoNest extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (CommonUtil.contains(COCOONS, npc.getId()) && CommonUtil.contains(targets, npc) && (skill.getId() == GROWTH_ACCELERATOR))
if (CommonUtil.contains(COCOONS, npc.getId()) && targets.contains(npc) && (skill.getId() == GROWTH_ACCELERATOR))
{
npc.doDie(caster);
final Npc spawned = addSpawn(STAKATO_CHIEF, npc.getX(), npc.getY(), npc.getZ(), Util.calculateHeadingFrom(npc, caster), false, 0, true);

View File

@ -559,7 +559,7 @@ public class Beleth extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player player, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player player, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (!npc.isDead() && (npc.getId() == REAL_BELETH) && !npc.isCastingNow() && skill.hasEffectType(EffectType.HEAL) && (getRandom(100) < 80))
{

View File

@ -17,6 +17,7 @@
package ai.bosses.Orfen;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.Config;
@ -235,7 +236,7 @@ public class Orfen extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (npc.getId() == ORFEN)
{

View File

@ -16,6 +16,8 @@
*/
package ai.others;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
@ -69,7 +71,7 @@ public class Ballista extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if ((skill != null) && (caster.getTarget() == npc) && (getRandom(100) < 40) && (skill == BOMB.getSkill()))
{

View File

@ -16,6 +16,8 @@
*/
package ai.others;
import java.util.List;
import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature;
@ -60,7 +62,7 @@ public class Chests extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (npc instanceof Chest)
{

View File

@ -16,6 +16,8 @@
*/
package ai.others;
import java.util.List;
import org.l2jmobius.gameserver.enums.ChatType;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Attackable;
@ -104,7 +106,7 @@ public class PrisonGuards extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (!caster.isAffectedBySkill(TIMER))
{

View File

@ -16,6 +16,8 @@
*/
package ai.others;
import java.util.List;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@ -55,9 +57,9 @@ public class Remnants extends AbstractNpcAI
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if ((skill.getId() == SKILL_HOLY_WATER) && !npc.isDead() && (targets.length > 0) && (targets[0] == npc) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.02)))
if ((skill.getId() == SKILL_HOLY_WATER) && !npc.isDead() && !targets.isEmpty() && (targets.get(0) == npc) && (npc.getCurrentHp() < (npc.getMaxHp() * 0.02)))
{
npc.doDie(caster);
//@formatter:off

View File

@ -16,6 +16,7 @@
*/
package custom.SellBuff;
import java.util.Collections;
import java.util.StringTokenizer;
import org.l2jmobius.Config;
@ -407,7 +408,7 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
AbstractScript.takeItems(player, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
AbstractScript.giveItems(seller, Config.SELLBUFF_PAYMENT_ID, holder.getPrice());
seller.reduceCurrentMp(skillToBuy.getMpConsume() * Config.SELLBUFF_MP_MULTIPLER);
skillToBuy.activateSkill(seller, player);
skillToBuy.activateSkill(seller, Collections.singletonList(player));
}
else
{

View File

@ -22,7 +22,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import org.l2jmobius.Config;
import org.l2jmobius.commons.util.CommonUtil;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.Player;
@ -197,11 +196,11 @@ public class Rabbits extends Event
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (skill.getId() == RABBIT_TORNADO.getSkillId())
{
if (!npc.isInvisible() && CommonUtil.contains(targets, npc))
if (!npc.isInvisible() && targets.contains(npc))
{
dropItem(npc, caster, DROPLIST);
npc.deleteMe();

View File

@ -170,7 +170,7 @@ public class SavingSanta extends LongTimeEvent
}
@Override
public String onSkillSee(Npc npc, Player caster, Skill skill, WorldObject[] targets, boolean isSummon)
public String onSkillSee(Npc npc, Player caster, Skill skill, List<WorldObject> targets, boolean isSummon)
{
if (_isWaitingForPlayerSkill && (skill.getId() > 21013) && (skill.getId() < 21017))
{

View File

@ -16,7 +16,6 @@
*/
package handlers.effecthandlers;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.util.Rnd;
@ -78,11 +77,10 @@ public class Confuse extends AbstractEffect
{
info.getEffected().getAI().notifyEvent(CtrlEvent.EVT_CONFUSED);
final List<Creature> targetList = new ArrayList<>();
// Getting the possible targets
World.getInstance().forEachVisibleObject(info.getEffected(), Creature.class, targetList::add);
final List<Creature> targetList = World.getInstance().getVisibleObjects(info.getEffected(), Creature.class);
// if there is no target, exit function
// If there is no target, exit function
if (!targetList.isEmpty())
{
// Choosing randomly a new target

View File

@ -140,8 +140,7 @@ public class TriggerSkillByAttack extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getAttacker(), false, event.getTarget()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -78,8 +78,7 @@ public class TriggerSkillByAvoid extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -95,8 +95,7 @@ public class TriggerSkillByDamage extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getTarget(), false, event.getAttacker()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -85,8 +85,7 @@ public class TriggerSkillBySkill extends AbstractEffect
}
final Skill triggerSkill = _skill.getSkill();
final WorldObject[] targets = targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget());
for (WorldObject triggerTarget : targets)
for (WorldObject triggerTarget : targetHandler.getTargetList(triggerSkill, event.getCaster(), false, event.getTarget()))
{
if ((triggerTarget == null) || !triggerTarget.isCreature())
{

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
public class Area implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final Creature origin;
@ -50,15 +50,13 @@ public class Area implements ITargetTypeHandler
{
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
origin = target;
@ -93,12 +91,7 @@ public class Area implements ITargetTypeHandler
}
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,25 +35,22 @@ import org.l2jmobius.gameserver.util.Util;
public class AreaCorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || !target.isAttackable() || !target.isDead())
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
targetList.add(target);
if (onlyFirst)
{
return new Creature[]
{
target
};
return targetList;
}
final List<Creature> targetList = new ArrayList<>();
targetList.add(target);
final boolean srcInArena = creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE);
World.getInstance().forEachVisibleObject(creature, Creature.class, obj ->
{
@ -70,11 +67,7 @@ public class AreaCorpseMob implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,8 +16,8 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@ -38,31 +38,28 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class AreaFriendly implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
if (!checkTarget(player, target) && (skill.getCastRange() >= 0))
{
player.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
targetList.add(target);
return targetList;
}
if (player.getActingPlayer().isInOlympiadMode())
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
targetList.add(target); // Add target to target list
if (target != null)
{
@ -83,11 +80,7 @@ public class AreaFriendly implements ITargetTypeHandler
});
}
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
private boolean checkTarget(Player player, Creature target)

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,21 +33,19 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class AreaSummon implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Creature targetCreature = creature.getSummon();
if ((targetCreature == null) || !targetCreature.isServitor() || targetCreature.isDead())
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
targetCreature
};
targetList.add(targetCreature);
return targetList;
}
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
@ -77,12 +75,7 @@ public class AreaSummon implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,9 +35,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class Aura implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
{
@ -63,18 +63,16 @@ public class Aura implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,32 +33,29 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class AuraCorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
// Go through the Creature _knownList
final int maxTargets = skill.getAffectLimit();
for (Attackable obj : World.getInstance().getVisibleObjectsInRange(creature, Attackable.class, skill.getAffectRange()))
{
if (obj.isDead())
{
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.geoengine.GeoEngine;
@ -37,9 +37,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class AuraFriendly implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
final int maxTargets = skill.getAffectLimit();
World.getInstance().forEachVisibleObject(player, Creature.class, obj ->
@ -57,12 +57,7 @@ public class AuraFriendly implements ITargetTypeHandler
targetList.add(obj);
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
private boolean checkTarget(Player player, Creature target)

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,13 +35,13 @@ import org.l2jmobius.gameserver.util.Util;
public class BehindArea implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if ((target == null) || (((target == creature) || target.isAlikeDead()) && (skill.getCastRange() >= 0)) || (!(target.isAttackable() || target.isPlayable())))
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return targetList;
}
final Creature origin;
@ -50,19 +50,16 @@ public class BehindArea implements ITargetTypeHandler
{
if (!Skill.checkForAreaOffensiveSkills(creature, target, skill, srcInArena))
{
return EMPTY_TARGET_LIST;
}
if (onlyFirst)
{
return new Creature[]
{
target
};
return targetList;
}
origin = target;
targetList.add(origin); // Add target to target list
if (onlyFirst)
{
return targetList;
}
}
else
{
@ -103,12 +100,7 @@ public class BehindArea implements ITargetTypeHandler
}
});
if (targetList.isEmpty())
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,9 +33,9 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class BehindAura implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final boolean srcInArena = (creature.isInsideZone(ZoneId.PVP) && !creature.isInsideZone(ZoneId.SIEGE));
final int maxTargets = skill.getAffectLimit();
for (Creature obj : World.getInstance().getVisibleObjectsInRange(creature, Creature.class, skill.getAffectRange()))
@ -52,23 +52,20 @@ public class BehindAura implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -35,31 +35,27 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class Clan implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if (creature.isPlayable())
{
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (player.isInOlympiadMode())
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
if (onlyFirst)
{
return new Creature[]
{
player
};
targetList.add(player);
return targetList;
}
targetList.add(player);
@ -115,32 +111,25 @@ public class Clan implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new Creature[]
{
obj
};
return targetList;
}
targetList.add(obj);
}
}
}
else if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
targetList.add(creature);
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new Creature[]
{
creature
};
return targetList;
}
targetList.add(creature);
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
@ -156,7 +145,7 @@ public class Clan implements ITargetTypeHandler
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,20 +33,19 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class ClanMember implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new Creature[]
{
creature
};
targetList.add(creature);
return targetList;
}
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (newTarget.isNpc() && npc.isInMyClan(newTarget))
@ -55,16 +54,14 @@ public class ClanMember implements ITargetTypeHandler
break;
}
}
if (targetList.isEmpty())
{
targetList.add(npc);
}
}
else
{
return EMPTY_TARGET_LIST;
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,7 +16,7 @@
*/
package handlers.targethandlers;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
@ -33,13 +33,13 @@ import org.l2jmobius.gameserver.model.skill.targets.TargetType;
public class CommandChannel implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<Creature> targetList = new ArrayList<>();
final List<WorldObject> targetList = new LinkedList<>();
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
targetList.add(player);
@ -55,7 +55,7 @@ public class CommandChannel implements ITargetTypeHandler
// if player in not in party
if (party == null)
{
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
// Get all visible objects in a spherical area near the Creature
@ -78,7 +78,7 @@ public class CommandChannel implements ITargetTypeHandler
}
}
return targetList.toArray(new Creature[targetList.size()]);
return targetList;
}
@Override

View File

@ -37,7 +37,7 @@ import org.l2jmobius.gameserver.model.zone.ZoneId;
public class CorpseClan implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
final List<WorldObject> targetList = new ArrayList<>();
if (creature.isPlayable())
@ -45,15 +45,13 @@ public class CorpseClan implements ITargetTypeHandler
final Player player = creature.getActingPlayer();
if (player == null)
{
return EMPTY_TARGET_LIST;
return targetList;
}
if (player.isInOlympiadMode())
{
return new WorldObject[]
{
player
};
targetList.add(player);
return targetList;
}
final Clan clan = player.getClan();
@ -103,37 +101,30 @@ public class CorpseClan implements ITargetTypeHandler
continue;
}
targetList.add(obj);
if (onlyFirst)
{
return new WorldObject[]
{
obj
};
return targetList;
}
if ((maxTargets > 0) && (targetList.size() >= maxTargets))
{
break;
}
targetList.add(obj);
}
}
}
else if (creature.isNpc())
{
// for buff purposes, returns friendly mobs nearby and mob itself
targetList.add(creature);
final Npc npc = (Npc) creature;
if ((npc.getTemplate().getClans() == null) || npc.getTemplate().getClans().isEmpty())
{
return new WorldObject[]
{
creature
};
return targetList;
}
targetList.add(creature);
for (Npc newTarget : World.getInstance().getVisibleObjectsInRange(creature, Npc.class, skill.getCastRange()))
{
if (npc.isInMyClan(newTarget))
@ -148,7 +139,7 @@ public class CorpseClan implements ITargetTypeHandler
}
}
return targetList.toArray(new WorldObject[targetList.size()]);
return targetList;
}
@Override

View File

@ -16,6 +16,9 @@
*/
package handlers.targethandlers;
import java.util.Collections;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.gameserver.handler.ITargetTypeHandler;
import org.l2jmobius.gameserver.model.WorldObject;
@ -33,28 +36,25 @@ import org.l2jmobius.gameserver.network.SystemMessageId;
public class CorpseMob implements ITargetTypeHandler
{
@Override
public WorldObject[] getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
public List<WorldObject> getTargetList(Skill skill, Creature creature, boolean onlyFirst, Creature target)
{
if ((target == null) || !target.isAttackable() || !target.isDead())
{
creature.sendPacket(SystemMessageId.THAT_IS_AN_INCORRECT_TARGET);
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
if (skill.hasEffectType(EffectType.SUMMON) && target.isServitor() && (target.getActingPlayer() != null) && (target.getActingPlayer().getObjectId() == creature.getObjectId()))
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
if (skill.hasEffectType(EffectType.HP_DRAIN) && ((Attackable) target).isOldCorpse(creature.getActingPlayer(), Config.CORPSE_CONSUME_SKILL_ALLOWED_TIME_BEFORE_DECAY, true))
{
return EMPTY_TARGET_LIST;
return Collections.emptyList();
}
return new Creature[]
{
target
};
return Collections.singletonList(target);
}
@Override

Some files were not shown because too many files have changed in this diff Show More