Removal of enhanced inventory methods.

This commit is contained in:
MobiusDevelopment
2021-04-20 22:20:41 +00:00
parent 210717c77f
commit 1b68632161
425 changed files with 4564 additions and 3177 deletions

View File

@@ -16,7 +16,8 @@
*/
package ai.others.GameAssistant;
import java.util.Collection;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.gameserver.cache.HtmCache;
import org.l2jmobius.gameserver.data.xml.MultisellData;
@@ -326,7 +327,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_1":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 1) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 1) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -357,7 +365,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_2":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 2) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 2) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -388,7 +403,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_3":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 3) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 3) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -419,7 +441,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_4":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 4) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 4) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -450,7 +479,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_5":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 5) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 5) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -481,7 +517,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_6":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 6) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 6) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -512,7 +555,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_7":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 7) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 7) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -543,7 +593,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_8":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 8) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 8) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -574,7 +631,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_9":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 9) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 9) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -605,7 +669,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_black_sayha_cloak_10":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 10) && (item.getId() == BLACK_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 10) && (item.getId() == BLACK_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -648,7 +719,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_1":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 1) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 1) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -679,7 +757,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_2":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 2) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 2) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -710,7 +795,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_3":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 3) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 3) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -741,7 +833,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_4":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 4) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 4) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -772,7 +871,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_5":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 5) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 5) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -803,7 +909,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_6":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 6) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 6) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -834,7 +947,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_7":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 7) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 7) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -865,7 +985,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_8":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 8) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 8) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -896,7 +1023,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_9":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 9) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 9) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -927,7 +1061,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_white_sayha_cloak_10":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 10) && (item.getId() == WHITE_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 10) && (item.getId() == WHITE_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -970,7 +1111,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_1":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 1) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 1) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1001,7 +1149,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_2":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 2) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 2) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1032,7 +1187,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_3":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 3) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 3) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1063,7 +1225,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_4":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 4) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 4) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1094,7 +1263,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_5":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 5) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 5) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1125,7 +1301,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_6":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 6) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 6) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1156,7 +1339,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_7":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 7) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 7) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1187,7 +1377,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_8":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 8) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 8) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1218,7 +1415,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_9":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 9) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 9) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));
@@ -1249,7 +1453,14 @@ public class GameAssistant extends AbstractNpcAI
}
case "exc_red_sayha_cloak_10":
{
final Collection<ItemInstance> cloaks = player.getInventory().getItems(item -> (item.getEnchantLevel() == 10) && (item.getId() == RED_SAYHA_CLOAK));
final List<ItemInstance> cloaks = new ArrayList<>();
for (ItemInstance item : player.getInventory().getItems())
{
if ((item.getEnchantLevel() == 10) && (item.getId() == RED_SAYHA_CLOAK))
{
cloaks.add(item);
}
}
if (cloaks.isEmpty())
{
player.sendPacket(new ExPremiumManagerShowHtml(HtmCache.getInstance().getHtm(player, "data/scripts/ai/others/GameAssistant/no_cloak.html")));

View File

@@ -138,7 +138,7 @@ public class RestorationRandom extends AbstractEffect
}
else
{
for (ItemInstance itemInstance : player.getInventory().getItemsByItemId(entry.getKey().getId()))
for (ItemInstance itemInstance : player.getInventory().getAllItemsByItemId(entry.getKey().getId()))
{
playerIU.addModifiedItem(itemInstance);
}

View File

@@ -47,7 +47,7 @@ public class OpEncumberedSkillCondition implements ISkillCondition
}
final PlayerInstance player = caster.getActingPlayer();
final int currentSlotsPercent = calcPercent(player.getInventoryLimit(), player.getInventory().getSize(item -> !item.isQuestItem()));
final int currentSlotsPercent = calcPercent(player.getInventoryLimit(), player.getInventory().getNonQuestSize());
final int currentWeightPercent = calcPercent(player.getMaxLoad(), player.getCurrentLoad());
return (currentSlotsPercent >= _slotsPercent) && (currentWeightPercent >= _weightPercent);
}

View File

