Removed most stream filter uses.
This commit is contained in:
@@ -772,13 +772,16 @@ public class Beleth extends AbstractNpcAI
|
||||
|
||||
private void deleteAll()
|
||||
{
|
||||
_minions.stream().filter(n -> !n.isDead()).forEach(n ->
|
||||
for (Npc minion : _minions)
|
||||
{
|
||||
n.abortCast();
|
||||
n.setTarget(null);
|
||||
n.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
n.deleteMe();
|
||||
});
|
||||
if (!minion.isDead())
|
||||
{
|
||||
minion.abortCast();
|
||||
minion.setTarget(null);
|
||||
minion.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
|
||||
minion.deleteMe();
|
||||
}
|
||||
}
|
||||
_allowedObjId = 0;
|
||||
}
|
||||
|
||||
|
@@ -216,12 +216,15 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToChange.getId())).findFirst().orElse(null);
|
||||
if ((holder != null))
|
||||
for (SellBuffHolder holder : player.getSellingBuffs())
|
||||
{
|
||||
player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
|
||||
holder.setPrice(price);
|
||||
SellBuffsManager.getInstance().sendBuffEditMenu(player);
|
||||
if (holder.getSkillId() == skillToChange.getId())
|
||||
{
|
||||
player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
|
||||
holder.setPrice(price);
|
||||
SellBuffsManager.getInstance().sendBuffEditMenu(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -250,11 +253,14 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToRemove.getId())).findFirst().orElse(null);
|
||||
if ((holder != null) && player.getSellingBuffs().remove(holder))
|
||||
for (SellBuffHolder holder : player.getSellingBuffs())
|
||||
{
|
||||
player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
|
||||
SellBuffsManager.getInstance().sendBuffEditMenu(player);
|
||||
if ((holder.getSkillId() == skillToRemove.getId()) && player.getSellingBuffs().remove(holder))
|
||||
{
|
||||
player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
|
||||
SellBuffsManager.getInstance().sendBuffEditMenu(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -399,29 +405,33 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
final SellBuffHolder holder = seller.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToBuy.getId())).findFirst().orElse(null);
|
||||
if (holder != null)
|
||||
for (SellBuffHolder holder : player.getSellingBuffs())
|
||||
{
|
||||
if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
|
||||
if (holder.getSkillId() == skillToBuy.getId())
|
||||
{
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
final Item item = ItemTable.getInstance().getTemplate(Config.SELLBUFF_PAYMENT_ID);
|
||||
if (item != null)
|
||||
if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
|
||||
{
|
||||
player.sendMessage("Not enough " + item.getName() + "!");
|
||||
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);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.sendMessage("Not enough items!");
|
||||
final Item item = ItemTable.getInstance().getTemplate(Config.SELLBUFF_PAYMENT_ID);
|
||||
if (item != null)
|
||||
{
|
||||
player.sendMessage("Not enough " + item.getName() + "!");
|
||||
}
|
||||
else
|
||||
{
|
||||
player.sendMessage("Not enough items!");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SellBuffsManager.getInstance().sendBuffMenu(player, seller, index);
|
||||
}
|
||||
break;
|
||||
|
@@ -213,7 +213,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
{
|
||||
continue;
|
||||
}
|
||||
targets.stream().filter(target -> !target.isSummon()).forEach(target ->
|
||||
for (Creature target : targets)
|
||||
{
|
||||
skill.applyEffects(player, target);
|
||||
if (Config.COMMUNITYBOARD_CAST_ANIMATIONS)
|
||||
@@ -222,7 +222,7 @@ public class HomeBoard implements IParseBoardHandler
|
||||
// not recommend broadcast
|
||||
// player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -16,8 +16,8 @@
|
||||
*/
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.l2jmobius.commons.util.Rnd;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -63,7 +63,14 @@ public class RandomizeHate extends AbstractEffect
|
||||
}
|
||||
|
||||
final Attackable effectedMob = (Attackable) info.getEffected();
|
||||
final List<Creature> aggroList = effectedMob.getAggroList().keySet().stream().filter(c -> c != info.getEffector()).collect(Collectors.toList());
|
||||
final List<Creature> aggroList = new ArrayList<>();
|
||||
for (Creature creature : effectedMob.getAggroList().keySet())
|
||||
{
|
||||
if (creature != info.getEffector())
|
||||
{
|
||||
aggroList.add(creature);
|
||||
}
|
||||
}
|
||||
if (aggroList.isEmpty())
|
||||
{
|
||||
return;
|
||||
|
@@ -40,7 +40,6 @@ import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
@@ -283,7 +282,14 @@ public class LoginServerThread extends Thread
|
||||
st.addAttribute(ServerStatus.SERVER_AGE, ServerStatus.SERVER_AGE_ALL);
|
||||
}
|
||||
sendPacket(st);
|
||||
final List<String> playerList = World.getInstance().getPlayers().stream().filter(player -> !player.isInOfflineMode()).map(PlayerInstance::getAccountName).collect(Collectors.toList());
|
||||
final List<String> playerList = new ArrayList<>();
|
||||
for (PlayerInstance player : World.getInstance().getPlayers())
|
||||
{
|
||||
if (!player.isInOfflineMode())
|
||||
{
|
||||
playerList.add(player.getAccountName());
|
||||
}
|
||||
}
|
||||
if (!playerList.isEmpty())
|
||||
{
|
||||
sendPacket(new PlayerInGame(playerList));
|
||||
|
@@ -203,7 +203,14 @@ public class Forum
|
||||
public Forum getChildByName(String name)
|
||||
{
|
||||
vload();
|
||||
return _children.stream().filter(f -> f.getName().equals(name)).findFirst().orElse(null);
|
||||
for (Forum f : _children)
|
||||
{
|
||||
if (f.getName().equals(name))
|
||||
{
|
||||
return f;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -139,7 +139,14 @@ public class ClanTable
|
||||
|
||||
public Clan getClanByName(String clanName)
|
||||
{
|
||||
return _clans.values().stream().filter(c -> c.getName().equalsIgnoreCase(clanName)).findFirst().orElse(null);
|
||||
for (Clan clan : _clans.values())
|
||||
{
|
||||
if (clan.getName().equalsIgnoreCase(clanName))
|
||||
{
|
||||
return clan;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -28,7 +28,6 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.NamedNodeMap;
|
||||
@@ -723,11 +722,15 @@ public class NpcData implements IXmlReader
|
||||
*/
|
||||
public List<NpcTemplate> getTemplates(Predicate<NpcTemplate> filter)
|
||||
{
|
||||
//@formatter:off
|
||||
return _npcs.values().stream()
|
||||
.filter(filter)
|
||||
.collect(Collectors.toList());
|
||||
//@formatter:on
|
||||
final List<NpcTemplate> result = new ArrayList<>();
|
||||
for (NpcTemplate template : _npcs.values())
|
||||
{
|
||||
if (filter.test(template))
|
||||
{
|
||||
result.add(template);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -26,6 +26,7 @@ import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -758,7 +759,15 @@ public class CastleManorManager implements IXmlReader, IStorable
|
||||
|
||||
public Set<Seed> getSeedsForCastle(int castleId)
|
||||
{
|
||||
return _seeds.values().stream().filter(s -> s.getCastleId() == castleId).collect(Collectors.toSet());
|
||||
Set<Seed> result = new HashSet<>();
|
||||
for (Seed seed : _seeds.values())
|
||||
{
|
||||
if (seed.getCastleId() == castleId)
|
||||
{
|
||||
result.add(seed);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public Set<Integer> getSeedIds()
|
||||
|
@@ -162,7 +162,14 @@ public class GrandBossManager implements IStorable
|
||||
|
||||
public BossZone getZone(Creature creature)
|
||||
{
|
||||
return _zones.values().stream().filter(z -> z.isCharacterInZone(creature)).findFirst().orElse(null);
|
||||
for (BossZone zone : _zones.values())
|
||||
{
|
||||
if (zone.isCharacterInZone(creature))
|
||||
{
|
||||
return zone;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public BossZone getZone(Location loc)
|
||||
@@ -172,7 +179,14 @@ public class GrandBossManager implements IStorable
|
||||
|
||||
public BossZone getZone(int x, int y, int z)
|
||||
{
|
||||
return _zones.values().stream().filter(zone -> zone.isInsideZone(x, y, z)).findFirst().orElse(null);
|
||||
for (BossZone zone : _zones.values())
|
||||
{
|
||||
if (zone.isInsideZone(x, y, z))
|
||||
{
|
||||
return zone;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean checkIfInZone(String zoneType, WorldObject obj)
|
||||
|
@@ -177,14 +177,17 @@ public class PremiumManager
|
||||
premiumData.put(accountName, newPremiumExpiration);
|
||||
|
||||
// UPDATE PlAYER PREMIUMSTATUS
|
||||
final PlayerInstance playerOnline = World.getInstance().getPlayers().stream().filter(p -> accountName.equals(p.getAccountName())).findFirst().orElse(null);
|
||||
if (playerOnline != null)
|
||||
for (PlayerInstance player : World.getInstance().getPlayers())
|
||||
{
|
||||
stopExpireTask(playerOnline);
|
||||
startExpireTask(playerOnline, newPremiumExpiration - now);
|
||||
if (!playerOnline.hasPremiumStatus())
|
||||
if (accountName.equals(player.getAccountName()))
|
||||
{
|
||||
playerOnline.setPremiumStatus(true);
|
||||
stopExpireTask(player);
|
||||
startExpireTask(player, newPremiumExpiration - now);
|
||||
if (!player.hasPremiumStatus())
|
||||
{
|
||||
player.setPremiumStatus(true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -193,11 +196,14 @@ public class PremiumManager
|
||||
{
|
||||
if (checkOnline)
|
||||
{
|
||||
final PlayerInstance playerOnline = World.getInstance().getPlayers().stream().filter(p -> accountName.equals(p.getAccountName())).findFirst().orElse(null);
|
||||
if ((playerOnline != null) && playerOnline.hasPremiumStatus())
|
||||
for (PlayerInstance player : World.getInstance().getPlayers())
|
||||
{
|
||||
playerOnline.setPremiumStatus(false);
|
||||
stopExpireTask(playerOnline);
|
||||
if (accountName.equals(player.getAccountName()) && player.hasPremiumStatus())
|
||||
{
|
||||
player.setPremiumStatus(false);
|
||||
stopExpireTask(player);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -379,7 +379,14 @@ public class SellBuffsManager implements IXmlReader
|
||||
|
||||
public boolean isInSellList(PlayerInstance player, Skill skill)
|
||||
{
|
||||
return player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skill.getId())).findFirst().orElse(null) != null;
|
||||
for (SellBuffHolder holder : player.getSellingBuffs())
|
||||
{
|
||||
if (holder.getSkillId() == skill.getId())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canStartSellBuffs(PlayerInstance player)
|
||||
|
@@ -24,7 +24,6 @@ import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.OptionalInt;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
@@ -555,10 +554,12 @@ public class ZoneManager implements IXmlReader
|
||||
{
|
||||
for (Map<Integer, ? extends ZoneType> map : _classZones.values())
|
||||
{
|
||||
final Optional<? extends ZoneType> zoneType = map.values().stream().filter(z -> (z.getName() != null) && z.getName().equals(name)).findAny();
|
||||
if (zoneType.isPresent())
|
||||
for (ZoneType zone : map.values())
|
||||
{
|
||||
return zoneType.get();
|
||||
if ((zone.getName() != null) && zone.getName().equals(name))
|
||||
{
|
||||
return zone;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -587,10 +588,15 @@ public class ZoneManager implements IXmlReader
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends ZoneType> T getZoneByName(String name, Class<T> zoneType)
|
||||
{
|
||||
final Optional<? extends ZoneType> zone = _classZones.get(zoneType).values().stream().filter(z -> (z.getName() != null) && z.getName().equals(name)).findAny();
|
||||
if (zone.isPresent())
|
||||
if (_classZones.containsKey(zoneType))
|
||||
{
|
||||
return (T) zone.get();
|
||||
for (ZoneType zone : _classZones.get(zoneType).values())
|
||||
{
|
||||
if ((zone.getName() != null) && zone.getName().equals(name))
|
||||
{
|
||||
return (T) zone;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@@ -20,7 +20,6 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
@@ -355,35 +354,79 @@ public class EffectList
|
||||
public BuffInfo getBuffInfoBySkillId(int skillId)
|
||||
{
|
||||
BuffInfo info = null;
|
||||
|
||||
if (hasBuffs())
|
||||
{
|
||||
info = _buffs.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _buffs)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasTriggered() && (info == null))
|
||||
{
|
||||
info = _triggered.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _triggered)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasDances() && (info == null))
|
||||
{
|
||||
info = _dances.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _dances)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasToggles() && (info == null))
|
||||
{
|
||||
info = _toggles.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _toggles)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasDebuffs() && (info == null))
|
||||
{
|
||||
info = _debuffs.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _debuffs)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (hasPassives() && (info == null))
|
||||
{
|
||||
info = _passives.stream().filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null);
|
||||
for (BuffInfo b : _passives)
|
||||
{
|
||||
if (b.getSkill().getId() == skillId)
|
||||
{
|
||||
info = b;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@@ -623,31 +666,61 @@ public class EffectList
|
||||
boolean update = false;
|
||||
if (hasBuffs())
|
||||
{
|
||||
_buffs.stream().filter(info -> !info.getSkill().isStayAfterDeath()).forEach(info -> stopAndRemove(true, info, _buffs));
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
if (!info.getSkill().isStayAfterDeath())
|
||||
{
|
||||
stopAndRemove(true, info, _buffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
_triggered.stream().filter(info -> !info.getSkill().isStayAfterDeath()).forEach(info -> stopAndRemove(true, info, _triggered));
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
if (!info.getSkill().isStayAfterDeath())
|
||||
{
|
||||
stopAndRemove(true, info, _triggered);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
_debuffs.stream().filter(info -> !info.getSkill().isStayAfterDeath()).forEach(info -> stopAndRemove(true, info, _debuffs));
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
if (!info.getSkill().isStayAfterDeath())
|
||||
{
|
||||
stopAndRemove(true, info, _debuffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
_dances.stream().filter(info -> !info.getSkill().isStayAfterDeath()).forEach(info -> stopAndRemove(true, info, _dances));
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
if (!info.getSkill().isStayAfterDeath())
|
||||
{
|
||||
stopAndRemove(true, info, _dances);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
_toggles.stream().filter(info -> !info.getSkill().isStayAfterDeath()).forEach(info -> stopAndRemove(true, info, _toggles));
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
if (!info.getSkill().isStayAfterDeath())
|
||||
{
|
||||
stopAndRemove(true, info, _toggles);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
@@ -663,12 +736,30 @@ public class EffectList
|
||||
*/
|
||||
public void stopAllEffectsWithoutExclusions(boolean update, boolean broadcast)
|
||||
{
|
||||
_buffs.stream().forEach(info -> stopAndRemove(broadcast, info, _buffs));
|
||||
_triggered.stream().forEach(info -> stopAndRemove(broadcast, info, _triggered));
|
||||
_dances.stream().forEach(info -> stopAndRemove(broadcast, info, _dances));
|
||||
_toggles.stream().forEach(info -> stopAndRemove(broadcast, info, _toggles));
|
||||
_debuffs.stream().forEach(info -> stopAndRemove(broadcast, info, _debuffs));
|
||||
_passives.stream().forEach(info -> stopAndRemove(broadcast, info, _passives));
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _buffs);
|
||||
}
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _triggered);
|
||||
}
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _dances);
|
||||
}
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _toggles);
|
||||
}
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _debuffs);
|
||||
}
|
||||
for (BuffInfo info : _passives)
|
||||
{
|
||||
stopAndRemove(broadcast, info, _passives);
|
||||
}
|
||||
|
||||
// Update stats, effect flags and icons.
|
||||
if (update)
|
||||
@@ -685,31 +776,61 @@ public class EffectList
|
||||
boolean update = false;
|
||||
if (hasBuffs())
|
||||
{
|
||||
_buffs.stream().filter(info -> !info.getSkill().isStayOnSubclassChange()).forEach(info -> stopAndRemove(true, info, _buffs));
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
if (!info.getSkill().isStayOnSubclassChange())
|
||||
{
|
||||
stopAndRemove(true, info, _buffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
_triggered.stream().filter(info -> !info.getSkill().isStayOnSubclassChange()).forEach(info -> stopAndRemove(true, info, _triggered));
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
if (!info.getSkill().isStayOnSubclassChange())
|
||||
{
|
||||
stopAndRemove(true, info, _triggered);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
_debuffs.stream().filter(info -> !info.getSkill().isStayOnSubclassChange()).forEach(info -> stopAndRemove(true, info, _debuffs));
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
if (!info.getSkill().isStayOnSubclassChange())
|
||||
{
|
||||
stopAndRemove(true, info, _debuffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
_dances.stream().filter(info -> !info.getSkill().isStayOnSubclassChange()).forEach(info -> stopAndRemove(true, info, _dances));
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
if (!info.getSkill().isStayOnSubclassChange())
|
||||
{
|
||||
stopAndRemove(true, info, _dances);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
_toggles.stream().filter(info -> !info.getSkill().isStayOnSubclassChange()).forEach(info -> stopAndRemove(true, info, _toggles));
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
if (!info.getSkill().isStayOnSubclassChange())
|
||||
{
|
||||
stopAndRemove(true, info, _toggles);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
@@ -802,39 +923,72 @@ public class EffectList
|
||||
boolean update = false;
|
||||
final Consumer<BuffInfo> action = info ->
|
||||
{
|
||||
if (info.getEffects().stream().anyMatch(effect -> (effect != null) && (effect.getEffectType() == type)))
|
||||
for (AbstractEffect effect : info.getEffects())
|
||||
{
|
||||
stopAndRemove(info);
|
||||
if ((effect != null) && (effect.getEffectType() == type))
|
||||
{
|
||||
stopAndRemove(info);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (hasBuffs())
|
||||
{
|
||||
_buffs.stream().filter(Objects::nonNull).forEach(action);
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
action.accept(info);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
_triggered.stream().filter(Objects::nonNull).forEach(action);
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
action.accept(info);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
_dances.stream().filter(Objects::nonNull).forEach(action);
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
action.accept(info);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
_toggles.stream().filter(Objects::nonNull).forEach(action);
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
action.accept(info);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
_debuffs.stream().filter(Objects::nonNull).forEach(action);
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
if (info != null)
|
||||
{
|
||||
action.accept(info);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
@@ -914,33 +1068,64 @@ public class EffectList
|
||||
}
|
||||
|
||||
boolean update = false;
|
||||
|
||||
if (hasBuffs())
|
||||
{
|
||||
_buffs.stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(true, info, _buffs));
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
if (info.getSkill().isRemovedOnAnyActionExceptMove())
|
||||
{
|
||||
stopAndRemove(true, info, _buffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
_triggered.stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(true, info, _triggered));
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
if (info.getSkill().isRemovedOnAnyActionExceptMove())
|
||||
{
|
||||
stopAndRemove(true, info, _triggered);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDebuffs())
|
||||
{
|
||||
_debuffs.stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(true, info, _debuffs));
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
if (info.getSkill().isRemovedOnAnyActionExceptMove())
|
||||
{
|
||||
stopAndRemove(true, info, _debuffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
_dances.stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(true, info, _dances));
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
if (info.getSkill().isRemovedOnAnyActionExceptMove())
|
||||
{
|
||||
stopAndRemove(true, info, _dances);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
_toggles.stream().filter(info -> info.getSkill().isRemovedOnAnyActionExceptMove()).forEach(info -> stopAndRemove(true, info, _toggles));
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
if (info.getSkill().isRemovedOnAnyActionExceptMove())
|
||||
{
|
||||
stopAndRemove(true, info, _toggles);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
@@ -960,34 +1145,65 @@ public class EffectList
|
||||
{
|
||||
if (hasBuffs())
|
||||
{
|
||||
_buffs.stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(true, info, _buffs));
|
||||
for (BuffInfo info : _buffs)
|
||||
{
|
||||
if ((info != null) && info.getSkill().isRemovedOnDamage())
|
||||
{
|
||||
stopAndRemove(true, info, _buffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasTriggered())
|
||||
{
|
||||
_triggered.stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(true, info, _triggered));
|
||||
for (BuffInfo info : _triggered)
|
||||
{
|
||||
if ((info != null) && info.getSkill().isRemovedOnDamage())
|
||||
{
|
||||
stopAndRemove(true, info, _triggered);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasDances())
|
||||
{
|
||||
_dances.stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(true, info, _dances));
|
||||
for (BuffInfo info : _dances)
|
||||
{
|
||||
if ((info != null) && info.getSkill().isRemovedOnDamage())
|
||||
{
|
||||
stopAndRemove(true, info, _dances);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (hasToggles())
|
||||
{
|
||||
_toggles.stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(true, info, _toggles));
|
||||
for (BuffInfo info : _toggles)
|
||||
{
|
||||
if ((info != null) && info.getSkill().isRemovedOnDamage())
|
||||
{
|
||||
stopAndRemove(true, info, _toggles);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (_hasDebuffsRemovedOnDamage && hasDebuffs())
|
||||
{
|
||||
_debuffs.stream().filter(Objects::nonNull).filter(info -> info.getSkill().isRemovedOnDamage()).forEach(info -> stopAndRemove(true, info, _debuffs));
|
||||
for (BuffInfo info : _debuffs)
|
||||
{
|
||||
if ((info != null) && info.getSkill().isRemovedOnDamage())
|
||||
{
|
||||
stopAndRemove(true, info, _debuffs);
|
||||
}
|
||||
}
|
||||
update = true;
|
||||
}
|
||||
|
||||
// Update effect flags and icons.
|
||||
updateEffectList(update);
|
||||
}
|
||||
@@ -1179,13 +1395,16 @@ public class EffectList
|
||||
}
|
||||
|
||||
// Puts the effects in the list.
|
||||
_passives.stream().filter(b -> b.getSkill().getId() == skill.getId()).forEach(b ->
|
||||
for (BuffInfo b : _passives)
|
||||
{
|
||||
// Removes the old stats from the creature if the skill was present.
|
||||
b.setInUse(false);
|
||||
b.removeStats();
|
||||
_passives.remove(b);
|
||||
});
|
||||
if (b.getSkill().getId() == skill.getId())
|
||||
{
|
||||
b.setInUse(false);
|
||||
b.removeStats();
|
||||
_passives.remove(b);
|
||||
}
|
||||
}
|
||||
|
||||
_passives.add(info);
|
||||
|
||||
|
@@ -314,7 +314,13 @@ public class Party extends AbstractPlayerGroup
|
||||
msg.addString(player.getName());
|
||||
broadcastPacket(msg);
|
||||
|
||||
_members.stream().filter(member -> member != player).forEach(member -> member.sendPacket(new PartySmallWindowAdd(player, this)));
|
||||
for (PlayerInstance member : _members)
|
||||
{
|
||||
if (member != player)
|
||||
{
|
||||
member.sendPacket(new PartySmallWindowAdd(player, this));
|
||||
}
|
||||
}
|
||||
|
||||
// send the position of all party members to the new party member
|
||||
// player.sendPacket(new PartyMemberPosition(this));
|
||||
|
@@ -438,8 +438,16 @@ public class SchemeBufferInstance extends Npc
|
||||
return (objectsSize / pageSize) + ((objectsSize % pageSize) == 0 ? 0 : 1);
|
||||
}
|
||||
|
||||
private static long getCountOf(List<Integer> skills, boolean dances)
|
||||
private static int getCountOf(List<Integer> skills, boolean dances)
|
||||
{
|
||||
return skills.stream().filter(sId -> SkillData.getInstance().getSkill(sId, 1).isDance() == dances).count();
|
||||
int count = 0;
|
||||
for (int skillId : skills)
|
||||
{
|
||||
if (SkillData.getInstance().getSkill(skillId, 1).isDance() == dances)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
}
|
@@ -57,7 +57,15 @@ public class CubicHeal implements Runnable
|
||||
|
||||
try
|
||||
{
|
||||
final Skill skill = _cubic.getSkills().stream().filter(s -> s.getId() == CubicInstance.SKILL_CUBIC_HEAL).findFirst().orElse(null);
|
||||
Skill skill = null;
|
||||
for (Skill s : _cubic.getSkills())
|
||||
{
|
||||
if (s.getId() == CubicInstance.SKILL_CUBIC_HEAL)
|
||||
{
|
||||
skill = s;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (skill == null)
|
||||
{
|
||||
return;
|
||||
|
@@ -78,12 +78,27 @@ public class ListenersContainer
|
||||
|
||||
public void removeListenerIf(EventType type, Predicate<? super AbstractEventListener> filter)
|
||||
{
|
||||
getListeners(type).stream().filter(filter).forEach(AbstractEventListener::unregisterMe);
|
||||
for (AbstractEventListener listener : getListeners(type))
|
||||
{
|
||||
if (filter.test(listener))
|
||||
{
|
||||
listener.unregisterMe();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void removeListenerIf(Predicate<? super AbstractEventListener> filter)
|
||||
{
|
||||
getListeners().values().forEach(queue -> queue.stream().filter(filter).forEach(AbstractEventListener::unregisterMe));
|
||||
for (Queue<AbstractEventListener> queue : getListeners().values())
|
||||
{
|
||||
for (AbstractEventListener listener : queue)
|
||||
{
|
||||
if (filter.test(listener))
|
||||
{
|
||||
listener.unregisterMe();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean hasListener(EventType type)
|
||||
|
@@ -16,11 +16,11 @@
|
||||
*/
|
||||
package org.l2jmobius.gameserver.model.instancezone;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.l2jmobius.commons.util.CommonUtil;
|
||||
import org.l2jmobius.gameserver.model.StatSet;
|
||||
@@ -169,7 +169,15 @@ public class InstanceWorld
|
||||
*/
|
||||
public List<Npc> getAliveNpcs()
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> n.getCurrentHp() > 0).collect(Collectors.toList());
|
||||
final List<Npc> result = new ArrayList<>();
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if (npc.getCurrentHp() > 0)
|
||||
{
|
||||
result.add(npc);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -179,7 +187,15 @@ public class InstanceWorld
|
||||
*/
|
||||
public List<Npc> getNpcs(int... id)
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> CommonUtil.contains(id, n.getId())).collect(Collectors.toList());
|
||||
final List<Npc> result = new ArrayList<>();
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if (CommonUtil.contains(id, npc.getId()))
|
||||
{
|
||||
result.add(npc);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,9 +206,18 @@ public class InstanceWorld
|
||||
* @return list of filtered NPCs from instance
|
||||
*/
|
||||
@SafeVarargs
|
||||
@SuppressWarnings("unchecked")
|
||||
public final <T extends Creature> List<T> getNpcs(Class<T> clazz, int... ids)
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> (ids.length == 0) || CommonUtil.contains(ids, n.getId())).filter(clazz::isInstance).map(clazz::cast).collect(Collectors.toList());
|
||||
final List<T> result = new ArrayList<>();
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if (((ids.length == 0) || CommonUtil.contains(ids, npc.getId())) && clazz.isInstance(npc))
|
||||
{
|
||||
result.add((T) npc);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -203,9 +228,18 @@ public class InstanceWorld
|
||||
* @return list of filtered NPCs from instance
|
||||
*/
|
||||
@SafeVarargs
|
||||
@SuppressWarnings("unchecked")
|
||||
public final <T extends Creature> List<T> getAliveNpcs(Class<T> clazz, int... ids)
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> ((ids.length == 0) || CommonUtil.contains(ids, n.getId())) && (n.getCurrentHp() > 0)).filter(clazz::isInstance).map(clazz::cast).collect(Collectors.toList());
|
||||
final List<T> result = new ArrayList<>();
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if ((((ids.length == 0) || CommonUtil.contains(ids, npc.getId())) && (npc.getCurrentHp() > 0)) && clazz.isInstance(npc))
|
||||
{
|
||||
result.add((T) npc);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,7 +249,15 @@ public class InstanceWorld
|
||||
*/
|
||||
public List<Npc> getAliveNpcs(int... id)
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> (n.getCurrentHp() > 0) && CommonUtil.contains(id, n.getId())).collect(Collectors.toList());
|
||||
final List<Npc> result = new ArrayList<>();
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if ((npc.getCurrentHp() > 0) && CommonUtil.contains(id, npc.getId()))
|
||||
{
|
||||
result.add(npc);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -225,7 +267,14 @@ public class InstanceWorld
|
||||
*/
|
||||
public Npc getNpc(int id)
|
||||
{
|
||||
return _instance.getNpcs().stream().filter(n -> n.getId() == id).findFirst().orElse(null);
|
||||
for (Npc npc : _instance.getNpcs())
|
||||
{
|
||||
if (npc.getId() == id)
|
||||
{
|
||||
return npc;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -88,7 +88,16 @@ public abstract class ItemContainer
|
||||
{
|
||||
filter = filter.and(additionalFilter);
|
||||
}
|
||||
return (int) _items.stream().filter(filter).count();
|
||||
|
||||
int count = 0;
|
||||
for (ItemInstance item : _items)
|
||||
{
|
||||
if (filter.test(item))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -2574,7 +2574,13 @@ public class Quest extends AbstractScript implements IIdentifiable
|
||||
}
|
||||
else
|
||||
{
|
||||
getListeners().stream().filter(listener -> listener.getType() == EventType.ON_PLAYER_LOGIN).forEach(AbstractEventListener::unregisterMe);
|
||||
for (AbstractEventListener listener : getListeners())
|
||||
{
|
||||
if (listener.getType() == EventType.ON_PLAYER_LOGIN)
|
||||
{
|
||||
listener.unregisterMe();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user