Removed most stream filter uses.

This commit is contained in:
MobiusDevelopment
2020-06-18 16:09:02 +00:00
parent c612ba62ca
commit cf0ee224f8
1223 changed files with 24696 additions and 7524 deletions
@@ -802,7 +802,15 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
} }
else else
{ {
final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); ClassChangeData data = null;
for (ClassChangeData ccd : _classChangeData)
{
if (ccd.isInCategory(player))
{
data = ccd;
break;
}
}
if (data != null) if (data != null)
{ {
// Required items. // Required items.
@@ -1100,11 +1108,35 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
private boolean checkIfClassChangeHasOptions(PlayerInstance player) private boolean checkIfClassChangeHasOptions(PlayerInstance player)
{ {
boolean showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRequired().isEmpty()).anyMatch(ccd -> ccd.isInCategory(player)); // Check if there are requirements boolean showOptions = false;
// Check if there are requirements
for (ClassChangeData ccd : _classChangeData)
{
if (!ccd.getItemsRequired().isEmpty() && ccd.isInCategory(player))
{
showOptions = true;
break;
}
}
if (!showOptions) if (!showOptions)
{ {
showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRewarded().isEmpty()).filter(ccd -> ccd.isInCategory(player)).count() > 1; // Check if there is more than 1 reward to chose. // Check if there is more than 1 reward to chose.
int count = 0;
for (ClassChangeData ccd : _classChangeData)
{
if (!ccd.getItemsRewarded().isEmpty() && ccd.isInCategory(player))
{
count++;
} }
}
if (count > 1)
{
showOptions = true;
}
}
return showOptions; return showOptions;
} }
@@ -213,12 +213,15 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToChange.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if ((holder != null)) {
if (holder.getSkillId() == skillToChange.getId())
{ {
player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!"); player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
holder.setPrice(price); holder.setPrice(price);
SellBuffsManager.getInstance().sendBuffEditMenu(player); SellBuffsManager.getInstance().sendBuffEditMenu(player);
break;
}
} }
} }
break; break;
@@ -245,11 +248,14 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToRemove.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if ((holder != null) && player.getSellingBuffs().remove(holder)) {
if ((holder.getSkillId() == skillToRemove.getId()) && player.getSellingBuffs().remove(holder))
{ {
player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!"); player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
SellBuffsManager.getInstance().sendBuffEditMenu(player); SellBuffsManager.getInstance().sendBuffEditMenu(player);
break;
}
} }
} }
break; break;
@@ -390,8 +396,9 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = seller.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToBuy.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if (holder != null) {
if (holder.getSkillId() == skillToBuy.getId())
{ {
if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice()) if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
{ {
@@ -412,7 +419,10 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
player.sendMessage("Not enough items!"); player.sendMessage("Not enough items!");
} }
} }
break;
} }
}
SellBuffsManager.getInstance().sendBuffMenu(player, seller, index); SellBuffsManager.getInstance().sendBuffMenu(player, seller, index);
} }
break; break;
@@ -297,7 +297,13 @@ public class AdminAdmin implements IAdminCommandHandler
} }
final CreatureSay cs = new CreatureSay(activeChar, ChatType.WORLD, activeChar.getName(), sb.toString()); final CreatureSay cs = new CreatureSay(activeChar, ChatType.WORLD, activeChar.getName(), sb.toString());
World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
break; break;
} }
case "see": case "see":
@@ -98,16 +98,34 @@ public class ChatWorld implements IChatHandler
{ {
if (activeChar.isGood()) if (activeChar.isGood())
{ {
World.getInstance().getAllGoodPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getAllGoodPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
if (activeChar.isEvil()) if (activeChar.isEvil())
{ {
World.getInstance().getAllEvilPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getAllEvilPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
} }
else else
{ {
World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
activeChar.setWorldChatUsed(activeChar.getWorldChatUsed() + 1); activeChar.setWorldChatUsed(activeChar.getWorldChatUsed() + 1);
@@ -218,7 +218,9 @@ public class HomeBoard implements IParseBoardHandler
{ {
continue; continue;
} }
targets.stream().filter(target -> !target.isSummon() || !skill.isSharedWithSummon()).forEach(target -> for (Creature target : targets)
{
if (skill.isSharedWithSummon() || target.isPlayer())
{ {
skill.applyEffects(player, target); skill.applyEffects(player, target);
if (Config.COMMUNITYBOARD_CAST_ANIMATIONS) if (Config.COMMUNITYBOARD_CAST_ANIMATIONS)
@@ -227,7 +229,8 @@ public class HomeBoard implements IParseBoardHandler
// not recommend broadcast // not recommend broadcast
// player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay())); // player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
} }
}); }
}
} }
} }
@@ -18,15 +18,14 @@ package handlers.effecthandlers;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.AbnormalType; import org.l2jmobius.gameserver.model.skills.AbnormalType;
import org.l2jmobius.gameserver.model.skills.BuffInfo;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget; import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget;
@@ -94,19 +93,25 @@ public class AbnormalTimeChange extends AbstractEffect
{ {
if (_abnormals.isEmpty()) if (_abnormals.isEmpty())
{ {
effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b -> for (BuffInfo info : effected.getEffectList().getEffects())
{ {
b.resetAbnormalTime(b.getTime() + _time); if (info.getSkill().canBeDispelled())
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getTime() + _time);
asu.addSkill(info);
}
}
} }
else else
{ {
effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b -> for (BuffInfo info : effected.getEffectList().getEffects())
{ {
b.resetAbnormalTime(b.getTime() + _time); if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getTime() + _time);
asu.addSkill(info);
}
}
} }
break; break;
} }
@@ -114,19 +119,25 @@ public class AbnormalTimeChange extends AbstractEffect
{ {
if (_abnormals.isEmpty()) if (_abnormals.isEmpty())
{ {
effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b -> for (BuffInfo info : effected.getEffectList().getDebuffs())
{ {
b.resetAbnormalTime(b.getAbnormalTime()); if (info.getSkill().canBeDispelled())
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getAbnormalTime());
asu.addSkill(info);
}
}
} }
else else
{ {
effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b -> for (BuffInfo info : effected.getEffectList().getDebuffs())
{ {
b.resetAbnormalTime(b.getAbnormalTime()); if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getAbnormalTime());
asu.addSkill(info);
}
}
} }
break; break;
} }
@@ -135,14 +146,13 @@ public class AbnormalTimeChange extends AbstractEffect
effected.sendPacket(asu); effected.sendPacket(asu);
final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(effected); final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(effected);
for (Creature creature : effected.getStatus().getStatusListener())
// @formatter:off {
effected.getStatus().getStatusListener().stream() if ((creature != null) && creature.isPlayer())
.filter(Objects::nonNull) {
.filter(WorldObject::isPlayer) upd.sendTo(creature.getActingPlayer());
.map(Creature::getActingPlayer) }
.forEach(upd::sendTo); }
// @formatter:on
if (effected.isPlayer() && (effected.getTarget() == effected)) if (effected.isPlayer() && (effected.getTarget() == effected))
{ {
@@ -52,7 +52,13 @@ public class CallTargetParty extends AbstractEffect
final Party party = player.getParty(); final Party party = player.getParty();
if (party != null) if (party != null)
{ {
party.getMembers().stream().filter(p -> (p != player) && CallPc.checkSummonTargetStatus(p, effector)).forEach(p -> p.teleToLocation(player.getLocation(), true)); for (PlayerInstance member : party.getMembers())
{
if ((member != player) && CallPc.checkSummonTargetStatus(member, effector))
{
member.teleToLocation(player.getLocation(), true);
}
}
} }
} }
} }
@@ -173,7 +173,13 @@ public class SummonNpc extends AbstractEffect
// If only single instance is allowed, delete previous NPCs. // If only single instance is allowed, delete previous NPCs.
if (_singleInstance) if (_singleInstance)
{ {
player.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).forEach(Npc::deleteMe); for (Npc npc : player.getSummonedNpcs())
{
if (npc.getId() == _npcId)
{
npc.deleteMe();
}
}
} }
final Npc npc = spawn.doSpawn(_isSummonSpawn); final Npc npc = spawn.doSpawn(_isSummonSpawn);
@@ -93,13 +93,19 @@ public class Synergy extends AbstractEffect
} }
} }
final int abnormalCount = (int) _optionalSlots.stream().filter(effector::hasAbnormalType).count(); int abnormalCount = 0;
for (AbnormalType abnormalType : _optionalSlots)
{
if (effector.hasAbnormalType(abnormalType))
{
abnormalCount++;
}
}
if (abnormalCount >= _minSlot) if (abnormalCount >= _minSlot)
{ {
final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.min(abnormalCount - 1, _skillLevelScaleTo)); final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.min(abnormalCount - 1, _skillLevelScaleTo));
final Skill partyBuffSkill = partyBuff.getSkill(); final Skill partyBuffSkill = partyBuff.getSkill();
if (partyBuffSkill != null) if (partyBuffSkill != null)
{ {
final WorldObject target = partyBuffSkill.getTarget(effector, effected, false, false, false); final WorldObject target = partyBuffSkill.getTarget(effector, effected, false, false, false);
@@ -20,6 +20,8 @@ import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.interfaces.ILocational;
@@ -59,13 +61,24 @@ public class TeleportToNpc extends AbstractEffect
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item) public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item)
{ {
final ILocational teleLocation = effector.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).findAny().orElse(null); ILocational teleLocation = null;
for (Npc npc : effector.getSummonedNpcs())
{
if (npc.getId() == _npcId)
{
teleLocation = npc;
}
}
if (teleLocation != null) if (teleLocation != null)
{ {
final Party party = effected.getParty(); final Party party = effected.getParty();
if (_party && (party != null)) if (_party && (party != null))
{ {
party.getMembers().forEach(p -> teleport(p, teleLocation)); for (PlayerInstance member : party.getMembers())
{
teleport(member, teleLocation);
}
} }
else else
{ {
@@ -16,8 +16,8 @@
*/ */
package handlers.itemhandlers; package handlers.itemhandlers;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.ShotType; import org.l2jmobius.gameserver.enums.ShotType;
@@ -60,7 +60,15 @@ public class BeastSoulShot implements IItemHandler
return false; return false;
} }
final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList()); final List<Summon> aliveServitor = new ArrayList<>();
for (Summon s : playable.getServitors().values())
{
if (!s.isDead())
{
aliveServitor.add(s);
}
}
if ((pet == null) && aliveServitor.isEmpty()) if ((pet == null) && aliveServitor.isEmpty())
{ {
activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT); activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT);
@@ -16,8 +16,8 @@
*/ */
package handlers.itemhandlers; package handlers.itemhandlers;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.ShotType; import org.l2jmobius.gameserver.enums.ShotType;
@@ -60,7 +60,15 @@ public class BeastSpiritShot implements IItemHandler
return false; return false;
} }
final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList()); final List<Summon> aliveServitor = new ArrayList<>();
for (Summon s : playable.getServitors().values())
{
if (!s.isDead())
{
aliveServitor.add(s);
}
}
if ((pet == null) && aliveServitor.isEmpty()) if ((pet == null) && aliveServitor.isEmpty())
{ {
activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT); activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT);
@@ -18,6 +18,7 @@ package handlers.playeractions;
import org.l2jmobius.gameserver.handler.IPlayerActionHandler; import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ActionDataHolder;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -32,7 +33,13 @@ public class ServitorAttack implements IPlayerActionHandler
{ {
if (player.hasServitors()) if (player.hasServitors())
{ {
player.getServitors().values().stream().filter(s -> s.canAttack(player.getTarget(), ctrlPressed)).forEach(s -> s.doAttack(player.getTarget())); for (Summon summon : player.getServitors().values())
{
if (summon.canAttack(player.getTarget(), ctrlPressed))
{
summon.doAttack(player.getTarget());
}
}
} }
else else
{ {
@@ -19,6 +19,7 @@ package handlers.playeractions;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.IPlayerActionHandler; import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ActionDataHolder;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -39,17 +40,20 @@ public class ServitorMove implements IPlayerActionHandler
if (player.getTarget() != null) if (player.getTarget() != null)
{ {
player.getServitors().values().stream().filter(s -> (s != player.getTarget()) && !s.isMovementDisabled()).forEach(s -> for (Summon summon : player.getServitors().values())
{ {
if (s.isBetrayed()) if ((summon != player.getTarget()) && !summon.isMovementDisabled())
{
if (summon.isBetrayed())
{ {
player.sendPacket(SystemMessageId.YOUR_PET_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS); player.sendPacket(SystemMessageId.YOUR_PET_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS);
return; return;
} }
s.setFollowStatus(false); summon.setFollowStatus(false);
s.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation()); summon.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation());
}); }
}
} }
} }
} }
@@ -40,7 +40,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
@@ -281,7 +280,14 @@ public class LoginServerThread extends Thread
st.addAttribute(ServerStatus.SERVER_AGE, ServerStatus.SERVER_AGE_ALL); st.addAttribute(ServerStatus.SERVER_AGE, ServerStatus.SERVER_AGE_ALL);
} }
sendPacket(st); 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()) if (!playerList.isEmpty())
{ {
sendPacket(new PlayerInGame(playerList)); sendPacket(new PlayerInGame(playerList));
@@ -26,6 +26,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_REST;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance;
import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.interfaces.ILocational;
@@ -164,7 +165,13 @@ public class PlayerAI extends PlayableAI
// Summons in defending mode defend its master when attacked. // Summons in defending mode defend its master when attacked.
if (_actor.getActingPlayer().hasServitors()) if (_actor.getActingPlayer().hasServitors())
{ {
_actor.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : _actor.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
} }
@@ -176,7 +183,13 @@ public class PlayerAI extends PlayableAI
// Summons in defending mode defend its master when attacked. // Summons in defending mode defend its master when attacked.
if (_actor.getActingPlayer().hasServitors()) if (_actor.getActingPlayer().hasServitors())
{ {
_actor.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : _actor.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
} }
@@ -250,10 +250,16 @@ public class SummonAI extends PlayableAI implements Runnable
private void allServitorsDefend(Creature attacker) private void allServitorsDefend(Creature attacker)
{ {
final Creature Owner = getActor().getOwner(); final Creature owner = getActor().getOwner();
if ((Owner != null) && Owner.getActingPlayer().hasServitors()) if ((owner != null) && owner.getActingPlayer().hasServitors())
{ {
Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : owner.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
else else
{ {
@@ -203,7 +203,14 @@ public class Forum
public Forum getChildByName(String name) public Forum getChildByName(String name)
{ {
vload(); 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;
} }
/** /**
@@ -137,7 +137,14 @@ public class ClanTable
public Clan getClanByName(String clanName) 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;
} }
/** /**
@@ -48,7 +48,15 @@ public class ActionData implements IXmlReader
_actionData.clear(); _actionData.clear();
_actionSkillsData.clear(); _actionSkillsData.clear();
parseDatapackFile("data/ActionData.xml"); parseDatapackFile("data/ActionData.xml");
_actionData.values().stream().filter(h -> h.getHandler().equals("PetSkillUse") || h.getHandler().equals("ServitorSkillUse")).forEach(h -> _actionSkillsData.put(h.getOptionId(), h.getId()));
for (ActionDataHolder holder : _actionData.values())
{
if (holder.getHandler().equals("PetSkillUse") || holder.getHandler().equals("ServitorSkillUse"))
{
_actionSkillsData.put(holder.getOptionId(), holder.getId());
}
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _actionData.size() + " player actions."); LOGGER.info(getClass().getSimpleName() + ": Loaded " + _actionData.size() + " player actions.");
} }
@@ -22,7 +22,6 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -115,7 +114,18 @@ public class CastleData implements IXmlReader
public List<CastleSpawnHolder> getSpawnsForSide(int castleId, CastleSide side) public List<CastleSpawnHolder> getSpawnsForSide(int castleId, CastleSide side)
{ {
return _spawns.getOrDefault(castleId, Collections.emptyList()).stream().filter(s -> s.getSide() == side).collect(Collectors.toList()); final List<CastleSpawnHolder> result = new ArrayList<>();
if (_spawns.containsKey(castleId))
{
for (CastleSpawnHolder spawn : _spawns.get(castleId))
{
if (spawn.getSide() == side)
{
result.add(spawn);
}
}
}
return result;
} }
public List<SiegeGuardHolder> getSiegeGuardsForCastle(int castleId) public List<SiegeGuardHolder> getSiegeGuardsForCastle(int castleId)
@@ -175,18 +175,39 @@ public class ClanHallData implements IXmlReader
public ClanHall getClanHallByNpcId(int npcId) public ClanHall getClanHallByNpcId(int npcId)
{ {
return _clanHalls.values().stream().filter(ch -> ch.getNpcs().contains(npcId)).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getNpcs().contains(npcId))
{
return ch;
}
}
return null;
} }
public ClanHall getClanHallByClan(Clan clan) public ClanHall getClanHallByClan(Clan clan)
{ {
return _clanHalls.values().stream().filter(ch -> ch.getOwner() == clan).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getOwner() == clan)
{
return ch;
}
}
return null;
} }
public ClanHall getClanHallByDoorId(int doorId) public ClanHall getClanHallByDoorId(int doorId)
{ {
final DoorInstance door = DoorData.getInstance().getDoor(doorId); final DoorInstance door = DoorData.getInstance().getDoor(doorId);
return _clanHalls.values().stream().filter(ch -> ch.getDoors().contains(door)).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getDoors().contains(door))
{
return ch;
}
}
return null;
} }
public List<ClanHall> getFreeAuctionableHall() public List<ClanHall> getFreeAuctionableHall()
@@ -20,7 +20,6 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
@@ -86,17 +85,40 @@ public class CombinationItemsData implements IXmlReader
public CombinationItem getItemsBySlots(int firstSlot, int secondSlot) public CombinationItem getItemsBySlots(int firstSlot, int secondSlot)
{ {
return _items.stream().filter(item -> (item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot)).findFirst().orElse(null); for (CombinationItem item : _items)
{
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot))
{
return item;
}
}
return null;
} }
public List<CombinationItem> getItemsByFirstSlot(int id) public List<CombinationItem> getItemsByFirstSlot(int id)
{ {
return _items.stream().filter(item -> item.getItemOne() == id).collect(Collectors.toList()); final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemOne() == id)
{
result.add(item);
}
}
return result;
} }
public List<CombinationItem> getItemsBySecondSlot(int id) public List<CombinationItem> getItemsBySecondSlot(int id)
{ {
return _items.stream().filter(item -> item.getItemTwo() == id).collect(Collectors.toList()); final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemTwo() == id)
{
result.add(item);
}
}
return result;
} }
public static final CombinationItemsData getInstance() public static final CombinationItemsData getInstance()
@@ -30,7 +30,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -726,11 +725,15 @@ public class NpcData implements IXmlReader
*/ */
public List<NpcTemplate> getTemplates(Predicate<NpcTemplate> filter) public List<NpcTemplate> getTemplates(Predicate<NpcTemplate> filter)
{ {
//@formatter:off final List<NpcTemplate> result = new ArrayList<>();
return _npcs.values().stream() for (NpcTemplate npcTemplate : _npcs.values())
.filter(filter) {
.collect(Collectors.toList()); if (filter.test(npcTemplate))
//@formatter:on {
result.add(npcTemplate);
}
}
return result;
} }
/** /**
@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.data.xml.impl;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -89,7 +88,17 @@ public class ResidenceFunctionsData implements IXmlReader
*/ */
public ResidenceFunctionTemplate getFunction(int id, int level) public ResidenceFunctionTemplate getFunction(int id, int level)
{ {
return _functions.getOrDefault(id, Collections.emptyList()).stream().filter(template -> template.getLevel() == level).findAny().orElse(null); if (_functions.containsKey(id))
{
for (ResidenceFunctionTemplate template : _functions.get(id))
{
if (template.getLevel() == level)
{
return template;
}
}
}
return null;
} }
/** /**
@@ -31,7 +31,6 @@ import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -561,7 +560,12 @@ public class SkillTreeData implements IXmlReader
*/ */
public List<Skill> getNobleSkillTree() public List<Skill> getNobleSkillTree()
{ {
return _nobleSkillTree.values().stream().map(entry -> SkillData.getInstance().getSkill(entry.getSkillId(), entry.getSkillLevel())).collect(Collectors.toList()); final List<Skill> result = new ArrayList<>();
for (SkillLearn skill : _nobleSkillTree.values())
{
result.add(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
}
return result;
} }
/** /**
@@ -570,7 +574,15 @@ public class SkillTreeData implements IXmlReader
*/ */
public List<Skill> getNobleSkillAutoGetTree() public List<Skill> getNobleSkillAutoGetTree()
{ {
return _nobleSkillTree.values().stream().filter(entry -> entry.isAutoGet()).map(entry -> SkillData.getInstance().getSkill(entry.getSkillId(), entry.getSkillLevel())).collect(Collectors.toList()); final List<Skill> result = new ArrayList<>();
for (SkillLearn skill : _nobleSkillTree.values())
{
if (skill.isAutoGet())
{
result.add(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
}
}
return result;
} }
/** /**
@@ -579,7 +591,12 @@ public class SkillTreeData implements IXmlReader
*/ */
public List<Skill> getHeroSkillTree() public List<Skill> getHeroSkillTree()
{ {
return _heroSkillTree.values().stream().map(entry -> SkillData.getInstance().getSkill(entry.getSkillId(), entry.getSkillLevel())).collect(Collectors.toList()); final List<Skill> result = new ArrayList<>();
for (SkillLearn skill : _heroSkillTree.values())
{
result.add(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
}
return result;
} }
/** /**
@@ -588,7 +605,12 @@ public class SkillTreeData implements IXmlReader
*/ */
public List<Skill> getGMSkillTree() public List<Skill> getGMSkillTree()
{ {
return _gameMasterSkillTree.values().stream().map(entry -> SkillData.getInstance().getSkill(entry.getSkillId(), entry.getSkillLevel())).collect(Collectors.toList()); final List<Skill> result = new ArrayList<>();
for (SkillLearn skill : _gameMasterSkillTree.values())
{
result.add(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
}
return result;
} }
/** /**
@@ -597,7 +619,12 @@ public class SkillTreeData implements IXmlReader
*/ */
public List<Skill> getGMAuraSkillTree() public List<Skill> getGMAuraSkillTree()
{ {
return _gameMasterAuraSkillTree.values().stream().map(entry -> SkillData.getInstance().getSkill(entry.getSkillId(), entry.getSkillLevel())).collect(Collectors.toList()); final List<Skill> result = new ArrayList<>();
for (SkillLearn skill : _gameMasterAuraSkillTree.values())
{
result.add(SkillData.getInstance().getSkill(skill.getSkillId(), skill.getSkillLevel()));
}
return result;
} }
/** /**
@@ -153,7 +153,15 @@ public class SpawnData implements IXmlReader
public List<SpawnTemplate> getSpawns(Predicate<SpawnTemplate> condition) public List<SpawnTemplate> getSpawns(Predicate<SpawnTemplate> condition)
{ {
return _spawns.stream().filter(condition).collect(Collectors.toList()); final List<SpawnTemplate> result = new ArrayList<>();
for (SpawnTemplate spawnTemplate : _spawns)
{
if (condition.test(spawnTemplate))
{
result.add(spawnTemplate);
}
}
return result;
} }
public List<SpawnGroup> getGroupsByName(String groupName) public List<SpawnGroup> getGroupsByName(String groupName)
@@ -26,6 +26,7 @@ import java.util.Calendar;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -762,7 +763,15 @@ public class CastleManorManager implements IXmlReader, IStorable
public Set<Seed> getSeedsForCastle(int castleId) 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() public Set<Integer> getSeedIds()
@@ -20,12 +20,13 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.Statement; import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.OptionalInt; import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -213,9 +214,16 @@ public class ClanEntryManager
return false; return false;
} }
public OptionalInt getClanIdForPlayerApplication(int playerId) public Integer getClanIdForPlayerApplication(int playerId)
{ {
return _applicantList.entrySet().stream().filter(e -> e.getValue().containsKey(playerId)).mapToInt(e -> e.getKey()).findFirst(); for (Entry<Integer, Map<Integer, PledgeApplicantInfo>> entry : _applicantList.entrySet())
{
if (entry.getValue().containsKey(playerId))
{
return entry.getKey();
}
}
return 0;
} }
public boolean addToWaitingList(int playerId, PledgeWaitingInfo info) public boolean addToWaitingList(int playerId, PledgeWaitingInfo info)
@@ -345,12 +353,41 @@ public class ClanEntryManager
public List<PledgeWaitingInfo> queryWaitingListByName(String name) public List<PledgeWaitingInfo> queryWaitingListByName(String name)
{ {
return _waitingList.values().stream().filter(p -> p.getPlayerName().toLowerCase().contains(name)).collect(Collectors.toList()); final List<PledgeWaitingInfo> result = new ArrayList<>();
for (PledgeWaitingInfo p : _waitingList.values())
{
if (p.getPlayerName().toLowerCase().contains(name))
{
result.add(p);
}
}
return result;
} }
public List<PledgeRecruitInfo> getSortedClanListByName(String query, int type) public List<PledgeRecruitInfo> getSortedClanListByName(String query, int type)
{ {
return type == 1 ? _clanList.values().stream().filter(p -> p.getClanName().toLowerCase().contains(query)).collect(Collectors.toList()) : _clanList.values().stream().filter(p -> p.getClanLeaderName().toLowerCase().contains(query)).collect(Collectors.toList()); final List<PledgeRecruitInfo> result = new ArrayList<>();
if (type == 1)
{
for (PledgeRecruitInfo p : _clanList.values())
{
if (p.getClanName().toLowerCase().contains(query))
{
result.add(p);
}
}
}
else
{
for (PledgeRecruitInfo p : _clanList.values())
{
if (p.getClanLeaderName().toLowerCase().contains(query))
{
result.add(p);
}
}
}
return result;
} }
public PledgeRecruitInfo getClanById(int clanId) public PledgeRecruitInfo getClanById(int clanId)
@@ -18,6 +18,7 @@ package org.l2jmobius.gameserver.instancemanager;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.l2jmobius.gameserver.data.xml.impl.ClanHallData; import org.l2jmobius.gameserver.data.xml.impl.ClanHallData;
@@ -72,21 +73,26 @@ public class ClanHallAuctionManager extends AbstractEventManager<AbstractEvent<?
public ClanHallAuction getClanHallAuctionByClan(Clan clan) public ClanHallAuction getClanHallAuctionByClan(Clan clan)
{ {
//@formatter:off for (ClanHallAuction auction : AUCTIONS.values())
return AUCTIONS.values().stream() {
.filter(a -> a.getBids().containsKey(clan.getId())) if (auction.getBids().containsKey(clan.getId()))
.findFirst() {
.orElse(null); return auction;
//@formatter:on }
}
return null;
} }
public boolean checkForClanBid(int clanHallId, Clan clan) public boolean checkForClanBid(int clanHallId, Clan clan)
{ {
//@formatter:off for (Entry<Integer, ClanHallAuction> auction : AUCTIONS.entrySet())
return AUCTIONS.entrySet().stream() {
.filter(a -> a.getKey() != clanHallId) if ((auction.getKey() != clanHallId) && auction.getValue().getBids().containsKey(clan.getId()))
.anyMatch(a -> a.getValue().getBids().containsKey(clan.getId())); {
//@formatter:on return true;
}
}
return false;
} }
public static ClanHallAuctionManager getInstance() public static ClanHallAuctionManager getInstance()
@@ -442,7 +442,14 @@ public class CommissionManager
*/ */
public boolean hasCommissionItems(int objectId) public boolean hasCommissionItems(int objectId)
{ {
return _commissionItems.values().stream().anyMatch(item -> item.getItemInstance().getObjectId() == objectId); for (CommissionItem item : _commissionItems.values())
{
if (item.getItemInstance().getObjectId() == objectId)
{
return true;
}
}
return false;
} }
/** /**
@@ -452,7 +459,14 @@ public class CommissionManager
*/ */
public boolean hasCommissionedItemId(PlayerInstance player, int itemId) public boolean hasCommissionedItemId(PlayerInstance player, int itemId)
{ {
return !_commissionItems.values().stream().filter(c -> (c.getItemInstance().getOwnerId() == player.getObjectId()) && (c.getItemInstance().getItem().getId() == itemId)).collect(Collectors.toList()).isEmpty(); for (CommissionItem item : _commissionItems.values())
{
if ((item.getItemInstance().getOwnerId() == player.getObjectId()) && (item.getItemInstance().getItem().getId() == itemId))
{
return true;
}
}
return false;
} }
/** /**
@@ -434,7 +434,24 @@ public class InstanceManager implements IXmlReader
*/ */
public Instance getPlayerInstance(PlayerInstance player, boolean isInside) public Instance getPlayerInstance(PlayerInstance player, boolean isInside)
{ {
return _instanceWorlds.values().stream().filter(i -> (isInside) ? i.containsPlayer(player) : i.isAllowed(player)).findFirst().orElse(null); for (Instance instance : _instanceWorlds.values())
{
if (isInside)
{
if (instance.containsPlayer(player))
{
return instance;
}
}
else
{
if (instance.isAllowed(player))
{
return instance;
}
}
}
return null;
} }
/** /**
@@ -656,7 +673,15 @@ public class InstanceManager implements IXmlReader
*/ */
public long getWorldCount(int templateId) public long getWorldCount(int templateId)
{ {
return _instanceWorlds.values().stream().filter(i -> i.getTemplateId() == templateId).count(); long count = 0;
for (Instance i : _instanceWorlds.values())
{
if (i.getTemplateId() == templateId)
{
count++;
}
}
return count;
} }
/** /**
@@ -140,7 +140,15 @@ public class MailManager
public long getUnreadCount(PlayerInstance player) public long getUnreadCount(PlayerInstance player)
{ {
return getInbox(player.getObjectId()).stream().filter(Message::isUnread).count(); long count = 0;
for (Message message : getInbox(player.getObjectId()))
{
if (message.isUnread())
{
count++;
}
}
return count;
} }
public int getMailsInProgress(int objectId) public int getMailsInProgress(int objectId)
@@ -16,6 +16,7 @@
*/ */
package org.l2jmobius.gameserver.instancemanager; package org.l2jmobius.gameserver.instancemanager;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -103,12 +104,19 @@ public class MatchingRoomManager
public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel) public List<MatchingRoom> getPartyMathchingRooms(int location, PartyMatchingRoomLevelType type, int requestorLevel)
{ {
//@formatter:off final List<MatchingRoom> result = new ArrayList<>();
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream() if (_rooms.containsKey(MatchingRoomType.PARTY))
.filter(room -> (location < 0) || (room.getLocation() == location)) {
.filter(room -> (type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel))) for (MatchingRoom room : _rooms.get(MatchingRoomType.PARTY).values())
.collect(Collectors.toList()); {
//@formatter:on if (((location < 0) || (room.getLocation() == location)) //
&& ((type == PartyMatchingRoomLevelType.ALL) || ((room.getMinLvl() >= requestorLevel) && (room.getMaxLvl() <= requestorLevel))))
{
result.add(room);
}
}
}
return result;
} }
public Map<Integer, MatchingRoom> getCCMathchingRooms() public Map<Integer, MatchingRoom> getCCMathchingRooms()
@@ -118,12 +126,19 @@ public class MatchingRoomManager
public List<MatchingRoom> getCCMathchingRooms(int location, int level) public List<MatchingRoom> getCCMathchingRooms(int location, int level)
{ {
//@formatter:off final List<MatchingRoom> result = new ArrayList<>();
return _rooms.getOrDefault(MatchingRoomType.COMMAND_CHANNEL, Collections.emptyMap()).values().stream() if (_rooms.containsKey(MatchingRoomType.COMMAND_CHANNEL))
.filter(r -> r.getLocation() == location) {
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level)) for (MatchingRoom room : _rooms.get(MatchingRoomType.COMMAND_CHANNEL).values())
.collect(Collectors.toList()); {
//@formatter:on if ((room.getLocation() == location) //
&& ((room.getMinLvl() <= level) && (room.getMaxLvl() >= level)))
{
result.add(room);
}
}
}
return result;
} }
public MatchingRoom getCCMatchingRoom(int roomId) public MatchingRoom getCCMatchingRoom(int roomId)
@@ -133,13 +148,18 @@ public class MatchingRoomManager
public MatchingRoom getPartyMathchingRoom(int location, int level) public MatchingRoom getPartyMathchingRoom(int location, int level)
{ {
//@formatter:off if (_rooms.containsKey(MatchingRoomType.PARTY))
return _rooms.getOrDefault(MatchingRoomType.PARTY, Collections.emptyMap()).values().stream() {
.filter(r -> r.getLocation() == location) for (MatchingRoom room : _rooms.get(MatchingRoomType.PARTY).values())
.filter(r -> (r.getMinLvl() <= level) && (r.getMaxLvl() >= level)) {
.findFirst() if ((room.getLocation() == location) //
.orElse(null); && ((room.getMinLvl() <= level) && (room.getMaxLvl() >= level)))
//@formatter:on {
return room;
}
}
}
return null;
} }
public MatchingRoom getPartyMathchingRoom(int roomId) public MatchingRoom getPartyMathchingRoom(int roomId)
@@ -24,7 +24,6 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -34,7 +33,6 @@ import org.l2jmobius.gameserver.model.Mentee;
import org.l2jmobius.gameserver.model.World; import org.l2jmobius.gameserver.model.World;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.BuffInfo;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.variables.PlayerVariables; import org.l2jmobius.gameserver.model.variables.PlayerVariables;
/** /**
@@ -134,13 +132,13 @@ public class MentorManager
return; return;
} }
//@formatter:off for (BuffInfo info : player.getEffectList().getEffects())
player.getEffectList().getEffects() {
.stream() if (info.getSkill().isMentoring())
.map(BuffInfo::getSkill) {
.filter(Skill::isMentoring) player.stopSkillEffects(info.getSkill());
.forEach(player::stopSkillEffects); }
//@formatter:on }
} }
public void setPenalty(int mentorId, long penalty) public void setPenalty(int mentorId, long penalty)
@@ -250,7 +248,14 @@ public class MentorManager
public boolean hasOnlineMentees(int menteorId) public boolean hasOnlineMentees(int menteorId)
{ {
return getMentees(menteorId).stream().filter(Objects::nonNull).filter(Mentee::isOnline).count() > 0; for (Mentee mentee : getMentees(menteorId))
{
if ((mentee != null) && mentee.isOnline())
{
return true;
}
}
return false;
} }
public static MentorManager getInstance() public static MentorManager getInstance()
@@ -177,14 +177,17 @@ public class PremiumManager
premiumData.put(accountName, newPremiumExpiration); premiumData.put(accountName, newPremiumExpiration);
// UPDATE PlAYER PREMIUMSTATUS // UPDATE PlAYER PREMIUMSTATUS
final PlayerInstance playerOnline = World.getInstance().getPlayers().stream().filter(p -> accountName.equals(p.getAccountName())).findFirst().orElse(null); for (PlayerInstance player : World.getInstance().getPlayers())
if (playerOnline != null)
{ {
stopExpireTask(playerOnline); if (accountName.equals(player.getAccountName()))
startExpireTask(playerOnline, newPremiumExpiration - now);
if (!playerOnline.hasPremiumStatus())
{ {
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) if (checkOnline)
{ {
final PlayerInstance playerOnline = World.getInstance().getPlayers().stream().filter(p -> accountName.equals(p.getAccountName())).findFirst().orElse(null); for (PlayerInstance player : World.getInstance().getPlayers())
if ((playerOnline != null) && playerOnline.hasPremiumStatus())
{ {
playerOnline.setPremiumStatus(false); if (accountName.equals(player.getAccountName()) && player.hasPremiumStatus())
stopExpireTask(playerOnline); {
player.setPremiumStatus(false);
stopExpireTask(player);
break;
}
} }
} }
@@ -379,7 +379,14 @@ public class SellBuffsManager implements IXmlReader
public boolean isInSellList(PlayerInstance player, Skill skill) 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) public boolean canStartSellBuffs(PlayerInstance player)
@@ -99,7 +99,14 @@ public class SiegeGuardManager
*/ */
public SiegeGuardHolder getSiegeGuardByItem(int castleId, int itemId) public SiegeGuardHolder getSiegeGuardByItem(int castleId, int itemId)
{ {
return CastleData.getInstance().getSiegeGuardsForCastle(castleId).stream().filter(g -> (g.getItemId() == itemId)).findFirst().orElse(null); for (SiegeGuardHolder holder : CastleData.getInstance().getSiegeGuardsForCastle(castleId))
{
if (holder.getItemId() == itemId)
{
return holder;
}
}
return null;
} }
/** /**
@@ -110,7 +117,14 @@ public class SiegeGuardManager
*/ */
public SiegeGuardHolder getSiegeGuardByNpc(int castleId, int npcId) public SiegeGuardHolder getSiegeGuardByNpc(int castleId, int npcId)
{ {
return CastleData.getInstance().getSiegeGuardsForCastle(castleId).stream().filter(g -> (g.getNpcId() == npcId)).findFirst().orElse(null); for (SiegeGuardHolder holder : CastleData.getInstance().getSiegeGuardsForCastle(castleId))
{
if (holder.getNpcId() == npcId)
{
return holder;
}
}
return null;
} }
/** /**
@@ -120,7 +134,14 @@ public class SiegeGuardManager
*/ */
public boolean isTooCloseToAnotherTicket(PlayerInstance player) public boolean isTooCloseToAnotherTicket(PlayerInstance player)
{ {
return _droppedTickets.stream().filter(g -> g.calculateDistance3D(player) < 25).findFirst().orElse(null) != null; for (ItemInstance ticket : _droppedTickets)
{
if (ticket.calculateDistance3D(player) < 25)
{
return true;
}
}
return false;
} }
/** /**
@@ -131,8 +152,15 @@ public class SiegeGuardManager
*/ */
public boolean isAtNpcLimit(int castleId, int itemId) public boolean isAtNpcLimit(int castleId, int itemId)
{ {
final long count = _droppedTickets.stream().filter(i -> i.getId() == itemId).count();
final SiegeGuardHolder holder = getSiegeGuardByItem(castleId, itemId); final SiegeGuardHolder holder = getSiegeGuardByItem(castleId, itemId);
long count = 0;
for (ItemInstance ticket : _droppedTickets)
{
if (ticket.getId() == itemId)
{
count++;
}
}
return count >= holder.getMaxNpcAmout(); return count >= holder.getMaxNpcAmout();
} }
@@ -24,7 +24,6 @@ import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.OptionalInt; import java.util.OptionalInt;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@@ -557,10 +556,12 @@ public class ZoneManager implements IXmlReader
{ {
for (Map<Integer, ? extends ZoneType> map : _classZones.values()) 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(); for (ZoneType zone : map.values())
if (zoneType.isPresent())
{ {
return zoneType.get(); if ((zone.getName() != null) && zone.getName().equals(name))
{
return zone;
}
} }
} }
return null; return null;
@@ -589,10 +590,15 @@ public class ZoneManager implements IXmlReader
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T extends ZoneType> T getZoneByName(String name, Class<T> zoneType) 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 (_classZones.containsKey(zoneType))
if (zone.isPresent())
{ {
return (T) zone.get(); for (ZoneType zone : _classZones.get(zoneType).values())
{
if ((zone.getName() != null) && zone.getName().equals(name))
{
return (T) zone;
}
}
} }
return null; return null;
} }
@@ -16,12 +16,12 @@
*/ */
package org.l2jmobius.gameserver.model; package org.l2jmobius.gameserver.model;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Optional; import java.util.Optional;
import java.util.Queue; import java.util.Queue;
import java.util.Set; import java.util.Set;
@@ -30,8 +30,6 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@@ -137,7 +135,15 @@ public class EffectList
*/ */
public List<BuffInfo> getBuffs() public List<BuffInfo> getBuffs()
{ {
return _actives.stream().filter(b -> b.getSkill().getBuffType().isBuff()).collect(Collectors.toList()); final List<BuffInfo> result = new ArrayList<>();
for (BuffInfo info : _actives)
{
if (info.getSkill().getBuffType().isBuff())
{
result.add(info);
}
}
return result;
} }
/** /**
@@ -146,7 +152,15 @@ public class EffectList
*/ */
public List<BuffInfo> getDances() public List<BuffInfo> getDances()
{ {
return _actives.stream().filter(b -> b.getSkill().getBuffType().isDance()).collect(Collectors.toList()); final List<BuffInfo> result = new ArrayList<>();
for (BuffInfo info : _actives)
{
if (info.getSkill().getBuffType().isDance())
{
result.add(info);
}
}
return result;
} }
/** /**
@@ -155,7 +169,15 @@ public class EffectList
*/ */
public List<BuffInfo> getDebuffs() public List<BuffInfo> getDebuffs()
{ {
return _actives.stream().filter(b -> b.getSkill().isDebuff()).collect(Collectors.toList()); final List<BuffInfo> result = new ArrayList<>();
for (BuffInfo info : _actives)
{
if (info.getSkill().getBuffType().isDebuff())
{
result.add(info);
}
}
return result;
} }
/** /**
@@ -165,7 +187,21 @@ public class EffectList
*/ */
public boolean isAffectedBySkill(int skillId) public boolean isAffectedBySkill(int skillId)
{ {
return (_actives.stream().anyMatch(i -> i.getSkill().getId() == skillId)) || (_passives.stream().anyMatch(i -> i.getSkill().getId() == skillId)); for (BuffInfo info : _actives)
{
if (info.getSkill().getId() == skillId)
{
return true;
}
}
for (BuffInfo info : _passives)
{
if (info.getSkill().getId() == skillId)
{
return true;
}
}
return false;
} }
/** /**
@@ -175,7 +211,21 @@ public class EffectList
*/ */
public BuffInfo getBuffInfoBySkillId(int skillId) public BuffInfo getBuffInfoBySkillId(int skillId)
{ {
return Stream.concat(_actives.stream(), _passives.stream()).filter(b -> b.getSkill().getId() == skillId).findFirst().orElse(null); for (BuffInfo info : _actives)
{
if (info.getSkill().getId() == skillId)
{
return info;
}
}
for (BuffInfo info : _passives)
{
if (info.getSkill().getId() == skillId)
{
return info;
}
}
return null;
} }
/** /**
@@ -195,7 +245,14 @@ public class EffectList
*/ */
public boolean hasAbnormalType(Collection<AbnormalType> types) public boolean hasAbnormalType(Collection<AbnormalType> types)
{ {
return _stackedEffects.stream().anyMatch(types::contains); for (AbnormalType abnormalType : _stackedEffects)
{
if (types.contains(abnormalType))
{
return true;
}
}
return false;
} }
/** /**
@@ -205,7 +262,17 @@ public class EffectList
*/ */
public boolean hasAbnormalType(AbnormalType type, Predicate<BuffInfo> filter) public boolean hasAbnormalType(AbnormalType type, Predicate<BuffInfo> filter)
{ {
return hasAbnormalType(type) && _actives.stream().filter(i -> i.isAbnormalType(type)).anyMatch(filter); if (hasAbnormalType(type))
{
for (BuffInfo info : _actives)
{
if (info.isAbnormalType(type) && filter.test(info))
{
return true;
}
}
}
return false;
} }
/** /**
@@ -216,7 +283,17 @@ public class EffectList
*/ */
public BuffInfo getFirstBuffInfoByAbnormalType(AbnormalType type) public BuffInfo getFirstBuffInfoByAbnormalType(AbnormalType type)
{ {
return hasAbnormalType(type) ? _actives.stream().filter(i -> i.isAbnormalType(type)).findFirst().orElse(null) : null; if (hasAbnormalType(type))
{
for (BuffInfo info : _actives)
{
if (info.isAbnormalType(type))
{
return info;
}
}
}
return null;
} }
/** /**
@@ -353,9 +430,18 @@ public class EffectList
*/ */
public void stopAllEffectsWithoutExclusions(boolean update, boolean broadcast) public void stopAllEffectsWithoutExclusions(boolean update, boolean broadcast)
{ {
_actives.stream().forEach(this::remove); for (BuffInfo info : _actives)
_passives.stream().forEach(this::remove); {
_options.stream().forEach(this::remove); remove(info);
}
for (BuffInfo info : _passives)
{
remove(info);
}
for (BuffInfo info : _options)
{
remove(info);
}
// Update stats, effect flags and icons. // Update stats, effect flags and icons.
if (update) if (update)
@@ -426,9 +512,26 @@ public class EffectList
*/ */
public void stopEffects(EffectFlag effectFlag) public void stopEffects(EffectFlag effectFlag)
{ {
if (isAffected(effectFlag)) if (isAffected(effectFlag) && !_actives.isEmpty())
{ {
stopEffects(info -> info.getEffects().stream().anyMatch(effect -> (effect != null) && ((effect.getEffectFlags() & effectFlag.getMask()) != 0)), true, true); boolean update = false;
for (BuffInfo info : _actives)
{
for (AbstractEffect effect : info.getEffects())
{
if ((effect != null) && ((effect.getEffectFlags() & effectFlag.getMask()) != 0))
{
remove(info);
update = true;
}
}
}
// Update stats, effect flags and icons.
if (update)
{
updateEffectList(true);
}
} }
} }
@@ -507,7 +610,13 @@ public class EffectList
{ {
if (!_actives.isEmpty()) if (!_actives.isEmpty())
{ {
_actives.stream().filter(filter).forEach(this::remove); for (BuffInfo info : _actives)
{
if (filter.test(info))
{
remove(info);
}
}
// Update stats, effect flags and icons. // Update stats, effect flags and icons.
if (update) if (update)
@@ -923,11 +1032,14 @@ public class EffectList
} }
// Remove previous passives of this id. // Remove previous passives of this id.
_passives.stream().filter(Objects::nonNull).filter(b -> b.getSkill().getId() == skill.getId()).forEach(b -> for (BuffInfo b : _passives)
{
if ((b != null) && (b.getSkill().getId() == skill.getId()))
{ {
b.setInUse(false); b.setInUse(false);
_passives.remove(b); _passives.remove(b);
}); }
}
_passives.add(info); _passives.add(info);
@@ -940,11 +1052,14 @@ public class EffectList
if (info.getOption() != null) if (info.getOption() != null)
{ {
// Remove previous options of this id. // Remove previous options of this id.
_options.stream().filter(Objects::nonNull).filter(b -> b.getOption().getId() == info.getOption().getId()).forEach(b -> for (BuffInfo b : _options)
{
if ((b != null) && (b.getOption().getId() == info.getOption().getId()))
{ {
b.setInUse(false); b.setInUse(false);
_options.remove(b); _options.remove(b);
}); }
}
_options.add(info); _options.add(info);
@@ -969,11 +1084,9 @@ public class EffectList
final Optional<ExOlympiadSpelledInfo> os = (player.isInOlympiadMode() && player.isOlympiadStart()) ? Optional.of(new ExOlympiadSpelledInfo(player)) : Optional.empty(); final Optional<ExOlympiadSpelledInfo> os = (player.isInOlympiadMode() && player.isOlympiadStart()) ? Optional.of(new ExOlympiadSpelledInfo(player)) : Optional.empty();
if (!_actives.isEmpty()) if (!_actives.isEmpty())
{ {
//@formatter:off for (BuffInfo info : _actives)
_actives.stream() {
.filter(Objects::nonNull) if ((info != null) && info.isInUse())
.filter(BuffInfo::isInUse)
.forEach(info ->
{ {
if (info.getSkill().isHealingPotionSkill()) if (info.getSkill().isHealingPotionSkill())
{ {
@@ -985,8 +1098,8 @@ public class EffectList
ps.filter(p -> !info.getSkill().isToggle()).ifPresent(p -> p.addSkill(info)); ps.filter(p -> !info.getSkill().isToggle()).ifPresent(p -> p.addSkill(info));
os.ifPresent(o -> o.addSkill(info)); os.ifPresent(o -> o.addSkill(info));
} }
}); }
//@formatter:on }
} }
// Send icon update for player buff bar. // Send icon update for player buff bar.
@@ -1015,14 +1128,13 @@ public class EffectList
// Update effect icons for everyone targeting this owner. // Update effect icons for everyone targeting this owner.
final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(_owner); final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(_owner);
for (Creature creature : _owner.getStatus().getStatusListener())
// @formatter:off {
_owner.getStatus().getStatusListener().stream() if ((creature != null) && creature.isPlayer())
.filter(Objects::nonNull) {
.filter(WorldObject::isPlayer) upd.sendTo(creature.getActingPlayer());
.map(Creature::getActingPlayer) }
.forEach(upd::sendTo); }
// @formatter:on
if (_owner.isPlayer() && (_owner.getTarget() == _owner)) if (_owner.isPlayer() && (_owner.getTarget() == _owner))
{ {
@@ -333,7 +333,13 @@ public class Party extends AbstractPlayerGroup
msg.addString(player.getName()); msg.addString(player.getName());
broadcastPacket(msg); 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 // send the position of all party members to the new party member
// player.sendPacket(new PartyMemberPosition(this)); // player.sendPacket(new PartyMemberPosition(this));
@@ -856,10 +862,13 @@ public class Party extends AbstractPlayerGroup
// The servitor penalty // The servitor penalty
float penalty = 1; float penalty = 1;
final Summon summon = member.getServitors().values().stream().filter(s -> ((ServitorInstance) s).getExpMultiplier() > 1).findFirst().orElse(null); for (Summon summon : member.getServitors().values())
if (summon != null) {
if (((ServitorInstance) summon).getExpMultiplier() > 1)
{ {
penalty = ((ServitorInstance) summon).getExpMultiplier(); penalty = ((ServitorInstance) summon).getExpMultiplier();
break;
}
} }
final double sqLevel = member.getLevel() * member.getLevel(); final double sqLevel = member.getLevel() * member.getLevel();
@@ -22,11 +22,9 @@ import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
@@ -395,11 +393,27 @@ public class Attackable extends Npc
if (party != null) if (party != null)
{ {
final CommandChannel command = party.getCommandChannel(); final CommandChannel command = party.getCommandChannel();
//@formatter:off final List<PlayerInstance> members = new ArrayList<>();
final List<PlayerInstance> members = command != null ? if (command != null)
command.getMembers().stream().filter(p -> p.calculateDistance3D(this) < Config.ALT_PARTY_RANGE).collect(Collectors.toList()) : {
player.getParty().getMembers().stream().filter(p -> p.calculateDistance3D(this) < Config.ALT_PARTY_RANGE).collect(Collectors.toList()); for (PlayerInstance p : command.getMembers())
//@formatter:on {
if (p.calculateDistance3D(this) < Config.ALT_PARTY_RANGE)
{
members.add(p);
}
}
}
else
{
for (PlayerInstance p : player.getParty().getMembers())
{
if (p.calculateDistance3D(this) < Config.ALT_PARTY_RANGE)
{
members.add(p);
}
}
}
members.forEach(p -> members.forEach(p ->
{ {
@@ -457,10 +471,13 @@ public class Attackable extends Npc
// If this attacker have servitor, get Exp Penalty applied for the servitor. // If this attacker have servitor, get Exp Penalty applied for the servitor.
float penalty = 1; float penalty = 1;
final Optional<Summon> summon = attacker.getServitors().values().stream().filter(s -> ((ServitorInstance) s).getExpMultiplier() > 1).findFirst(); for (Summon summon : attacker.getServitors().values())
if (summon.isPresent())
{ {
penalty = ((ServitorInstance) summon.get()).getExpMultiplier(); if (((ServitorInstance) summon).getExpMultiplier() > 1)
{
penalty = ((ServitorInstance) summon).getExpMultiplier();
break;
}
} }
// If there's NO party in progress // If there's NO party in progress
@@ -19,6 +19,7 @@ package org.l2jmobius.gameserver.model.actor;
import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE; import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_ACTIVE;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet; import java.util.EnumSet;
@@ -37,7 +38,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.StampedLock; import java.util.concurrent.locks.StampedLock;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
@@ -5085,7 +5085,16 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{ {
filter = filter.and(additionalFilter); filter = filter.and(additionalFilter);
} }
return _skillCasters.values().stream().filter(filter).collect(Collectors.toList());
final List<SkillCaster> result = new ArrayList<>();
for (SkillCaster skillCaster : _skillCasters.values())
{
if (filter.test(skillCaster))
{
result.add(skillCaster);
}
}
return result;
} }
@SafeVarargs @SafeVarargs
@@ -5096,7 +5105,15 @@ public abstract class Creature extends WorldObject implements ISkillsHolder, IDe
{ {
filter = filter.and(additionalFilter); filter = filter.and(additionalFilter);
} }
return _skillCasters.values().stream().filter(filter).findAny().orElse(null);
for (SkillCaster skillCaster : _skillCasters.values())
{
if (filter.test(skillCaster))
{
return skillCaster;
}
}
return null;
} }
/** /**
@@ -5416,7 +5416,14 @@ public class PlayerInstance extends Playable
*/ */
public TrapInstance getTrap() public TrapInstance getTrap()
{ {
return getSummonedNpcs().stream().filter(Npc::isTrap).map(TrapInstance.class::cast).findAny().orElse(null); for (Npc npc : getSummonedNpcs())
{
if (npc.isTrap())
{
return (TrapInstance) npc;
}
}
return null;
} }
/** /**
@@ -9663,12 +9670,26 @@ public class PlayerInstance extends Playable
public boolean hasDualClass() public boolean hasDualClass()
{ {
return getSubClasses().values().stream().anyMatch(SubClass::isDualClass); for (SubClass subClass : _subClasses.values())
{
if (subClass.isDualClass())
{
return true;
}
}
return false;
} }
public SubClass getDualClass() public SubClass getDualClass()
{ {
return getSubClasses().values().stream().filter(SubClass::isDualClass).findFirst().orElse(null); for (SubClass subClass : _subClasses.values())
{
if (subClass.isDualClass())
{
return subClass;
}
}
return null;
} }
public Map<Integer, SubClass> getSubClasses() public Map<Integer, SubClass> getSubClasses()
@@ -11613,7 +11634,13 @@ public class PlayerInstance extends Playable
if (isTransformed() && !_transformSkills.isEmpty()) if (isTransformed() && !_transformSkills.isEmpty())
{ {
// Include transformation skills and those skills that are allowed during transformation. // Include transformation skills and those skills that are allowed during transformation.
currentSkills = currentSkills.stream().filter(Skill::allowOnTransform).collect(Collectors.toList()); for (Skill skill : currentSkills)
{
if (!skill.allowOnTransform())
{
currentSkills.remove(skill);
}
}
// Revelation skills. // Revelation skills.
if (isDualClassActive()) if (isDualClassActive())
@@ -11646,14 +11673,18 @@ public class PlayerInstance extends Playable
currentSkills.addAll(_transformSkills.values()); currentSkills.addAll(_transformSkills.values());
} }
//@formatter:off for (Skill skill : currentSkills)
return currentSkills.stream() {
.filter(Objects::nonNull) if ((skill == null) //
.filter(s -> !s.isBlockActionUseSkill()) // Skills that are blocked from player use are not shown in skill list. || skill.isBlockActionUseSkill() // Skills that are blocked from player use are not shown in skill list.
.filter(s -> !SkillTreeData.getInstance().isAlchemySkill(s.getId(), s.getLevel())) || SkillTreeData.getInstance().isAlchemySkill(skill.getId(), skill.getLevel()) //
.filter(s -> s.isDisplayInList()) || !skill.isDisplayInList())
.collect(Collectors.toList()); {
//@formatter:on currentSkills.remove(skill);
}
}
return currentSkills;
} }
protected void startFeed(int npcId) protected void startFeed(int npcId)
@@ -13704,9 +13735,17 @@ public class PlayerInstance extends Playable
* @param clazz * @param clazz
* @return the event instance or null in case events map is not initialized yet or event is not registered * @return the event instance or null in case events map is not initialized yet or event is not registered
*/ */
@SuppressWarnings("unchecked")
public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz) public <T extends AbstractEvent<?>> T getEvent(Class<T> clazz)
{ {
return _events.values().stream().filter(event -> clazz.isAssignableFrom(event.getClass())).map(clazz::cast).findFirst().orElse(null); for (AbstractEvent<?> event : _events.values())
{
if (clazz.isAssignableFrom(event.getClass()))
{
return (T) event;
}
}
return null;
} }
/** /**
@@ -13714,7 +13753,11 @@ public class PlayerInstance extends Playable
*/ */
public AbstractEvent<?> getEvent() public AbstractEvent<?> getEvent()
{ {
return _events.values().stream().findFirst().orElse(null); for (AbstractEvent<?> event : _events.values())
{
return event;
}
return null;
} }
/** /**
@@ -64,7 +64,14 @@ public class SayuneRequest extends AbstractRequest
} }
else if (_isSelecting) else if (_isSelecting)
{ {
return _possibleEntries.stream().filter(loc -> loc.getId() == pos).findAny().orElse(null); for (SayuneEntry entry : _possibleEntries)
{
if (entry.getId() == pos)
{
return entry;
}
}
return null;
} }
return _possibleEntries.removeFirst(); return _possibleEntries.removeFirst();
} }
@@ -31,13 +31,12 @@ import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.BiFunction; import java.util.function.BiFunction;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import java.util.stream.Stream;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.gameserver.enums.AttributeType; import org.l2jmobius.gameserver.enums.AttributeType;
import org.l2jmobius.gameserver.enums.Position; import org.l2jmobius.gameserver.enums.Position;
import org.l2jmobius.gameserver.model.EffectList;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.AbnormalType; import org.l2jmobius.gameserver.model.skills.AbnormalType;
import org.l2jmobius.gameserver.model.skills.BuffInfo; import org.l2jmobius.gameserver.model.skills.BuffInfo;
@@ -896,36 +895,80 @@ public class CreatureStat
// Wipe all the data // Wipe all the data
resetStats(); resetStats();
// Collect all necessary effects
final EffectList effectList = _creature.getEffectList();
final Stream<BuffInfo> passives = effectList.getPassives().stream().filter(BuffInfo::isInUse).filter(info -> info.getSkill().checkConditions(SkillConditionScope.PASSIVE, _creature, _creature));
final Stream<BuffInfo> options = effectList.getOptions().stream().filter(BuffInfo::isInUse);
final Stream<BuffInfo> effectsStream = Stream.concat(effectList.getEffects().stream().filter(BuffInfo::isInUse), Stream.concat(passives, options));
// Call pump to each effect // Call pump to each effect
//@formatter:off for (BuffInfo info : _creature.getEffectList().getPassives())
effectsStream.forEach(info -> info.getEffects().stream() {
.filter(effect -> effect.canStart(info.getEffector(), info.getEffected(), info.getSkill())) if (info.isInUse() && info.getSkill().checkConditions(SkillConditionScope.PASSIVE, _creature, _creature))
.filter(effect -> effect.canPump(info.getEffector(), info.getEffected(), info.getSkill())) {
.forEach(effect -> effect.pump(info.getEffected(), info.getSkill()))); for (AbstractEffect effect : info.getEffects())
//@formatter:on {
if (effect.canStart(info.getEffector(), info.getEffected(), info.getSkill()) && effect.canPump(info.getEffector(), info.getEffected(), info.getSkill()))
{
effect.pump(info.getEffected(), info.getSkill());
}
}
}
}
for (BuffInfo info : _creature.getEffectList().getOptions())
{
if (info.isInUse())
{
for (AbstractEffect effect : info.getEffects())
{
if (effect.canStart(info.getEffector(), info.getEffected(), info.getSkill()) && effect.canPump(info.getEffector(), info.getEffected(), info.getSkill()))
{
effect.pump(info.getEffected(), info.getSkill());
}
}
}
}
for (BuffInfo info : _creature.getEffectList().getEffects())
{
if (info.isInUse())
{
for (AbstractEffect effect : info.getEffects())
{
if (effect.canStart(info.getEffector(), info.getEffected(), info.getSkill()) && effect.canPump(info.getEffector(), info.getEffected(), info.getSkill()))
{
effect.pump(info.getEffected(), info.getSkill());
}
}
}
}
// Pump for summon ABILITY_CHANGE abnormal type.
if (_creature.isSummon() && (_creature.getActingPlayer() != null) && _creature.getActingPlayer().hasAbnormalType(AbnormalType.ABILITY_CHANGE)) if (_creature.isSummon() && (_creature.getActingPlayer() != null) && _creature.getActingPlayer().hasAbnormalType(AbnormalType.ABILITY_CHANGE))
{ {
//@formatter:off for (BuffInfo info : _creature.getActingPlayer().getEffectList().getEffects())
_creature.getActingPlayer().getEffectList().getEffects().stream() {
.filter(BuffInfo::isInUse) if (info.isInUse() && info.isAbnormalType(AbnormalType.ABILITY_CHANGE))
.filter(info -> info.isAbnormalType(AbnormalType.ABILITY_CHANGE)) {
.forEach(info -> info.getEffects().stream() for (AbstractEffect effect : info.getEffects())
.filter(effect -> effect.canStart(info.getEffector(), info.getEffected(), info.getSkill())) {
.filter(effect -> effect.canPump(_creature, _creature, info.getSkill())) if (effect.canStart(info.getEffector(), info.getEffected(), info.getSkill()) && effect.canPump(_creature, _creature, info.getSkill()))
.forEach(effect -> effect.pump(_creature, info.getSkill()))); {
//@formatter:on effect.pump(_creature, info.getSkill());
}
}
}
}
} }
// Merge with additional stats // Merge with additional stats
_additionalAdd.stream().filter(holder -> holder.verifyCondition(_creature)).forEach(holder -> mergeAdd(holder.getStat(), holder.getValue())); for (StatHolder holder : _additionalAdd)
_additionalMul.stream().filter(holder -> holder.verifyCondition(_creature)).forEach(holder -> mergeMul(holder.getStat(), holder.getValue())); {
if (holder.verifyCondition(_creature))
{
mergeAdd(holder.getStat(), holder.getValue());
}
}
for (StatHolder holder : _additionalMul)
{
if (holder.verifyCondition(_creature))
{
mergeMul(holder.getStat(), holder.getValue());
}
}
_attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature); _attackSpeedMultiplier = Formulas.calcAtkSpdMultiplier(_creature);
_mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature); _mAttackSpeedMultiplier = Formulas.calcMAtkSpdMultiplier(_creature);
} }
@@ -18,11 +18,11 @@ package org.l2jmobius.gameserver.model.actor.transform;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import org.l2jmobius.gameserver.data.xml.impl.SkillTreeData; import org.l2jmobius.gameserver.data.xml.impl.SkillTreeData;
import org.l2jmobius.gameserver.enums.InventoryBlockType; import org.l2jmobius.gameserver.enums.InventoryBlockType;
import org.l2jmobius.gameserver.enums.Sex; import org.l2jmobius.gameserver.enums.Sex;
import org.l2jmobius.gameserver.model.SkillLearn;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Npc;
@@ -35,6 +35,7 @@ import org.l2jmobius.gameserver.model.holders.SkillHolder;
import org.l2jmobius.gameserver.model.interfaces.IIdentifiable; import org.l2jmobius.gameserver.model.interfaces.IIdentifiable;
import org.l2jmobius.gameserver.model.items.type.WeaponType; import org.l2jmobius.gameserver.model.items.type.WeaponType;
import org.l2jmobius.gameserver.model.skills.AbnormalType; import org.l2jmobius.gameserver.model.skills.AbnormalType;
import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.model.stats.Stat; import org.l2jmobius.gameserver.model.stats.Stat;
import org.l2jmobius.gameserver.network.serverpackets.ExBasicActionList; import org.l2jmobius.gameserver.network.serverpackets.ExBasicActionList;
import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoEquipSlot; import org.l2jmobius.gameserver.network.serverpackets.ExUserInfoEquipSlot;
@@ -259,27 +260,30 @@ public class Transform implements IIdentifiable
if (addSkills) if (addSkills)
{ {
//@formatter:off
// Add common skills. // Add common skills.
template.getSkills() for (SkillHolder h : template.getSkills())
.stream() {
.map(SkillHolder::getSkill) player.addTransformSkill(h.getSkill());
.forEach(player::addTransformSkill); }
// Add skills depending on level. // Add skills depending on level.
template.getAdditionalSkills() for (AdditionalSkillHolder h : template.getAdditionalSkills())
.stream() {
.filter(h -> player.getLevel() >= h.getMinLevel()) if (player.getLevel() >= h.getMinLevel())
.map(SkillHolder::getSkill) {
.forEach(player::addTransformSkill); player.addTransformSkill(h.getSkill());
}
}
// Add collection skills. // Add collection skills.
SkillTreeData.getInstance().getCollectSkillTree().values() for (SkillLearn s : SkillTreeData.getInstance().getCollectSkillTree().values())
.stream() {
.map(s -> player.getKnownSkill(s.getSkillId())) final Skill skill = player.getKnownSkill(s.getSkillId());
.filter(Objects::nonNull) if (skill != null)
.forEach(player::addTransformSkill); {
//@formatter:on player.addTransformSkill(skill);
}
}
} }
// Set inventory blocks if needed. // Set inventory blocks if needed.
@@ -276,7 +276,13 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember>
public void stopFight() public void stopFight()
{ {
getMembers().values().stream().filter(p -> p.getLifeTime() == 0).forEach(this::updateLifeTime); for (CeremonyOfChaosMember member : getMembers().values())
{
if (member.getLifeTime() == 0)
{
updateLifeTime(member);
}
}
validateWinner(); validateWinner();
final List<CeremonyOfChaosMember> winners = getWinners(); final List<CeremonyOfChaosMember> winners = getWinners();
@@ -503,7 +509,15 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember>
getMembers().values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p))); getMembers().values().forEach(p -> broadcastPacket(new ExCuriousHouseMemberUpdate(p)));
// Validate winner // Validate winner
if (getMembers().values().stream().filter(member -> !member.isDefeated()).count() <= 1) int count = 0;
for (CeremonyOfChaosMember member : getMembers().values())
{
if (!member.isDefeated())
{
count++;
}
}
if (count <= 1)
{ {
stopFight(); stopFight();
} }
@@ -601,12 +615,13 @@ public class CeremonyOfChaosEvent extends AbstractEvent<CeremonyOfChaosMember>
targetMember.setDefeated(true); targetMember.setDefeated(true);
// Delete target player // Delete target player
//@formatter:off for (CeremonyOfChaosMember member : getMembers().values())
getMembers().values().stream() {
.filter(member -> member.getObjectId() != targetPlayer.getObjectId()) if (member.getObjectId() != targetPlayer.getObjectId())
.map(CeremonyOfChaosMember::getPlayer) {
.forEach(deleteObject::sendTo); deleteObject.sendTo(member.getPlayer());
//@formatter:on }
}
// Make the target observer // Make the target observer
targetPlayer.setObserving(true); targetPlayer.setObserving(true);
@@ -20,17 +20,16 @@ import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
@@ -662,14 +661,15 @@ public class Clan implements IIdentifiable, INamable
*/ */
public List<PlayerInstance> getOnlineMembers(int exclude) public List<PlayerInstance> getOnlineMembers(int exclude)
{ {
//@formatter:off final List<PlayerInstance> result = new ArrayList<>();
return _members.values().stream() for (ClanMember member : _members.values())
.filter(member -> member.getObjectId() != exclude) {
.filter(ClanMember::isOnline) if ((member.getObjectId() != exclude) && member.isOnline() && (member.getPlayerInstance() != null))
.map(ClanMember::getPlayerInstance) {
.filter(Objects::nonNull) result.add(member.getPlayerInstance());
.collect(Collectors.toList()); }
//@formatter:on }
return result;
} }
/** /**
@@ -677,11 +677,15 @@ public class Clan implements IIdentifiable, INamable
*/ */
public int getOnlineMembersCount() public int getOnlineMembersCount()
{ {
//@formatter:off int count = 0;
return (int) _members.values().stream() for (ClanMember member : _members.values())
.filter(ClanMember::isOnline) {
.count(); if (member.isOnline())
//@formatter:on {
count++;
}
}
return count;
} }
/** /**
@@ -3055,7 +3059,14 @@ public class Clan implements IIdentifiable, INamable
} }
} }
final int currentMaxOnline = (int) _members.values().stream().filter(member -> member.getOnlineTime() > Config.ALT_CLAN_MEMBERS_TIME_FOR_BONUS).count(); int currentMaxOnline = 0;
for (ClanMember member : _members.values())
{
if (member.getOnlineTime() > Config.ALT_CLAN_MEMBERS_TIME_FOR_BONUS)
{
currentMaxOnline++;
}
}
if (getMaxOnlineMembers() < currentMaxOnline) if (getMaxOnlineMembers() < currentMaxOnline)
{ {
getVariables().set("MAX_ONLINE_MEMBERS", currentMaxOnline); getVariables().set("MAX_ONLINE_MEMBERS", currentMaxOnline);
@@ -23,7 +23,6 @@ import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -888,12 +887,26 @@ public class Castle extends AbstractResidence
public DoorInstance getDoor(int doorId) public DoorInstance getDoor(int doorId)
{ {
return _doors.stream().filter(d -> d.getId() == doorId).findFirst().orElse(null); for (DoorInstance door : _doors)
{
if (door.getId() == doorId)
{
return door;
}
}
return null;
} }
public DoorInstance getDoor(String doorName) public DoorInstance getDoor(String doorName)
{ {
return _doors.stream().filter(d -> d.getTemplate().getName().equals(doorName)).findFirst().orElse(null); for (DoorInstance door : _doors)
{
if (door.getTemplate().getName().equals(doorName))
{
return door;
}
}
return null;
} }
public List<DoorInstance> getDoors() public List<DoorInstance> getDoors()
@@ -1163,7 +1176,13 @@ public class Castle extends AbstractResidence
public void spawnSideNpcs() public void spawnSideNpcs()
{ {
_sideNpcs.stream().filter(Objects::nonNull).forEach(Npc::deleteMe); for (Npc npc : _sideNpcs)
{
if (npc != null)
{
npc.deleteMe();
}
}
_sideNpcs.clear(); _sideNpcs.clear();
for (CastleSpawnHolder holder : getSideSpawns()) for (CastleSpawnHolder holder : getSideSpawns())
@@ -22,12 +22,12 @@ import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
@@ -150,10 +150,13 @@ public class ClanHall extends AbstractResidence
@Override @Override
protected void initResidenceZone() protected void initResidenceZone()
{ {
final ClanHallZone zone = ZoneManager.getInstance().getAllZones(ClanHallZone.class).stream().filter(z -> z.getResidenceId() == getResidenceId()).findFirst().orElse(null); for (ClanHallZone zone : ZoneManager.getInstance().getAllZones(ClanHallZone.class))
if (zone != null) {
if (zone.getResidenceId() == getResidenceId())
{ {
setResidenceZone(zone); setResidenceZone(zone);
break;
}
} }
} }
@@ -328,7 +331,15 @@ public class ClanHall extends AbstractResidence
public List<ClanHallTeleportHolder> getTeleportList(int functionLevel) public List<ClanHallTeleportHolder> getTeleportList(int functionLevel)
{ {
return _teleports.stream().filter(holder -> holder.getMinFunctionLevel() <= functionLevel).collect(Collectors.toList()); final List<ClanHallTeleportHolder> result = new ArrayList<>();
for (ClanHallTeleportHolder holder : _teleports)
{
if (holder.getMinFunctionLevel() <= functionLevel)
{
result.add(holder);
}
}
return result;
} }
public int getMinBid() public int getMinBid()
@@ -610,8 +610,15 @@ public class Duel
} }
final int instanceId = DuelManager.getInstance().getDuelArena(); final int instanceId = DuelManager.getInstance().getDuelArena();
final OlympiadStadiumZone zone = ZoneManager.getInstance().getAllZones(OlympiadStadiumZone.class) // OlympiadStadiumZone zone = null;
.stream().filter(z -> z.getInstanceTemplateId() == instanceId).findFirst().orElse(null); for (OlympiadStadiumZone z : ZoneManager.getInstance().getAllZones(OlympiadStadiumZone.class))
{
if (z.getInstanceTemplateId() == instanceId)
{
zone = z;
break;
}
}
if (zone == null) if (zone == null)
{ {
throw new RuntimeException("Unable to find a party duel arena!"); throw new RuntimeException("Unable to find a party duel arena!");
@@ -25,13 +25,11 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.concurrent.ThreadPool; import org.l2jmobius.commons.concurrent.ThreadPool;
@@ -790,14 +788,22 @@ public class Siege implements Siegable
@Override @Override
public List<PlayerInstance> getAttackersInZone() public List<PlayerInstance> getAttackersInZone()
{ {
//@formatter:off final List<PlayerInstance> result = new ArrayList<>();
return getAttackerClans().stream() for (SiegeClan siegeclan : getAttackerClans())
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId())) {
.filter(Objects::nonNull) final Clan clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
.flatMap(clan -> clan.getOnlineMembers(0).stream()) if (clan != null)
.filter(PlayerInstance::isInSiege) {
.collect(Collectors.toList()); for (PlayerInstance member : clan.getOnlineMembers(0))
//@formatter:on {
if (member.isInSiege())
{
result.add(member);
}
}
}
}
return result;
} }
/** /**
@@ -813,15 +819,25 @@ public class Siege implements Siegable
*/ */
public List<PlayerInstance> getOwnersInZone() public List<PlayerInstance> getOwnersInZone()
{ {
//@formatter:off final List<PlayerInstance> result = new ArrayList<>();
return getDefenderClans().stream() for (SiegeClan siegeclan : getDefenderClans())
.filter(siegeclan -> siegeclan.getClanId() == _castle.getOwnerId()) {
.map(siegeclan -> ClanTable.getInstance().getClan(siegeclan.getClanId())) if (siegeclan.getClanId() == _castle.getOwnerId())
.filter(Objects::nonNull) {
.flatMap(clan -> clan.getOnlineMembers(0).stream()) final Clan clan = ClanTable.getInstance().getClan(siegeclan.getClanId());
.filter(PlayerInstance::isInSiege) if (clan != null)
.collect(Collectors.toList()); {
//@formatter:on for (PlayerInstance member : clan.getOnlineMembers(0))
{
if (member.isInSiege())
{
result.add(member);
}
}
}
}
}
return result;
} }
/** /**
@@ -829,7 +845,15 @@ public class Siege implements Siegable
*/ */
public List<PlayerInstance> getSpectatorsInZone() public List<PlayerInstance> getSpectatorsInZone()
{ {
return _castle.getZone().getPlayersInside().stream().filter(p -> !p.isInSiege()).collect(Collectors.toList()); final List<PlayerInstance> result = new ArrayList<>();
for (PlayerInstance player : _castle.getZone().getPlayersInside())
{
if (!player.isInSiege())
{
result.add(player);
}
}
return result;
} }
/** /**
@@ -81,7 +81,14 @@ public abstract class AbstractEventManager<T extends AbstractEvent<?>>extends Ab
public EventScheduler getScheduler(String name) public EventScheduler getScheduler(String name)
{ {
return _schedulers.stream().filter(scheduler -> scheduler.getName().equalsIgnoreCase(name)).findFirst().orElse(null); for (EventScheduler scheduler : _schedulers)
{
if (scheduler.getName().equalsIgnoreCase(name))
{
return scheduler;
}
}
return null;
} }
public void setSchedulers(Set<EventScheduler> schedulers) public void setSchedulers(Set<EventScheduler> schedulers)
@@ -134,11 +141,13 @@ public abstract class AbstractEventManager<T extends AbstractEvent<?>>extends Ab
public void startConditionalSchedulers() public void startConditionalSchedulers()
{ {
//@formatter:off for (IConditionalEventScheduler scheduler : _conditionalSchedulers)
_conditionalSchedulers.stream() {
.filter(IConditionalEventScheduler::test) if (scheduler.test())
.forEach(IConditionalEventScheduler::run); {
//@formatter:on scheduler.run();
}
}
} }
/* ********************** */ /* ********************** */
@@ -82,14 +82,29 @@ public class ListenersContainer
public void removeListenerIf(EventType type, Predicate<? super AbstractEventListener> filter) 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) public void removeListenerIf(Predicate<? super AbstractEventListener> filter)
{ {
if (_listeners != null) if (_listeners != null)
{ {
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();
}
}
}
} }
} }
@@ -57,11 +57,17 @@ public class PreparedMultisellListHolder extends MultisellListHolder
inventory.getItems(item -> !item.isEquipped() && (item.isArmor() || item.isWeapon())).forEach(item -> inventory.getItems(item -> !item.isEquipped() && (item.isArmor() || item.isWeapon())).forEach(item ->
{ {
// Check ingredients of each entry to see if it's an entry we'd like to include. // Check ingredients of each entry to see if it's an entry we'd like to include.
list.getEntries().stream().filter(e -> e.getIngredients().stream().anyMatch(i -> i.getId() == item.getId())).forEach(e -> for (MultisellEntryHolder entry : list.getEntries())
{ {
_entries.add(e); for (ItemChanceHolder holder : entry.getIngredients())
{
if (holder.getId() == item.getId())
{
_entries.add(entry);
_itemInfos.add(new ItemInfo(item)); _itemInfos.add(new ItemInfo(item));
}); }
}
}
}); });
} }
} }
@@ -119,8 +119,15 @@ public class Instance implements IIdentifiable, INamable
setStatus(0); setStatus(0);
spawnDoors(); spawnDoors();
// initialize instance spawns // Initialize instance spawns.
_spawns.stream().filter(SpawnTemplate::isSpawningByDefault).forEach(spawnTemplate -> spawnTemplate.spawnAll(this)); for (SpawnTemplate spawnTemplate : _spawns)
{
if (spawnTemplate.isSpawningByDefault())
{
spawnTemplate.spawnAll(this);
}
}
if (!isDynamic()) if (!isDynamic())
{ {
// Notify DP scripts // Notify DP scripts
@@ -325,7 +332,11 @@ public class Instance implements IIdentifiable, INamable
*/ */
public PlayerInstance getFirstPlayer() public PlayerInstance getFirstPlayer()
{ {
return _players.stream().findFirst().orElse(null); for (PlayerInstance player : _players)
{
return player;
}
return null;
} }
/** /**
@@ -335,7 +346,14 @@ public class Instance implements IIdentifiable, INamable
*/ */
public PlayerInstance getPlayerById(int id) public PlayerInstance getPlayerById(int id)
{ {
return _players.stream().filter(p -> p.getObjectId() == id).findFirst().orElse(null); for (PlayerInstance player : _players)
{
if (player.getObjectId() == id)
{
return player;
}
}
return null;
} }
/** /**
@@ -344,9 +362,17 @@ public class Instance implements IIdentifiable, INamable
* @param radius radius around target * @param radius radius around target
* @return players within radius * @return players within radius
*/ */
public Set<PlayerInstance> getPlayersInsideRadius(ILocational object, int radius) public List<PlayerInstance> getPlayersInsideRadius(ILocational object, int radius)
{ {
return _players.stream().filter(p -> p.isInsideRadius3D(object, radius)).collect(Collectors.toSet()); final List<PlayerInstance> result = new ArrayList<>();
for (PlayerInstance player : _players)
{
if (player.isInsideRadius3D(object, radius))
{
result.add(player);
}
}
return result;
} }
/** /**
@@ -543,9 +569,17 @@ public class Instance implements IIdentifiable, INamable
* Get alive NPCs from instance. * Get alive NPCs from instance.
* @return set of NPCs from instance * @return set of NPCs from instance
*/ */
public Set<Npc> getAliveNpcs() public List<Npc> getAliveNpcs()
{ {
return _npcs.stream().filter(n -> n.getCurrentHp() > 0).collect(Collectors.toSet()); final List<Npc> result = new ArrayList<>();
for (Npc npc : _npcs)
{
if (npc.getCurrentHp() > 0)
{
result.add(npc);
}
}
return result;
} }
/** /**
@@ -555,7 +589,15 @@ public class Instance implements IIdentifiable, INamable
*/ */
public List<Npc> getNpcs(int... id) public List<Npc> getNpcs(int... id)
{ {
return _npcs.stream().filter(n -> CommonUtil.contains(id, n.getId())).collect(Collectors.toList()); final List<Npc> result = new ArrayList<>();
for (Npc npc : _npcs)
{
if (CommonUtil.contains(id, npc.getId()))
{
result.add(npc);
}
}
return result;
} }
/** /**
@@ -566,9 +608,18 @@ public class Instance implements IIdentifiable, INamable
* @return list of filtered NPCs from instance * @return list of filtered NPCs from instance
*/ */
@SafeVarargs @SafeVarargs
@SuppressWarnings("unchecked")
public final <T extends Creature> List<T> getNpcs(Class<T> clazz, int... ids) public final <T extends Creature> List<T> getNpcs(Class<T> clazz, int... ids)
{ {
return _npcs.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 : _npcs)
{
if (((ids.length == 0) || CommonUtil.contains(ids, npc.getId())) && clazz.isInstance(npc))
{
result.add((T) npc);
}
}
return result;
} }
/** /**
@@ -579,9 +630,18 @@ public class Instance implements IIdentifiable, INamable
* @return list of filtered NPCs from instance * @return list of filtered NPCs from instance
*/ */
@SafeVarargs @SafeVarargs
@SuppressWarnings("unchecked")
public final <T extends Creature> List<T> getAliveNpcs(Class<T> clazz, int... ids) public final <T extends Creature> List<T> getAliveNpcs(Class<T> clazz, int... ids)
{ {
return _npcs.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 : _npcs)
{
if ((((ids.length == 0) || CommonUtil.contains(ids, npc.getId())) && (npc.getCurrentHp() > 0)) && clazz.isInstance(npc))
{
result.add((T) npc);
}
}
return result;
} }
/** /**
@@ -591,7 +651,15 @@ public class Instance implements IIdentifiable, INamable
*/ */
public List<Npc> getAliveNpcs(int... id) public List<Npc> getAliveNpcs(int... id)
{ {
return _npcs.stream().filter(n -> (n.getCurrentHp() > 0) && CommonUtil.contains(id, n.getId())).collect(Collectors.toList()); final List<Npc> result = new ArrayList<>();
for (Npc npc : _npcs)
{
if ((npc.getCurrentHp() > 0) && CommonUtil.contains(id, npc.getId()))
{
result.add(npc);
}
}
return result;
} }
/** /**
@@ -601,7 +669,14 @@ public class Instance implements IIdentifiable, INamable
*/ */
public Npc getNpc(int id) public Npc getNpc(int id)
{ {
return _npcs.stream().filter(n -> n.getId() == id).findFirst().orElse(null); for (Npc npc : _npcs)
{
if (npc.getId() == id)
{
return npc;
}
}
return null;
} }
public void addNpc(Npc npc) public void addNpc(Npc npc)
@@ -676,7 +676,13 @@ public class InstanceTemplate extends ListenersContainer implements IIdentifiabl
// If any group found then put them into enter group list // If any group found then put them into enter group list
if (pGroup != null) if (pGroup != null)
{ {
pGroup.getMembers().stream().filter(p -> !p.equals(player)).forEach(group::add); for (PlayerInstance member : pGroup.getMembers())
{
if (!member.equals(player))
{
group.add(member);
}
}
} }
return group; return group;
} }
@@ -19,14 +19,14 @@ package org.l2jmobius.gameserver.model.itemcontainer;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedList; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
@@ -89,7 +89,16 @@ public abstract class ItemContainer
{ {
filter = filter.and(additionalFilter); filter = filter.and(additionalFilter);
} }
return (int) _items.values().stream().filter(filter).count();
int count = 0;
for (ItemInstance item : _items.values())
{
if (filter.test(item))
{
count++;
}
}
return count;
} }
/** /**
@@ -115,7 +124,16 @@ public abstract class ItemContainer
{ {
filter = filter.and(additionalFilter); filter = filter.and(additionalFilter);
} }
return _items.values().stream().filter(filter).collect(Collectors.toCollection(LinkedList::new));
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items.values())
{
if (filter.test(item))
{
result.add(item);
}
}
return result;
} }
/** /**
@@ -124,7 +142,14 @@ public abstract class ItemContainer
*/ */
public ItemInstance getItemByItemId(int itemId) public ItemInstance getItemByItemId(int itemId)
{ {
return _items.values().stream().filter(item -> item.getId() == itemId).findFirst().orElse(null); for (ItemInstance item : _items.values())
{
if (item.getId() == itemId)
{
return item;
}
}
return null;
} }
/** /**
@@ -26,7 +26,6 @@ import java.util.Map;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.gameserver.datatables.ItemTable; import org.l2jmobius.gameserver.datatables.ItemTable;
@@ -752,7 +751,20 @@ public abstract class Item extends ListenersContainer implements IIdentifiable
*/ */
public List<ItemSkillHolder> getSkills(Predicate<ItemSkillHolder> condition) public List<ItemSkillHolder> getSkills(Predicate<ItemSkillHolder> condition)
{ {
return _skills != null ? _skills.stream().filter(condition).collect(Collectors.toList()) : null; if (_skills == null)
{
return null;
}
final List<ItemSkillHolder> result = new ArrayList<>();
for (ItemSkillHolder skill : _skills)
{
if (condition.test(skill))
{
result.add(skill);
}
}
return result;
} }
/** /**
@@ -761,7 +773,20 @@ public abstract class Item extends ListenersContainer implements IIdentifiable
*/ */
public List<ItemSkillHolder> getSkills(ItemSkillType type) public List<ItemSkillHolder> getSkills(ItemSkillType type)
{ {
return _skills != null ? _skills.stream().filter(sk -> sk.getType() == type).collect(Collectors.toList()) : null; if (_skills == null)
{
return null;
}
final List<ItemSkillHolder> result = new ArrayList<>();
for (ItemSkillHolder skill : _skills)
{
if (skill.getType() == type)
{
result.add(skill);
}
}
return result;
} }
/** /**
@@ -773,7 +798,13 @@ public abstract class Item extends ListenersContainer implements IIdentifiable
{ {
if (_skills != null) if (_skills != null)
{ {
_skills.stream().filter(sk -> sk.getType() == type).forEach(action); for (ItemSkillHolder skill : _skills)
{
if (skill.getType() == type)
{
action.accept(skill);
}
}
} }
} }
@@ -56,13 +56,25 @@ public class CommandChannelMatchingRoom extends MatchingRoom
@Override @Override
protected void notifyNewMember(PlayerInstance player) protected void notifyNewMember(PlayerInstance player)
{ {
// Update others player // Update other players
getMembers().stream().filter(p -> p != player).forEach(p -> p.sendPacket(new ExManageMpccRoomMember(p, this, ExManagePartyRoomMemberType.ADD_MEMBER))); for (PlayerInstance member : getMembers())
{
if (member != player)
{
member.sendPacket(new ExManageMpccRoomMember(member, this, ExManagePartyRoomMemberType.ADD_MEMBER));
}
}
// Send SystemMessage to others player // Send SystemMessage to other players
final SystemMessage sm = new SystemMessage(SystemMessageId.C1_ENTERED_THE_COMMAND_CHANNEL_MATCHING_ROOM); final SystemMessage sm = new SystemMessage(SystemMessageId.C1_ENTERED_THE_COMMAND_CHANNEL_MATCHING_ROOM);
sm.addPcName(player); sm.addPcName(player);
getMembers().stream().filter(p -> p != player).forEach(sm::sendTo); for (PlayerInstance member : getMembers())
{
if (member != player)
{
sm.sendTo(member);
}
}
// Update new player // Update new player
player.sendPacket(new ExMPCCRoomInfo(this)); player.sendPacket(new ExMPCCRoomInfo(this));
@@ -57,13 +57,25 @@ public class PartyMatchingRoom extends MatchingRoom
@Override @Override
protected void notifyNewMember(PlayerInstance player) protected void notifyNewMember(PlayerInstance player)
{ {
// Update others player // Update other players
getMembers().stream().filter(p -> p != player).forEach(p -> p.sendPacket(new ExPartyRoomMember(p, this))); for (PlayerInstance member : getMembers())
{
if (member != player)
{
member.sendPacket(new ExPartyRoomMember(member, this));
}
}
// Send SystemMessage to others player // Send SystemMessage to other players
final SystemMessage sm = new SystemMessage(SystemMessageId.C1_HAS_ENTERED_THE_PARTY_ROOM); final SystemMessage sm = new SystemMessage(SystemMessageId.C1_HAS_ENTERED_THE_PARTY_ROOM);
sm.addPcName(player); sm.addPcName(player);
getMembers().stream().filter(p -> p != player).forEach(sm::sendTo); for (PlayerInstance member : getMembers())
{
if (member != player)
{
sm.sendTo(member);
}
}
// Update new player // Update new player
player.sendPacket(new PartyRoomInfo(this)); player.sendPacket(new PartyRoomInfo(this));
@@ -328,7 +328,9 @@ public abstract class AbstractOlympiadGame
pet.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); pet.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true);
} }
player.getServitors().values().stream().filter(s -> !s.isDead()).forEach(s -> for (Summon s : player.getServitors().values())
{
if (!s.isDead())
{ {
s.setTarget(null); s.setTarget(null);
s.abortAttack(); s.abortAttack();
@@ -336,7 +338,8 @@ public abstract class AbstractOlympiadGame
s.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); s.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
s.stopAllEffectsExceptThoseThatLastThroughDeath(); s.stopAllEffectsExceptThoseThatLastThroughDeath();
s.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true); s.getEffectList().stopEffects(info -> info.getSkill().isBlockedInOlympiad(), true, true);
}); }
}
player.setCurrentCp(player.getMaxCp()); player.setCurrentCp(player.getMaxCp());
player.setCurrentHp(player.getMaxHp()); player.setCurrentHp(player.getMaxHp());
@@ -2841,7 +2841,13 @@ public class Quest extends AbstractScript implements IIdentifiable
} }
else 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();
}
}
} }
} }
@@ -250,7 +250,14 @@ public abstract class AbstractResidence extends ListenersContainer implements IN
*/ */
public ResidenceFunction getFunction(ResidenceFunctionType type) public ResidenceFunction getFunction(ResidenceFunctionType type)
{ {
return _functions.values().stream().filter(func -> func.getType() == type).findFirst().orElse(null); for (ResidenceFunction func : _functions.values())
{
if (func.getType() == type)
{
return func;
}
}
return null;
} }
/** /**
@@ -260,7 +267,14 @@ public abstract class AbstractResidence extends ListenersContainer implements IN
*/ */
public ResidenceFunction getFunction(int id, int level) public ResidenceFunction getFunction(int id, int level)
{ {
return _functions.values().stream().filter(func -> (func.getId() == id) && (func.getLevel() == level)).findFirst().orElse(null); for (ResidenceFunction func : _functions.values())
{
if ((func.getId() == id) && (func.getLevel() == level))
{
return func;
}
}
return null;
} }
/** /**
@@ -269,7 +283,14 @@ public abstract class AbstractResidence extends ListenersContainer implements IN
*/ */
public ResidenceFunction getFunction(int id) public ResidenceFunction getFunction(int id)
{ {
return _functions.values().stream().filter(func -> (func.getId() == id)).findFirst().orElse(null); for (ResidenceFunction func : _functions.values())
{
if (func.getId() == id)
{
return func;
}
}
return null;
} }
/** /**
@@ -288,7 +309,15 @@ public abstract class AbstractResidence extends ListenersContainer implements IN
*/ */
public long getFunctionExpiration(ResidenceFunctionType type) public long getFunctionExpiration(ResidenceFunctionType type)
{ {
final ResidenceFunction function = _functions.values().stream().filter(func -> func.getTemplate().getType() == type).findFirst().orElse(null); ResidenceFunction function = null;
for (ResidenceFunction func : _functions.values())
{
if (func.getTemplate().getType() == type)
{
function = func;
break;
}
}
return function != null ? function.getExpiration() : -1; return function != null ? function.getExpiration() : -1;
} }
@@ -1710,12 +1710,15 @@ public class Skill implements IIdentifiable
return null; return null;
} }
//@formatter:off int toggleSkillId = 0;
final int toggleSkillId = creature.getEffectList().getEffects().stream() for (BuffInfo info : creature.getEffectList().getEffects())
.filter(info -> info.getSkill().getToggleGroupId() == _attachToggleGroupId) {
.mapToInt(info -> info.getSkill().getId()) if (info.getSkill().getToggleGroupId() == _attachToggleGroupId)
.findAny().orElse(0); {
//@formatter:on toggleSkillId = info.getSkill().getId();
break;
}
}
// No active toggles with this toggle group ID found. // No active toggles with this toggle group ID found.
if (toggleSkillId == 0) if (toggleSkillId == 0)
@@ -1723,7 +1726,15 @@ public class Skill implements IIdentifiable
return null; return null;
} }
final AttachSkillHolder attachedSkill = _attachSkills.stream().filter(ash -> ash.getRequiredSkillId() == toggleSkillId).findAny().orElse(null); AttachSkillHolder attachedSkill = null;
for (AttachSkillHolder ash : _attachSkills)
{
if (ash.getRequiredSkillId() == toggleSkillId)
{
attachedSkill = ash;
break;
}
}
// No attached skills for this toggle found. // No attached skills for this toggle found.
if (attachedSkill == null) if (attachedSkill == null)
@@ -19,7 +19,6 @@ package org.l2jmobius.gameserver.model.spawns;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.instancezone.Instance; import org.l2jmobius.gameserver.model.instancezone.Instance;
@@ -117,7 +116,15 @@ public class SpawnGroup implements Cloneable, ITerritorized, IParameterized<Stat
public List<NpcSpawnTemplate> getSpawnsById(int id) public List<NpcSpawnTemplate> getSpawnsById(int id)
{ {
return _spawns.stream().filter(spawn -> spawn.getId() == id).collect(Collectors.toList()); List<NpcSpawnTemplate> result = new ArrayList<>();
for (NpcSpawnTemplate spawn : _spawns)
{
if (spawn.getId() == id)
{
result.add(spawn);
}
}
return result;
} }
public void spawnAll() public void spawnAll()
@@ -22,7 +22,6 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.Predicate; import java.util.function.Predicate;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.instancemanager.QuestManager; import org.l2jmobius.gameserver.instancemanager.QuestManager;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
@@ -124,7 +123,15 @@ public class SpawnTemplate implements Cloneable, ITerritorized, IParameterized<S
public List<SpawnGroup> getGroupsByName(String name) public List<SpawnGroup> getGroupsByName(String name)
{ {
return _groups.stream().filter(group -> String.valueOf(group.getName()).equalsIgnoreCase(name)).collect(Collectors.toList()); final List<SpawnGroup> result = new ArrayList<>();
for (SpawnGroup group : _groups)
{
if (String.valueOf(group.getName()).equalsIgnoreCase(name))
{
result.add(group);
}
}
return result;
} }
@Override @Override
@@ -153,7 +160,13 @@ public class SpawnTemplate implements Cloneable, ITerritorized, IParameterized<S
public void spawn(Predicate<SpawnGroup> groupFilter, Instance instance) public void spawn(Predicate<SpawnGroup> groupFilter, Instance instance)
{ {
_groups.stream().filter(groupFilter).forEach(group -> group.spawnAll(instance)); for (SpawnGroup group : _groups)
{
if (groupFilter.test(group))
{
group.spawnAll(instance);
}
}
} }
public void spawnAll() public void spawnAll()
@@ -178,7 +191,13 @@ public class SpawnTemplate implements Cloneable, ITerritorized, IParameterized<S
public void despawn(Predicate<SpawnGroup> groupFilter) public void despawn(Predicate<SpawnGroup> groupFilter)
{ {
_groups.stream().filter(groupFilter).forEach(SpawnGroup::despawnAll); for (SpawnGroup group : _groups)
{
if (groupFilter.test(group))
{
group.despawnAll();
}
}
notifyEvent(script -> script.onSpawnDeactivate(this)); notifyEvent(script -> script.onSpawnDeactivate(this));
} }
@@ -20,7 +20,6 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; import java.util.logging.Logger;
@@ -602,14 +601,13 @@ public abstract class ZoneType extends ListenersContainer
public void oustAllPlayers() public void oustAllPlayers()
{ {
//@formatter:off for (Creature obj : _characterList.values())
_characterList.values().stream() {
.filter(Objects::nonNull) if ((obj != null) && obj.isPlayer() && obj.getActingPlayer().isOnline())
.filter(WorldObject::isPlayer) {
.map(WorldObject::getActingPlayer) obj.getActingPlayer().teleToLocation(TeleportWhereType.TOWN);
.filter(PlayerInstance::isOnline) }
.forEach(player -> player.teleToLocation(TeleportWhereType.TOWN)); }
//@formatter:off
} }
/** /**
@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.OptionalInt;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.instancemanager.ClanEntryManager; import org.l2jmobius.gameserver.instancemanager.ClanEntryManager;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -44,10 +42,10 @@ public class RequestPledgeWaitingApplied implements IClientIncomingPacket
return; return;
} }
final OptionalInt clanId = ClanEntryManager.getInstance().getClanIdForPlayerApplication(player.getObjectId()); final int clanId = ClanEntryManager.getInstance().getClanIdForPlayerApplication(player.getObjectId());
if (clanId.isPresent()) if (clanId > 0)
{ {
player.sendPacket(new ExPledgeWaitingListApplied(clanId.getAsInt(), player.getObjectId())); player.sendPacket(new ExPledgeWaitingListApplied(clanId, player.getObjectId()));
} }
} }
} }
@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.Objects;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.sql.impl.ClanTable; import org.l2jmobius.gameserver.data.sql.impl.ClanTable;
@@ -132,7 +130,19 @@ public class RequestStartPledgeWar implements IClientIncomingPacket
final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar); final ClanWar newClanWar = new ClanWar(clanDeclaringWar, clanDeclaredWar);
ClanTable.getInstance().storeClanWars(newClanWar); ClanTable.getInstance().storeClanWars(newClanWar);
clanDeclaringWar.getMembers().stream().filter(Objects::nonNull).filter(ClanMember::isOnline).forEach(p -> p.getPlayerInstance().broadcastUserInfo(UserInfoType.CLAN)); for (ClanMember member : clanDeclaringWar.getMembers())
clanDeclaredWar.getMembers().stream().filter(Objects::nonNull).filter(ClanMember::isOnline).forEach(p -> p.getPlayerInstance().broadcastUserInfo(UserInfoType.CLAN)); {
if ((member != null) && member.isOnline())
{
member.getPlayerInstance().broadcastUserInfo(UserInfoType.CLAN);
}
}
for (ClanMember member : clanDeclaredWar.getMembers())
{
if ((member != null) && member.isOnline())
{
member.getPlayerInstance().broadcastUserInfo(UserInfoType.CLAN);
}
}
} }
} }
@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets; package org.l2jmobius.gameserver.network.clientpackets;
import java.util.Objects;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.data.sql.impl.ClanTable; import org.l2jmobius.gameserver.data.sql.impl.ClanTable;
import org.l2jmobius.gameserver.enums.ClanWarState; import org.l2jmobius.gameserver.enums.ClanWarState;
@@ -57,12 +55,15 @@ public class RequestSurrenderPledgeWar implements IClientIncomingPacket
return; return;
} }
if (myClan.getMembers().stream().filter(Objects::nonNull).filter(ClanMember::isOnline).map(ClanMember::getPlayerInstance).anyMatch(p -> !p.isInCombat())) for (ClanMember member : myClan.getMembers())
{
if ((member != null) && member.isOnline() && member.getPlayerInstance().isInCombat())
{ {
player.sendPacket(SystemMessageId.A_CEASE_FIRE_DURING_A_CLAN_WAR_CAN_NOT_BE_CALLED_WHILE_MEMBERS_OF_YOUR_CLAN_ARE_ENGAGED_IN_BATTLE); player.sendPacket(SystemMessageId.A_CEASE_FIRE_DURING_A_CLAN_WAR_CAN_NOT_BE_CALLED_WHILE_MEMBERS_OF_YOUR_CLAN_ARE_ENGAGED_IN_BATTLE);
client.sendPacket(ActionFailed.STATIC_PACKET); client.sendPacket(ActionFailed.STATIC_PACKET);
return; return;
} }
}
final Clan targetClan = ClanTable.getInstance().getClanByName(_pledgeName); final Clan targetClan = ClanTable.getInstance().getClanByName(_pledgeName);
if (targetClan == null) if (targetClan == null)
@@ -17,7 +17,6 @@
package org.l2jmobius.gameserver.network.clientpackets.adenadistribution; package org.l2jmobius.gameserver.network.clientpackets.adenadistribution;
import java.util.List; import java.util.List;
import java.util.Objects;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.CommandChannel; import org.l2jmobius.gameserver.model.CommandChannel;
@@ -144,11 +143,14 @@ public class RequestDivideAdena implements IClientIncomingPacket
private void cancelDistribution(AdenaDistributionRequest request) private void cancelDistribution(AdenaDistributionRequest request)
{ {
request.getPlayers().stream().filter(Objects::nonNull).forEach(p -> for (PlayerInstance player : request.getPlayers())
{ {
p.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_BEEN_CANCELLED); if (player != null)
p.sendPacket(ExDivideAdenaCancel.STATIC_PACKET); {
p.removeRequest(AdenaDistributionRequest.class); player.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_BEEN_CANCELLED);
}); player.sendPacket(ExDivideAdenaCancel.STATIC_PACKET);
player.removeRequest(AdenaDistributionRequest.class);
}
}
} }
} }
@@ -16,8 +16,6 @@
*/ */
package org.l2jmobius.gameserver.network.clientpackets.adenadistribution; package org.l2jmobius.gameserver.network.clientpackets.adenadistribution;
import java.util.Objects;
import org.l2jmobius.commons.network.PacketReader; import org.l2jmobius.commons.network.PacketReader;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.request.AdenaDistributionRequest; import org.l2jmobius.gameserver.model.actor.request.AdenaDistributionRequest;
@@ -52,12 +50,15 @@ public class RequestDivideAdenaCancel implements IClientIncomingPacket
if (_cancel) if (_cancel)
{ {
final AdenaDistributionRequest request = player.getRequest(AdenaDistributionRequest.class); final AdenaDistributionRequest request = player.getRequest(AdenaDistributionRequest.class);
request.getPlayers().stream().filter(Objects::nonNull).forEach(p -> for (PlayerInstance p : request.getPlayers())
{
if (p != null)
{ {
p.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_BEEN_CANCELLED); p.sendPacket(SystemMessageId.ADENA_DISTRIBUTION_HAS_BEEN_CANCELLED);
p.sendPacket(ExDivideAdenaCancel.STATIC_PACKET); p.sendPacket(ExDivideAdenaCancel.STATIC_PACKET);
p.removeRequest(AdenaDistributionRequest.class); p.removeRequest(AdenaDistributionRequest.class);
}); }
}
} }
} }
} }
@@ -16,9 +16,8 @@
*/ */
package org.l2jmobius.gameserver.network.serverpackets; package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
@@ -28,19 +27,18 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
public class ExAbnormalStatusUpdateFromTarget implements IClientOutgoingPacket public class ExAbnormalStatusUpdateFromTarget implements IClientOutgoingPacket
{ {
private final Creature _creature; private final Creature _creature;
private final List<BuffInfo> _effects; private final List<BuffInfo> _effects = new ArrayList<>();
public ExAbnormalStatusUpdateFromTarget(Creature creature) public ExAbnormalStatusUpdateFromTarget(Creature creature)
{ {
//@formatter:off
_creature = creature; _creature = creature;
_effects = creature.getEffectList().getEffects() for (BuffInfo info : creature.getEffectList().getEffects())
.stream() {
.filter(Objects::nonNull) if ((info != null) && info.isInUse() && !info.getSkill().isToggle())
.filter(BuffInfo::isInUse) {
.filter(b -> !b.getSkill().isToggle()) _effects.add(info);
.collect(Collectors.toList()); }
//@formatter:on }
} }
@Override @Override
@@ -18,7 +18,6 @@ package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.commons.network.PacketWriter; import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.data.xml.impl.SkillData; import org.l2jmobius.gameserver.data.xml.impl.SkillData;
@@ -37,7 +36,13 @@ public class ExAlchemySkillList implements IClientOutgoingPacket
public ExAlchemySkillList(PlayerInstance player) public ExAlchemySkillList(PlayerInstance player)
{ {
_skills.addAll(player.getAllSkills().stream().filter(s -> SkillTreeData.getInstance().isAlchemySkill(s.getId(), s.getLevel())).collect(Collectors.toList())); for (Skill s : player.getAllSkills())
{
if (SkillTreeData.getInstance().isAlchemySkill(s.getId(), s.getLevel()))
{
_skills.add(s);
}
}
_skills.add(SkillData.getInstance().getSkill(CommonSkill.ALCHEMY_CUBE.getId(), 1)); _skills.add(SkillData.getInstance().getSkill(CommonSkill.ALCHEMY_CUBE.getId(), 1));
} }
@@ -802,7 +802,15 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
} }
else else
{ {
final ClassChangeData data = _classChangeData.stream().filter(ccd -> ccd.isInCategory(player)).findFirst().get(); ClassChangeData data = null;
for (ClassChangeData ccd : _classChangeData)
{
if (ccd.isInCategory(player))
{
data = ccd;
break;
}
}
if (data != null) if (data != null)
{ {
// Required items. // Required items.
@@ -1100,11 +1108,35 @@ public class ClassMaster extends AbstractNpcAI implements IXmlReader
private boolean checkIfClassChangeHasOptions(PlayerInstance player) private boolean checkIfClassChangeHasOptions(PlayerInstance player)
{ {
boolean showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRequired().isEmpty()).anyMatch(ccd -> ccd.isInCategory(player)); // Check if there are requirements boolean showOptions = false;
// Check if there are requirements
for (ClassChangeData ccd : _classChangeData)
{
if (!ccd.getItemsRequired().isEmpty() && ccd.isInCategory(player))
{
showOptions = true;
break;
}
}
if (!showOptions) if (!showOptions)
{ {
showOptions = _classChangeData.stream().filter(ccd -> !ccd.getItemsRewarded().isEmpty()).filter(ccd -> ccd.isInCategory(player)).count() > 1; // Check if there is more than 1 reward to chose. // Check if there is more than 1 reward to chose.
int count = 0;
for (ClassChangeData ccd : _classChangeData)
{
if (!ccd.getItemsRewarded().isEmpty() && ccd.isInCategory(player))
{
count++;
} }
}
if (count > 1)
{
showOptions = true;
}
}
return showOptions; return showOptions;
} }
@@ -216,12 +216,15 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToChange.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if ((holder != null)) {
if (holder.getSkillId() == skillToChange.getId())
{ {
player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!"); player.sendMessage("Price of " + player.getKnownSkill(holder.getSkillId()).getName() + " has been changed to " + price + "!");
holder.setPrice(price); holder.setPrice(price);
SellBuffsManager.getInstance().sendBuffEditMenu(player); SellBuffsManager.getInstance().sendBuffEditMenu(player);
break;
}
} }
} }
break; break;
@@ -250,11 +253,14 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = player.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToRemove.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if ((holder != null) && player.getSellingBuffs().remove(holder)) {
if ((holder.getSkillId() == skillToRemove.getId()) && player.getSellingBuffs().remove(holder))
{ {
player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!"); player.sendMessage("Skill " + player.getKnownSkill(holder.getSkillId()).getName() + " has been removed!");
SellBuffsManager.getInstance().sendBuffEditMenu(player); SellBuffsManager.getInstance().sendBuffEditMenu(player);
break;
}
} }
} }
break; break;
@@ -399,8 +405,9 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
return false; return false;
} }
final SellBuffHolder holder = seller.getSellingBuffs().stream().filter(h -> (h.getSkillId() == skillToBuy.getId())).findFirst().orElse(null); for (SellBuffHolder holder : player.getSellingBuffs())
if (holder != null) {
if (holder.getSkillId() == skillToBuy.getId())
{ {
if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice()) if (AbstractScript.getQuestItemsCount(player, Config.SELLBUFF_PAYMENT_ID) >= holder.getPrice())
{ {
@@ -421,7 +428,10 @@ public class SellBuff implements IVoicedCommandHandler, IBypassHandler
player.sendMessage("Not enough items!"); player.sendMessage("Not enough items!");
} }
} }
break;
} }
}
SellBuffsManager.getInstance().sendBuffMenu(player, seller, index); SellBuffsManager.getInstance().sendBuffMenu(player, seller, index);
} }
break; break;
@@ -297,7 +297,13 @@ public class AdminAdmin implements IAdminCommandHandler
} }
final CreatureSay cs = new CreatureSay(activeChar, ChatType.WORLD, activeChar.getName(), sb.toString()); final CreatureSay cs = new CreatureSay(activeChar, ChatType.WORLD, activeChar.getName(), sb.toString());
World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
break; break;
} }
case "see": case "see":
@@ -98,16 +98,34 @@ public class ChatWorld implements IChatHandler
{ {
if (activeChar.isGood()) if (activeChar.isGood())
{ {
World.getInstance().getAllGoodPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getAllGoodPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
if (activeChar.isEvil()) if (activeChar.isEvil())
{ {
World.getInstance().getAllEvilPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getAllEvilPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
} }
else else
{ {
World.getInstance().getPlayers().stream().filter(activeChar::isNotBlocked).forEach(cs::sendTo); for (PlayerInstance player : World.getInstance().getPlayers())
{
if (player.isNotBlocked(activeChar))
{
cs.sendTo(player);
}
}
} }
activeChar.setWorldChatUsed(activeChar.getWorldChatUsed() + 1); activeChar.setWorldChatUsed(activeChar.getWorldChatUsed() + 1);
@@ -218,7 +218,9 @@ public class HomeBoard implements IParseBoardHandler
{ {
continue; continue;
} }
targets.stream().filter(target -> !target.isSummon() || !skill.isSharedWithSummon()).forEach(target -> for (Creature target : targets)
{
if (skill.isSharedWithSummon() || target.isPlayer())
{ {
skill.applyEffects(player, target); skill.applyEffects(player, target);
if (Config.COMMUNITYBOARD_CAST_ANIMATIONS) if (Config.COMMUNITYBOARD_CAST_ANIMATIONS)
@@ -227,7 +229,8 @@ public class HomeBoard implements IParseBoardHandler
// not recommend broadcast // not recommend broadcast
// player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay())); // player.broadcastPacket(new MagicSkillUse(player, target, skill.getId(), skill.getLevel(), skill.getHitTime(), skill.getReuseDelay()));
} }
}); }
}
} }
} }
@@ -88,7 +88,13 @@ public class BossDailyMissionHandler extends AbstractDailyMissionHandler
{ {
final CommandChannel channel = party.getCommandChannel(); final CommandChannel channel = party.getCommandChannel();
final List<PlayerInstance> members = channel != null ? channel.getMembers() : party.getMembers(); final List<PlayerInstance> members = channel != null ? channel.getMembers() : party.getMembers();
members.stream().filter(member -> member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE).forEach(this::processPlayerProgress); for (PlayerInstance member : members)
{
if (member.calculateDistance3D(monster) <= Config.ALT_PARTY_RANGE)
{
processPlayerProgress(member);
}
}
} }
else else
{ {
@@ -18,15 +18,14 @@ package handlers.effecthandlers;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance; import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
import org.l2jmobius.gameserver.model.skills.AbnormalType; import org.l2jmobius.gameserver.model.skills.AbnormalType;
import org.l2jmobius.gameserver.model.skills.BuffInfo;
import org.l2jmobius.gameserver.model.skills.Skill; import org.l2jmobius.gameserver.model.skills.Skill;
import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate; import org.l2jmobius.gameserver.network.serverpackets.AbnormalStatusUpdate;
import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget; import org.l2jmobius.gameserver.network.serverpackets.ExAbnormalStatusUpdateFromTarget;
@@ -94,19 +93,25 @@ public class AbnormalTimeChange extends AbstractEffect
{ {
if (_abnormals.isEmpty()) if (_abnormals.isEmpty())
{ {
effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b -> for (BuffInfo info : effected.getEffectList().getEffects())
{ {
b.resetAbnormalTime(b.getTime() + _time); if (info.getSkill().canBeDispelled())
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getTime() + _time);
asu.addSkill(info);
}
}
} }
else else
{ {
effected.getEffectList().getEffects().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b -> for (BuffInfo info : effected.getEffectList().getEffects())
{ {
b.resetAbnormalTime(b.getTime() + _time); if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getTime() + _time);
asu.addSkill(info);
}
}
} }
break; break;
} }
@@ -114,19 +119,25 @@ public class AbnormalTimeChange extends AbstractEffect
{ {
if (_abnormals.isEmpty()) if (_abnormals.isEmpty())
{ {
effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled()).forEach(b -> for (BuffInfo info : effected.getEffectList().getDebuffs())
{ {
b.resetAbnormalTime(b.getAbnormalTime()); if (info.getSkill().canBeDispelled())
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getAbnormalTime());
asu.addSkill(info);
}
}
} }
else else
{ {
effected.getEffectList().getDebuffs().stream().filter(b -> b.getSkill().canBeDispelled() && _abnormals.contains(b.getSkill().getAbnormalType())).forEach(b -> for (BuffInfo info : effected.getEffectList().getDebuffs())
{ {
b.resetAbnormalTime(b.getAbnormalTime()); if (info.getSkill().canBeDispelled() && _abnormals.contains(info.getSkill().getAbnormalType()))
asu.addSkill(b); {
}); info.resetAbnormalTime(info.getAbnormalTime());
asu.addSkill(info);
}
}
} }
break; break;
} }
@@ -135,14 +146,13 @@ public class AbnormalTimeChange extends AbstractEffect
effected.sendPacket(asu); effected.sendPacket(asu);
final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(effected); final ExAbnormalStatusUpdateFromTarget upd = new ExAbnormalStatusUpdateFromTarget(effected);
for (Creature creature : effected.getStatus().getStatusListener())
// @formatter:off {
effected.getStatus().getStatusListener().stream() if ((creature != null) && creature.isPlayer())
.filter(Objects::nonNull) {
.filter(WorldObject::isPlayer) upd.sendTo(creature.getActingPlayer());
.map(Creature::getActingPlayer) }
.forEach(upd::sendTo); }
// @formatter:on
if (effected.isPlayer() && (effected.getTarget() == effected)) if (effected.isPlayer() && (effected.getTarget() == effected))
{ {
@@ -52,7 +52,13 @@ public class CallTargetParty extends AbstractEffect
final Party party = player.getParty(); final Party party = player.getParty();
if (party != null) if (party != null)
{ {
party.getMembers().stream().filter(p -> (p != player) && CallPc.checkSummonTargetStatus(p, effector)).forEach(p -> p.teleToLocation(player.getLocation(), true)); for (PlayerInstance member : party.getMembers())
{
if ((member != player) && CallPc.checkSummonTargetStatus(member, effector))
{
member.teleToLocation(player.getLocation(), true);
}
}
} }
} }
} }
@@ -173,7 +173,13 @@ public class SummonNpc extends AbstractEffect
// If only single instance is allowed, delete previous NPCs. // If only single instance is allowed, delete previous NPCs.
if (_singleInstance) if (_singleInstance)
{ {
player.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).forEach(Npc::deleteMe); for (Npc npc : player.getSummonedNpcs())
{
if (npc.getId() == _npcId)
{
npc.deleteMe();
}
}
} }
final Npc npc = spawn.doSpawn(_isSummonSpawn); final Npc npc = spawn.doSpawn(_isSummonSpawn);
@@ -93,13 +93,19 @@ public class Synergy extends AbstractEffect
} }
} }
final int abnormalCount = (int) _optionalSlots.stream().filter(effector::hasAbnormalType).count(); int abnormalCount = 0;
for (AbnormalType abnormalType : _optionalSlots)
{
if (effector.hasAbnormalType(abnormalType))
{
abnormalCount++;
}
}
if (abnormalCount >= _minSlot) if (abnormalCount >= _minSlot)
{ {
final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.min(abnormalCount - 1, _skillLevelScaleTo)); final SkillHolder partyBuff = new SkillHolder(_partyBuffSkillId, Math.min(abnormalCount - 1, _skillLevelScaleTo));
final Skill partyBuffSkill = partyBuff.getSkill(); final Skill partyBuffSkill = partyBuff.getSkill();
if (partyBuffSkill != null) if (partyBuffSkill != null)
{ {
final WorldObject target = partyBuffSkill.getTarget(effector, effected, false, false, false); final WorldObject target = partyBuffSkill.getTarget(effector, effected, false, false, false);
@@ -20,6 +20,8 @@ import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.model.Party; import org.l2jmobius.gameserver.model.Party;
import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.StatSet;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.effects.AbstractEffect; import org.l2jmobius.gameserver.model.effects.AbstractEffect;
import org.l2jmobius.gameserver.model.effects.EffectType; import org.l2jmobius.gameserver.model.effects.EffectType;
import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.interfaces.ILocational;
@@ -59,13 +61,24 @@ public class TeleportToNpc extends AbstractEffect
@Override @Override
public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item) public void instant(Creature effector, Creature effected, Skill skill, ItemInstance item)
{ {
final ILocational teleLocation = effector.getSummonedNpcs().stream().filter(npc -> npc.getId() == _npcId).findAny().orElse(null); ILocational teleLocation = null;
for (Npc npc : effector.getSummonedNpcs())
{
if (npc.getId() == _npcId)
{
teleLocation = npc;
}
}
if (teleLocation != null) if (teleLocation != null)
{ {
final Party party = effected.getParty(); final Party party = effected.getParty();
if (_party && (party != null)) if (_party && (party != null))
{ {
party.getMembers().forEach(p -> teleport(p, teleLocation)); for (PlayerInstance member : party.getMembers())
{
teleport(member, teleLocation);
}
} }
else else
{ {
@@ -16,8 +16,8 @@
*/ */
package handlers.itemhandlers; package handlers.itemhandlers;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.ShotType; import org.l2jmobius.gameserver.enums.ShotType;
@@ -60,7 +60,15 @@ public class BeastSoulShot implements IItemHandler
return false; return false;
} }
final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList()); final List<Summon> aliveServitor = new ArrayList<>();
for (Summon s : playable.getServitors().values())
{
if (!s.isDead())
{
aliveServitor.add(s);
}
}
if ((pet == null) && aliveServitor.isEmpty()) if ((pet == null) && aliveServitor.isEmpty())
{ {
activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT); activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT);
@@ -16,8 +16,8 @@
*/ */
package handlers.itemhandlers; package handlers.itemhandlers;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.gameserver.enums.ItemSkillType; import org.l2jmobius.gameserver.enums.ItemSkillType;
import org.l2jmobius.gameserver.enums.ShotType; import org.l2jmobius.gameserver.enums.ShotType;
@@ -60,7 +60,15 @@ public class BeastSpiritShot implements IItemHandler
return false; return false;
} }
final List<Summon> aliveServitor = playable.getServitors().values().stream().filter(s -> !s.isDead()).collect(Collectors.toList()); final List<Summon> aliveServitor = new ArrayList<>();
for (Summon s : playable.getServitors().values())
{
if (!s.isDead())
{
aliveServitor.add(s);
}
}
if ((pet == null) && aliveServitor.isEmpty()) if ((pet == null) && aliveServitor.isEmpty())
{ {
activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT); activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET_OR_SERVITOR_SAD_ISN_T_IT);
@@ -18,6 +18,7 @@ package handlers.playeractions;
import org.l2jmobius.gameserver.handler.IPlayerActionHandler; import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ActionDataHolder;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -32,7 +33,13 @@ public class ServitorAttack implements IPlayerActionHandler
{ {
if (player.hasServitors()) if (player.hasServitors())
{ {
player.getServitors().values().stream().filter(s -> s.canAttack(player.getTarget(), ctrlPressed)).forEach(s -> s.doAttack(player.getTarget())); for (Summon summon : player.getServitors().values())
{
if (summon.canAttack(player.getTarget(), ctrlPressed))
{
summon.doAttack(player.getTarget());
}
}
} }
else else
{ {
@@ -19,6 +19,7 @@ package handlers.playeractions;
import org.l2jmobius.gameserver.ai.CtrlIntention; import org.l2jmobius.gameserver.ai.CtrlIntention;
import org.l2jmobius.gameserver.handler.IPlayerActionHandler; import org.l2jmobius.gameserver.handler.IPlayerActionHandler;
import org.l2jmobius.gameserver.model.ActionDataHolder; import org.l2jmobius.gameserver.model.ActionDataHolder;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
@@ -39,17 +40,20 @@ public class ServitorMove implements IPlayerActionHandler
if (player.getTarget() != null) if (player.getTarget() != null)
{ {
player.getServitors().values().stream().filter(s -> (s != player.getTarget()) && !s.isMovementDisabled()).forEach(s -> for (Summon summon : player.getServitors().values())
{ {
if (s.isBetrayed()) if ((summon != player.getTarget()) && !summon.isMovementDisabled())
{
if (summon.isBetrayed())
{ {
player.sendPacket(SystemMessageId.YOUR_PET_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS); player.sendPacket(SystemMessageId.YOUR_PET_SERVITOR_IS_UNRESPONSIVE_AND_WILL_NOT_OBEY_ANY_ORDERS);
return; return;
} }
s.setFollowStatus(false); summon.setFollowStatus(false);
s.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation()); summon.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, player.getTarget().getLocation());
}); }
}
} }
} }
} }
@@ -40,7 +40,6 @@ import java.util.Set;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config; import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory; import org.l2jmobius.commons.database.DatabaseFactory;
@@ -281,7 +280,14 @@ public class LoginServerThread extends Thread
st.addAttribute(ServerStatus.SERVER_AGE, ServerStatus.SERVER_AGE_ALL); st.addAttribute(ServerStatus.SERVER_AGE, ServerStatus.SERVER_AGE_ALL);
} }
sendPacket(st); 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()) if (!playerList.isEmpty())
{ {
sendPacket(new PlayerInGame(playerList)); sendPacket(new PlayerInGame(playerList));
@@ -26,6 +26,7 @@ import static org.l2jmobius.gameserver.ai.CtrlIntention.AI_INTENTION_REST;
import org.l2jmobius.gameserver.model.WorldObject; import org.l2jmobius.gameserver.model.WorldObject;
import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Creature;
import org.l2jmobius.gameserver.model.actor.Summon;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance; import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance; import org.l2jmobius.gameserver.model.actor.instance.StaticObjectInstance;
import org.l2jmobius.gameserver.model.interfaces.ILocational; import org.l2jmobius.gameserver.model.interfaces.ILocational;
@@ -164,7 +165,13 @@ public class PlayerAI extends PlayableAI
// Summons in defending mode defend its master when attacked. // Summons in defending mode defend its master when attacked.
if (_actor.getActingPlayer().hasServitors()) if (_actor.getActingPlayer().hasServitors())
{ {
_actor.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : _actor.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
} }
@@ -176,7 +183,13 @@ public class PlayerAI extends PlayableAI
// Summons in defending mode defend its master when attacked. // Summons in defending mode defend its master when attacked.
if (_actor.getActingPlayer().hasServitors()) if (_actor.getActingPlayer().hasServitors())
{ {
_actor.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : _actor.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
} }
@@ -250,10 +250,16 @@ public class SummonAI extends PlayableAI implements Runnable
private void allServitorsDefend(Creature attacker) private void allServitorsDefend(Creature attacker)
{ {
final Creature Owner = getActor().getOwner(); final Creature owner = getActor().getOwner();
if ((Owner != null) && Owner.getActingPlayer().hasServitors()) if ((owner != null) && owner.getActingPlayer().hasServitors())
{ {
Owner.getActingPlayer().getServitors().values().stream().filter(summon -> ((SummonAI) summon.getAI()).isDefending()).forEach(summon -> ((SummonAI) summon.getAI()).defendAttack(attacker)); for (Summon summon : owner.getActingPlayer().getServitors().values())
{
if (((SummonAI) summon.getAI()).isDefending())
{
((SummonAI) summon.getAI()).defendAttack(attacker);
}
}
} }
else else
{ {
@@ -203,7 +203,14 @@ public class Forum
public Forum getChildByName(String name) public Forum getChildByName(String name)
{ {
vload(); 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;
} }
/** /**
@@ -137,7 +137,14 @@ public class ClanTable
public Clan getClanByName(String clanName) 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;
} }
/** /**
@@ -48,7 +48,15 @@ public class ActionData implements IXmlReader
_actionData.clear(); _actionData.clear();
_actionSkillsData.clear(); _actionSkillsData.clear();
parseDatapackFile("data/ActionData.xml"); parseDatapackFile("data/ActionData.xml");
_actionData.values().stream().filter(h -> h.getHandler().equals("PetSkillUse") || h.getHandler().equals("ServitorSkillUse")).forEach(h -> _actionSkillsData.put(h.getOptionId(), h.getId()));
for (ActionDataHolder holder : _actionData.values())
{
if (holder.getHandler().equals("PetSkillUse") || holder.getHandler().equals("ServitorSkillUse"))
{
_actionSkillsData.put(holder.getOptionId(), holder.getId());
}
}
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _actionData.size() + " player actions."); LOGGER.info(getClass().getSimpleName() + ": Loaded " + _actionData.size() + " player actions.");
} }
@@ -22,7 +22,6 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap; import org.w3c.dom.NamedNodeMap;
@@ -115,7 +114,18 @@ public class CastleData implements IXmlReader
public List<CastleSpawnHolder> getSpawnsForSide(int castleId, CastleSide side) public List<CastleSpawnHolder> getSpawnsForSide(int castleId, CastleSide side)
{ {
return _spawns.getOrDefault(castleId, Collections.emptyList()).stream().filter(s -> s.getSide() == side).collect(Collectors.toList()); final List<CastleSpawnHolder> result = new ArrayList<>();
if (_spawns.containsKey(castleId))
{
for (CastleSpawnHolder spawn : _spawns.get(castleId))
{
if (spawn.getSide() == side)
{
result.add(spawn);
}
}
}
return result;
} }
public List<SiegeGuardHolder> getSiegeGuardsForCastle(int castleId) public List<SiegeGuardHolder> getSiegeGuardsForCastle(int castleId)
@@ -175,18 +175,39 @@ public class ClanHallData implements IXmlReader
public ClanHall getClanHallByNpcId(int npcId) public ClanHall getClanHallByNpcId(int npcId)
{ {
return _clanHalls.values().stream().filter(ch -> ch.getNpcs().contains(npcId)).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getNpcs().contains(npcId))
{
return ch;
}
}
return null;
} }
public ClanHall getClanHallByClan(Clan clan) public ClanHall getClanHallByClan(Clan clan)
{ {
return _clanHalls.values().stream().filter(ch -> ch.getOwner() == clan).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getOwner() == clan)
{
return ch;
}
}
return null;
} }
public ClanHall getClanHallByDoorId(int doorId) public ClanHall getClanHallByDoorId(int doorId)
{ {
final DoorInstance door = DoorData.getInstance().getDoor(doorId); final DoorInstance door = DoorData.getInstance().getDoor(doorId);
return _clanHalls.values().stream().filter(ch -> ch.getDoors().contains(door)).findFirst().orElse(null); for (ClanHall ch : _clanHalls.values())
{
if (ch.getDoors().contains(door))
{
return ch;
}
}
return null;
} }
public List<ClanHall> getFreeAuctionableHall() public List<ClanHall> getFreeAuctionableHall()
@@ -20,7 +20,6 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger; import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.w3c.dom.Document; import org.w3c.dom.Document;
@@ -86,17 +85,40 @@ public class CombinationItemsData implements IXmlReader
public CombinationItem getItemsBySlots(int firstSlot, int secondSlot) public CombinationItem getItemsBySlots(int firstSlot, int secondSlot)
{ {
return _items.stream().filter(item -> (item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot)).findFirst().orElse(null); for (CombinationItem item : _items)
{
if ((item.getItemOne() == firstSlot) && (item.getItemTwo() == secondSlot))
{
return item;
}
}
return null;
} }
public List<CombinationItem> getItemsByFirstSlot(int id) public List<CombinationItem> getItemsByFirstSlot(int id)
{ {
return _items.stream().filter(item -> item.getItemOne() == id).collect(Collectors.toList()); final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemOne() == id)
{
result.add(item);
}
}
return result;
} }
public List<CombinationItem> getItemsBySecondSlot(int id) public List<CombinationItem> getItemsBySecondSlot(int id)
{ {
return _items.stream().filter(item -> item.getItemTwo() == id).collect(Collectors.toList()); final List<CombinationItem> result = new ArrayList<>();
for (CombinationItem item : _items)
{
if (item.getItemTwo() == id)
{
result.add(item);
}
}
return result;
} }
public static final CombinationItemsData getInstance() public static final CombinationItemsData getInstance()

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