@@ -148,24 +148,24 @@ public class Q10290_ATripBegins extends Quest
showOnScreenMsg(player, NpcStringId.YOU_VE_GOT_ADVENTURER_S_BRACELET_AND_ADVENTURER_S_TALISMAN_NCOMPLETE_THE_TUTORIAL_AND_TRY_TO_USE_THE_TALISMAN, ExShowScreenMessage.TOP_CENTER, 10000);
addExpAndSp(player, (ExperienceData.getInstance().getExpForLevel(25) + 100) - player.getExp(), 42000);
// TODO: find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(BSOE_EVENT.getId()).size() <= 20)
if (player.getInventory().getAllItemsByItemId(BSOE_EVENT.getId()).size() <= 20)
{
// 20 due other quest rewards? Need to see for a possible to add a variable here.
giveItems(player, BSOE_EVENT);
}
if (player.getInventory().getItemsByItemId(ADVENTURERS_BRACELET.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURERS_BRACELET.getId()).isEmpty())
{
giveItems(player, ADVENTURERS_BRACELET);
}
if (player.getInventory().getItemsByItemId(ADVENTURERS_TALISMAN.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, ADVENTURERS_TALISMAN);
}
if (player.getInventory().getItemsByItemId(SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN);
}
if (player.getInventory().getItemsByItemId(SCROLL_OF_ENCHANT_ADEN_WEAPON.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(SCROLL_OF_ENCHANT_ADEN_WEAPON.getId()).isEmpty())
{
giveItems(player, SCROLL_OF_ENCHANT_ADEN_WEAPON);
}

View File

@@ -73,11 +73,11 @@ public class Q10971_TalismanEnchant extends Quest
qs.startQuest();
player.sendPacket(new ExTutorialShowId(47));
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURERS_TALISMAN.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, ADVENTURERS_TALISMAN);
}
if (player.getInventory().getItemsByItemId(SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN.getId()).isEmpty())
{
giveItems(player, SCROLL_OF_ENCHANT_ADVENTURERS_TALISMAN);
}
@@ -100,7 +100,7 @@ public class Q10971_TalismanEnchant extends Quest
else if (qs.isStarted())
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURERS_TALISMAN.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURERS_TALISMAN.getId()))
{
if (item.getEnchantLevel() > 0)
{

View File

@@ -81,7 +81,7 @@ public class Q10973_EnchantingAgathions extends Quest
if (qs.isStarted())
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(TRAVELER_AGATHION_GRIFFIN))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(TRAVELER_AGATHION_GRIFFIN))
{
if (item.getEnchantLevel() > 0)
{

View File

@@ -80,11 +80,11 @@ public class Q10974_NewStylishEquipment extends Quest
{
qs.startQuest();
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_SHEEP_HAT.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_SHEEP_HAT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_SHEEP_HAT);
}
@@ -96,7 +96,7 @@ public class Q10974_NewStylishEquipment extends Quest
if (qs.isCond(1))
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_SHEEP_HAT.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_SHEEP_HAT.getId()))
{
if (item.getEnchantLevel() > 0)
{
@@ -118,11 +118,11 @@ public class Q10974_NewStylishEquipment extends Quest
{
qs.startQuest();
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_BELT.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ADVENTURER_BELT);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_BELT.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ENCHANT_SCROLL_ADVENTURER_BELT.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_BELT);
}
@@ -134,7 +134,7 @@ public class Q10974_NewStylishEquipment extends Quest
if (qs.isCond(2))
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_BELT.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_BELT.getId()))
{
if (item.getEnchantLevel() > 0)
{
@@ -156,11 +156,11 @@ public class Q10974_NewStylishEquipment extends Quest
{
qs.startQuest();
// TODO: Find a better way to do this: Tempfix for not giving items when already have them in inventory (bugging abort and re-accepting).
if (player.getInventory().getItemsByItemId(ADVENTURER_CLOAK.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ADVENTURER_CLOAK);
}
if (player.getInventory().getItemsByItemId(ENCHANT_SCROLL_ADVENTURER_CLOAK.getId()).isEmpty())
if (player.getInventory().getAllItemsByItemId(ENCHANT_SCROLL_ADVENTURER_CLOAK.getId()).isEmpty())
{
giveItems(player, ENCHANT_SCROLL_ADVENTURER_CLOAK);
}
@@ -172,7 +172,7 @@ public class Q10974_NewStylishEquipment extends Quest
if (qs.isCond(3))
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_CLOAK.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_CLOAK.getId()))
{
if (item.getEnchantLevel() > 0)
{
@@ -221,7 +221,7 @@ public class Q10974_NewStylishEquipment extends Quest
case 1:
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_SHEEP_HAT.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_SHEEP_HAT.getId()))
{
if (item.getEnchantLevel() > 0)
{
@@ -243,7 +243,7 @@ public class Q10974_NewStylishEquipment extends Quest
case 2:
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_BELT.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_BELT.getId()))
{
if (item.getEnchantLevel() > 0)
{
@@ -265,7 +265,7 @@ public class Q10974_NewStylishEquipment extends Quest
case 3:
{
boolean foundEnchant = false;
SEARCH: for (ItemInstance item : player.getInventory().getItemsByItemId(ADVENTURER_CLOAK.getId()))
SEARCH: for (ItemInstance item : player.getInventory().getAllItemsByItemId(ADVENTURER_CLOAK.getId()))
{
if (item.getEnchantLevel() > 0)
{

View File

@@ -393,7 +393,7 @@ public class CastleManorManager implements IXmlReader, IStorable
final ItemContainer cwh = owner.getWarehouse();
for (CropProcure crop : _procureNext.get(castleId))
{
if ((crop.getStartAmount() > 0) && (cwh.getItemsByItemId(getSeedByCrop(crop.getId()).getMatureId()) == null))
if ((crop.getStartAmount() > 0) && (cwh.getAllItemsByItemId(getSeedByCrop(crop.getId()).getMatureId()) == null))
{
slots++;
}

View File

@@ -332,7 +332,13 @@ public class PetInstance extends Summon
{
if (_inventory != null)
{
return _inventory.getItems(item -> (item.getItemLocation() == ItemLocation.PET_EQUIP) && (item.getItem().getBodyPart() == Item.SLOT_R_HAND)).stream().findAny().orElse(null);
for (ItemInstance item : _inventory.getItems())
{
if ((item.getItemLocation() == ItemLocation.PET_EQUIP) && (item.getItem().getBodyPart() == Item.SLOT_R_HAND))
{
return item;
}
}
}
return null;
}

View File

@@ -12991,7 +12991,7 @@ public class PlayerInstance extends Playable
*/
public boolean isInventoryUnder90(boolean includeQuestInv)
{
return (_inventory.getSize(item -> !item.isQuestItem() || includeQuestInv) <= (getInventoryLimit() * 0.9));
return (includeQuestInv ? _inventory.getSize() : _inventory.getNonQuestSize()) <= (getInventoryLimit() * 0.9);
}
/**
@@ -13001,7 +13001,7 @@ public class PlayerInstance extends Playable
*/
public boolean isInventoryUnder80(boolean includeQuestInv)
{
return (_inventory.getSize(item -> !item.isQuestItem() || includeQuestInv) <= (getInventoryLimit() * 0.8));
return (includeQuestInv ? _inventory.getSize() : _inventory.getNonQuestSize()) <= (getInventoryLimit() * 0.8);
}
public boolean havePetInvItems()

View File

@@ -42,7 +42,7 @@ public class ConditionPlayerInvSize extends Condition
{
if (effector.getActingPlayer() != null)
{
return effector.getActingPlayer().getInventory().getSize(i -> !i.isQuestItem()) <= (effector.getActingPlayer().getInventoryLimit() - _size);
return effector.getActingPlayer().getInventory().getNonQuestSize() <= (effector.getActingPlayer().getInventoryLimit() - _size);
}
return true;
}

View File

@@ -44,7 +44,7 @@ public class ConditionTargetInvSize extends Condition
if ((effected != null) && effected.isPlayer())
{
final PlayerInstance target = effected.getActingPlayer();
return target.getInventory().getSize(i -> !i.isQuestItem()) <= (target.getInventoryLimit() - _size);
return target.getInventory().getNonQuestSize() <= (target.getInventoryLimit() - _size);
}
return false;
}

View File

@@ -24,6 +24,7 @@ import org.l2jmobius.gameserver.model.ItemInfo;
import org.l2jmobius.gameserver.model.actor.Npc;
import org.l2jmobius.gameserver.model.itemcontainer.Inventory;
import org.l2jmobius.gameserver.model.itemcontainer.ItemContainer;
import org.l2jmobius.gameserver.model.items.instance.ItemInstance;
/**
* A modified version of {@link MultisellListHolder} that may include altered data of the original and other dynamic data resulted from players' interraction.
@@ -54,21 +55,24 @@ public class PreparedMultisellListHolder extends MultisellListHolder
_itemInfos = new ArrayList<>();
// Only do the match up on equippable items that are not currently equipped. For each appropriate item, produce a set of entries for the multisell list.
inventory.getItems(item -> !item.isEquipped() && (item.isArmor() || item.isWeapon())).forEach(item ->
for (ItemInstance item : inventory.getItems())
{
// Check ingredients of each entry to see if it's an entry we'd like to include.
for (MultisellEntryHolder entry : list.getEntries())
if (!item.isEquipped() && (item.isArmor() || item.isWeapon()))
{
for (ItemChanceHolder holder : entry.getIngredients())
// Check ingredients of each entry to see if it's an entry we'd like to include.
for (MultisellEntryHolder entry : list.getEntries())
{
if (holder.getId() == item.getId())
for (ItemChanceHolder holder : entry.getIngredients())
{
_entries.add(entry);
_itemInfos.add(new ItemInfo(item));
if (holder.getId() == item.getId())
{
_entries.add(entry);
_itemInfos.add(new ItemInfo(item));
}
}
}
}
});
}
}
}

View File

@@ -1084,7 +1084,7 @@ public abstract class Inventory extends ItemContainer
synchronized (item)
{
if (!_items.containsKey(item.getObjectId()))
if (!_items.contains(item))
{
return null;
}
@@ -1119,7 +1119,7 @@ public abstract class Inventory extends ItemContainer
synchronized (item)
{
if (!_items.containsKey(item.getObjectId()))
if (!_items.contains(item))
{
return null;
}
@@ -2146,7 +2146,7 @@ public abstract class Inventory extends ItemContainer
protected void refreshWeight()
{
long weight = 0;
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if ((item != null) && (item.getItem() != null))
{
@@ -2189,9 +2189,9 @@ public abstract class Inventory extends ItemContainer
}
ItemInstance arrow = null;
for (ItemInstance item : getItems())
for (ItemInstance item : _items)
{
if (item.isEtcItem() && (item.getItem().getCrystalTypePlus() == bow.getCrystalTypePlus()) && (item.getEtcItem().getItemType() == EtcItemType.ARROW))
if (item.isEtcItem() && (item.getEtcItem().getItemType() == EtcItemType.ARROW) && (item.getItem().getCrystalTypePlus() == bow.getCrystalTypePlus()))
{
arrow = item;
break;
@@ -2210,9 +2210,9 @@ public abstract class Inventory extends ItemContainer
public ItemInstance findBoltForCrossBow(Item crossbow)
{
ItemInstance bolt = null;
for (ItemInstance item : getItems())
for (ItemInstance item : _items)
{
if (item.isEtcItem() && (item.getItem().getCrystalTypePlus() == crossbow.getCrystalTypePlus()) && (item.getEtcItem().getItemType() == EtcItemType.BOLT))
if (item.isEtcItem() && (item.getEtcItem().getItemType() == EtcItemType.BOLT) && (item.getItem().getCrystalTypePlus() == crossbow.getCrystalTypePlus()))
{
bolt = item;
break;
@@ -2231,9 +2231,9 @@ public abstract class Inventory extends ItemContainer
public ItemInstance findElementalOrbForPistols(Item pistols)
{
ItemInstance orb = null;
for (ItemInstance item : getItems())
for (ItemInstance item : _items)
{
if (item.isEtcItem() && (item.getItem().getCrystalTypePlus() == pistols.getCrystalTypePlus()) && (item.getEtcItem().getItemType() == EtcItemType.ELEMENTAL_ORB))
if (item.isEtcItem() && (item.getEtcItem().getItemType() == EtcItemType.ELEMENTAL_ORB) && (item.getItem().getCrystalTypePlus() == pistols.getCrystalTypePlus()))
{
orb = item;
break;

View File

@@ -22,9 +22,6 @@ import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -45,7 +42,8 @@ public abstract class ItemContainer
{
protected static final Logger LOGGER = Logger.getLogger(ItemContainer.class.getName());
protected final Map<Integer, ItemInstance> _items = new ConcurrentHashMap<>();
protected final List<ItemInstance> _items = new ArrayList<>(1);
private int _questItemSize = 0;
protected ItemContainer()
{
@@ -77,28 +75,19 @@ public abstract class ItemContainer
}
/**
* @param filterValue
* @param filters
* @return the quantity of quest items in the inventory
*/
public int getQuestSize()
{
return _questItemSize;
}
/**
* @return the quantity of items in the inventory
*/
@SafeVarargs
public final int getSize(Predicate<ItemInstance> filterValue, Predicate<ItemInstance>... filters)
public int getNonQuestSize()
{
Predicate<ItemInstance> filter = filterValue;
for (Predicate<ItemInstance> additionalFilter : filters)
{
filter = filter.and(additionalFilter);
}
int count = 0;
for (ItemInstance item : _items.values())
{
if (filter.test(item))
{
count++;
}
}
return count;
return _items.size() - _questItemSize;
}
/**
@@ -107,33 +96,7 @@ public abstract class ItemContainer
*/
public Collection<ItemInstance> getItems()
{
return getItems(i -> true);
}
/**
* Gets the items in inventory filtered by filter.
* @param filterValue the filter
* @param filters multiple filters
* @return the filtered items in inventory
*/
@SafeVarargs
public final Collection<ItemInstance> getItems(Predicate<ItemInstance> filterValue, Predicate<ItemInstance>... filters)
{
Predicate<ItemInstance> filter = filterValue;
for (Predicate<ItemInstance> additionalFilter : filters)
{
filter = filter.and(additionalFilter);
}
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items.values())
{
if (filter.test(item))
{
result.add(item);
}
}
return result;
return _items;
}
/**
@@ -142,7 +105,7 @@ public abstract class ItemContainer
*/
public ItemInstance getItemByItemId(int itemId)
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (item.getId() == itemId)
{
@@ -156,9 +119,17 @@ public abstract class ItemContainer
* @param itemId the item Id
* @return the items list from inventory by using its itemId
*/
public Collection<ItemInstance> getItemsByItemId(int itemId)
public Collection<ItemInstance> getAllItemsByItemId(int itemId)
{
return getItems(i -> i.getId() == itemId);
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items)
{
if (itemId == item.getId())
{
result.add(item);
}
}
return result;
}
/**
@@ -167,7 +138,14 @@ public abstract class ItemContainer
*/
public ItemInstance getItemByObjectId(int objectId)
{
return _items.get(objectId);
for (ItemInstance item : _items)
{
if (objectId == item.getObjectId())
{
return item;
}
}
return null;
}
/**
@@ -191,7 +169,7 @@ public abstract class ItemContainer
public long getInventoryItemCount(int itemId, int enchantLevel, boolean includeEquipped)
{
long count = 0;
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if ((item.getId() == itemId) && ((item.getEnchantLevel() == enchantLevel) || (enchantLevel < 0)) && (includeEquipped || !item.isEquipped()))
{
@@ -210,7 +188,7 @@ public abstract class ItemContainer
*/
public boolean haveItemForSelfResurrection()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (item.getItem().isAllowSelfResurrection())
{
@@ -412,7 +390,7 @@ public abstract class ItemContainer
synchronized (item)
{
if (!_items.containsKey(item.getObjectId()))
if (!_items.contains(item))
{
return null;
}
@@ -560,9 +538,12 @@ public abstract class ItemContainer
*/
public void destroyAllItems(String process, PlayerInstance actor, Object reference)
{
for (ItemInstance item : _items.values())
synchronized (_items)
{
destroyItem(process, item, actor, reference);
for (ItemInstance item : _items)
{
destroyItem(process, item, actor, reference);
}
}
}
@@ -571,7 +552,7 @@ public abstract class ItemContainer
*/
public long getAdena()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (item.getId() == Inventory.ADENA_ID)
{
@@ -583,7 +564,7 @@ public abstract class ItemContainer
public long getBeautyTickets()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (item.getId() == Inventory.BEAUTY_TICKET_ID)
{
@@ -599,7 +580,15 @@ public abstract class ItemContainer
*/
protected void addItem(ItemInstance item)
{
_items.put(item.getObjectId(), item);
synchronized (_items)
{
if (item.isQuestItem())
{
_questItemSize++;
}
_items.add(item);
}
}
/**
@@ -609,7 +598,15 @@ public abstract class ItemContainer
*/
protected boolean removeItem(ItemInstance item)
{
return _items.remove(item.getObjectId()) != null;
synchronized (_items)
{
if (item.isQuestItem())
{
_questItemSize--;
}
return _items.remove(item);
}
}
/**
@@ -626,7 +623,7 @@ public abstract class ItemContainer
{
if (getOwner() != null)
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.updateDatabase(true);
item.stopAllTasks();
@@ -643,7 +640,7 @@ public abstract class ItemContainer
{
if (getOwner() != null)
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.updateDatabase(true);
}

View File

@@ -67,7 +67,7 @@ public class Mail extends ItemContainer
public void setNewMessageId(int messageId)
{
_messageId = messageId;
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.setItemLocation(getBaseLocation(), messageId);
}
@@ -76,7 +76,7 @@ public class Mail extends ItemContainer
public void returnToWh(ItemContainer wh)
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (wh == null)
{
@@ -103,7 +103,7 @@ public class Mail extends ItemContainer
@Override
public void updateDatabase()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.updateDatabase(true);
}
@@ -146,7 +146,7 @@ public class Mail extends ItemContainer
@Override
public void deleteMe()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.updateDatabase(true);
item.stopAllTasks();

View File

@@ -114,7 +114,7 @@ public class PetInventory extends Inventory
{
super.restore();
// check for equipped items from other pets
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (item.isEquipped() && !item.getItem().checkCondition(_owner, _owner, false))
{
@@ -125,7 +125,7 @@ public class PetInventory extends Inventory
public void transferItemsToOwner()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
getOwner().transferItem("return", item.getObjectId(), item.getCount(), getOwner().getOwner().getInventory(), getOwner().getOwner(), getOwner());
}

View File

@@ -23,10 +23,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.l2jmobius.Config;
import org.l2jmobius.commons.database.DatabaseFactory;
@@ -58,9 +56,7 @@ public class PlayerInventory extends Inventory
private ItemInstance _adena;
private ItemInstance _ancientAdena;
private ItemInstance _beautyTickets;
private Collection<Integer> _blockItems = null;
private InventoryBlockType _blockMode = InventoryBlockType.NONE;
public PlayerInventory(PlayerInstance owner)
@@ -132,7 +128,7 @@ public class PlayerInventory extends Inventory
public Collection<ItemInstance> getUniqueItems(boolean allowAdena, boolean allowAncientAdena, boolean onlyAvailable)
{
final List<ItemInstance> list = new ArrayList<>();
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
if (!allowAdena && (item.getId() == ADENA_ID))
{
@@ -159,15 +155,6 @@ public class PlayerInventory extends Inventory
return list;
}
/**
* @param itemId
* @return
*/
public Collection<ItemInstance> getAllItemsByItemId(int itemId)
{
return getAllItemsByItemId(itemId, true);
}
/**
* Returns the list of all items in inventory that have a given item id.
* @param itemId : ID of item
@@ -176,7 +163,15 @@ public class PlayerInventory extends Inventory
*/
public Collection<ItemInstance> getAllItemsByItemId(int itemId, boolean includeEquipped)
{
return getItems(i -> (i.getId() == itemId) && (includeEquipped || !i.isEquipped()));
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items)
{
if ((itemId == item.getId()) && (includeEquipped || !item.isEquipped()))
{
result.add(item);
}
}
return result;
}
/**
@@ -198,7 +193,15 @@ public class PlayerInventory extends Inventory
*/
public Collection<ItemInstance> getAllItemsByItemId(int itemId, int enchantment, boolean includeEquipped)
{
return getItems(i -> (i.getId() == itemId) && (i.getEnchantLevel() == enchantment) && (includeEquipped || !i.isEquipped()));
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items)
{
if ((itemId == item.getId()) && (item.getEnchantLevel() == enchantment) && (includeEquipped || !item.isEquipped()))
{
result.add(item);
}
}
return result;
}
/**
@@ -209,18 +212,24 @@ public class PlayerInventory extends Inventory
*/
public Collection<ItemInstance> getAvailableItems(boolean allowAdena, boolean allowNonTradeable, boolean feightable)
{
return getItems(i ->
final List<ItemInstance> result = new ArrayList<>();
for (ItemInstance item : _items)
{
if (!i.isAvailable(_owner, allowAdena, allowNonTradeable) || !canManipulateWithItemId(i.getId()))
if (!item.isAvailable(_owner, allowAdena, allowNonTradeable) || !canManipulateWithItemId(item.getId()))
{
return false;
continue;
}
else if (feightable)
{
return (i.getItemLocation() == ItemLocation.INVENTORY) && i.isFreightable();
if ((item.getItemLocation() == ItemLocation.INVENTORY) && item.isFreightable())
{
result.add(item);
}
continue;
}
return true;
});
result.add(item);
}
return result;
}
/**
@@ -230,13 +239,19 @@ public class PlayerInventory extends Inventory
*/
public Collection<TradeItem> getAvailableItems(TradeList tradeList)
{
//@formatter:off
return _items.values().stream()
.filter(i -> i.isAvailable(_owner, false, false))
.map(tradeList::adjustAvailableItem)
.filter(Objects::nonNull)
.collect(Collectors.toCollection(ArrayList::new));
//@formatter:on
final List<TradeItem> result = new ArrayList<>();
for (ItemInstance item : _items)
{
if ((item != null) && item.isAvailable(_owner, false, false))
{
final TradeItem adjItem = tradeList.adjustAvailableItem(item);
if (adjItem != null)
{
result.add(adjItem);
}
}
}
return result;
}
/**
@@ -246,7 +261,7 @@ public class PlayerInventory extends Inventory
public void adjustAvailableItem(TradeItem item)
{
boolean notAllEquipped = false;
for (ItemInstance adjItem : getItemsByItemId(item.getItem().getId()))
for (ItemInstance adjItem : getAllItemsByItemId(item.getItem().getId()))
{
if (adjItem.isEquipable())
{
@@ -734,10 +749,10 @@ public class PlayerInventory extends Inventory
{
final int[][] paperdoll = new int[Inventory.PAPERDOLL_TOTALSLOTS][4];
try (Connection con = DatabaseFactory.getConnection();
PreparedStatement statement2 = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
PreparedStatement ps = con.prepareStatement("SELECT object_id,item_id,loc_data,enchant_level FROM items WHERE owner_id=? AND loc='PAPERDOLL'"))
{
statement2.setInt(1, objectId);
try (ResultSet invdata = statement2.executeQuery())
ps.setInt(1, objectId);
try (ResultSet invdata = ps.executeQuery())
{
while (invdata.next())
{
@@ -835,7 +850,7 @@ public class PlayerInventory extends Inventory
public boolean validateCapacity(long slots, boolean questItem)
{
return ((slots == 0) && !Config.AUTO_LOOT_SLOT_LIMIT) || questItem ? (getSize(item -> item.isQuestItem()) + slots) <= _owner.getQuestInventoryLimit() : (getSize(item -> !item.isQuestItem()) + slots) <= _owner.getInventoryLimit();
return ((slots == 0) && !Config.AUTO_LOOT_SLOT_LIMIT) || questItem ? (getQuestSize() + slots) <= _owner.getQuestInventoryLimit() : (getNonQuestSize() + slots) <= _owner.getInventoryLimit();
}
@Override
@@ -947,7 +962,7 @@ public class PlayerInventory extends Inventory
*/
public void applyItemSkills()
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
item.giveSkillsToOwner();
item.applyEnchantStats();

View File

@@ -85,7 +85,7 @@ public class PlayerRefund extends ItemContainer
{
try
{
for (ItemInstance item : _items.values())
for (ItemInstance item : _items)
{
ItemTable.getInstance().destroyItem("ClearRefund", item, getOwner(), null);
item.updateDatabase(true);

View File

@@ -291,10 +291,13 @@ public class SkillCaster implements Runnable
// Reduce talisman mana on skill use
if ((_skill.getReferenceItemId() > 0) && (ItemTable.getInstance().getTemplate(_skill.getReferenceItemId()).getBodyPart() == Item.SLOT_DECO))
{
final ItemInstance talisman = caster.getInventory().getItems(i -> i.getId() == _skill.getReferenceItemId(), ItemInstance::isEquipped).stream().findAny().orElse(null);
if (talisman != null)
for (ItemInstance item : caster.getInventory().getItems())
{
talisman.decreaseMana(false, talisman.useSkillDisTime());
if (item.isEquipped() && (item.getId() == _skill.getReferenceItemId()))
{
item.decreaseMana(false, item.useSkillDisTime());
break;
}
}
}

View File

@@ -85,7 +85,7 @@ public class RequestChangeAttributeItem implements IClientIncomingPacket
player.sendPacket(msg);
final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(item);
for (ItemInstance i : player.getInventory().getItemsByItemId(_consumeItemId))
for (ItemInstance i : player.getInventory().getAllItemsByItemId(_consumeItemId))
{
iu.addItem(i);
}

View File

@@ -37,7 +37,7 @@ public class BuyList extends AbstractItemPacket
_listId = list.getListId();
_list = list.getProducts();
_money = player.getAdena();
_inventorySlots = player.getInventory().getItems(item -> !item.isQuestItem()).size();
_inventorySlots = player.getInventory().getNonQuestSize();
_castleTaxRate = castleTaxRate;
}

View File

@@ -16,7 +16,9 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.l2jmobius.Config;
import org.l2jmobius.commons.network.PacketWriter;
@@ -30,7 +32,7 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
*/
public class ExBuySellList extends AbstractItemPacket
{
private final Collection<ItemInstance> _sellList;
private final List<ItemInstance> _sellList = new ArrayList<>();
private Collection<ItemInstance> _refundList = null;
private final boolean _done;
private final int _inventorySlots;
@@ -38,8 +40,14 @@ public class ExBuySellList extends AbstractItemPacket
public ExBuySellList(PlayerInstance player, boolean done)
{
final Summon pet = player.getPet();
_sellList = player.getInventory().getItems(item -> !item.isEquipped() && item.isSellable() && ((pet == null) || (item.getObjectId() != pet.getControlObjectId())));
_inventorySlots = player.getInventory().getItems(item -> !item.isQuestItem()).size();
for (ItemInstance item : player.getInventory().getItems())
{
if (!item.isEquipped() && item.isSellable() && ((pet == null) || (item.getObjectId() != pet.getControlObjectId())))
{
_sellList.add(item);
}
}
_inventorySlots = player.getInventory().getNonQuestSize();
if (player.hasRefund())
{
_refundList = player.getRefund().getItems();

View File

@@ -16,7 +16,8 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Collection;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -30,13 +31,19 @@ public class ExQuestItemList extends AbstractItemPacket
{
private final int _sendType;
private final PlayerInstance _player;
private final Collection<ItemInstance> _items;
private final List<ItemInstance> _items = new ArrayList<>();
public ExQuestItemList(int sendType, PlayerInstance player)
{
_sendType = sendType;
_player = player;
_items = player.getInventory().getItems(ItemInstance::isQuestItem);
for (ItemInstance item : player.getInventory().getItems())
{
if (item.isQuestItem())
{
_items.add(item);
}
}
}
@Override

View File

@@ -16,7 +16,8 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.Collection;
import java.util.ArrayList;
import java.util.List;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -25,12 +26,18 @@ import org.l2jmobius.gameserver.network.OutgoingPackets;
public class ExShowBaseAttributeCancelWindow implements IClientOutgoingPacket
{
private final Collection<ItemInstance> _items;
private final List<ItemInstance> _items = new ArrayList<>();
private long _price;
public ExShowBaseAttributeCancelWindow(PlayerInstance player)
{
_items = player.getInventory().getItems(ItemInstance::hasAttributes);
for (ItemInstance item : player.getInventory().getItems())
{
if (item.hasAttributes())
{
_items.add(item);
}
}
}
@Override

View File

@@ -16,8 +16,8 @@
*/
package org.l2jmobius.gameserver.network.serverpackets;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.l2jmobius.commons.network.PacketWriter;
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
@@ -28,13 +28,19 @@ public class ItemList extends AbstractItemPacket
{
private final int _sendType;
private final PlayerInstance _player;
private final List<ItemInstance> _items;
private final List<ItemInstance> _items = new ArrayList<>();
public ItemList(int sendType, PlayerInstance player)
{
_sendType = sendType;
_player = player;
_items = player.getInventory().getItems(item -> !item.isQuestItem()).stream().collect(Collectors.toList());
for (ItemInstance item : player.getInventory().getItems())
{
if (!item.isQuestItem())
{
_items.add(item);
}
}
}
@Override