Implement ItemUtil for plugins
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.cannon;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Provides;
|
||||
import java.awt.Color;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
@@ -38,7 +39,6 @@ import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameObject;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemID;
|
||||
import static net.runelite.api.ObjectID.CANNON_BASE;
|
||||
import net.runelite.api.Player;
|
||||
@@ -62,6 +62,7 @@ import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.task.Schedule;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Cannon",
|
||||
@@ -72,6 +73,9 @@ public class CannonPlugin extends Plugin
|
||||
{
|
||||
private static final Pattern NUMBER_PATTERN = Pattern.compile("([0-9]+)");
|
||||
private static final int MAX_CBALLS = 30;
|
||||
private static final ImmutableSet<Integer> CANNON_PARTS = ImmutableSet.of(
|
||||
ItemID.CANNON_BASE, ItemID.CANNON_STAND, ItemID.CANNON_BARRELS, ItemID.CANNON_FURNACE
|
||||
);
|
||||
|
||||
private CannonCounter counter;
|
||||
private boolean skipProjectileCheckThisTick;
|
||||
@@ -153,46 +157,7 @@ public class CannonPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
boolean hasBase = false;
|
||||
boolean hasStand = false;
|
||||
boolean hasBarrels = false;
|
||||
boolean hasFurnace = false;
|
||||
boolean hasAll = false;
|
||||
|
||||
if (!cannonPlaced)
|
||||
{
|
||||
for (Item item : event.getItemContainer().getItems())
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (item.getId())
|
||||
{
|
||||
case ItemID.CANNON_BASE:
|
||||
hasBase = true;
|
||||
break;
|
||||
case ItemID.CANNON_STAND:
|
||||
hasStand = true;
|
||||
break;
|
||||
case ItemID.CANNON_BARRELS:
|
||||
hasBarrels = true;
|
||||
break;
|
||||
case ItemID.CANNON_FURNACE:
|
||||
hasFurnace = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (hasBase && hasStand && hasBarrels && hasFurnace)
|
||||
{
|
||||
hasAll = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
cannonSpotOverlay.setHidden(!hasAll);
|
||||
cannonSpotOverlay.setHidden(!ItemUtil.containsAllItemIds(event.getItemContainer().getItems(), CANNON_PARTS));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
@@ -31,10 +31,8 @@ import com.google.inject.Provides;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
import javax.inject.Inject;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -86,6 +84,7 @@ import net.runelite.client.plugins.cluescrolls.clues.ThreeStepCrypticClue;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
|
||||
import net.runelite.client.util.ImageUtil;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
@@ -234,10 +233,8 @@ public class ClueScrollPlugin extends Plugin
|
||||
// Check if item was removed from inventory
|
||||
if (clue != null && clueItemId != null)
|
||||
{
|
||||
final Stream<Item> items = Arrays.stream(event.getItemContainer().getItems());
|
||||
|
||||
// Check if clue was removed from inventory
|
||||
if (items.noneMatch(item -> itemManager.getItemComposition(item.getId()).getId() == clueItemId))
|
||||
if (!ItemUtil.containsItemId(event.getItemContainer().getItems(), clueItemId))
|
||||
{
|
||||
resetClue(true);
|
||||
}
|
||||
|
||||
@@ -28,15 +28,12 @@ import java.awt.Dimension;
|
||||
import java.awt.Graphics2D;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import static net.runelite.api.ItemID.TORN_CLUE_SCROLL_PART_1;
|
||||
import static net.runelite.api.ItemID.TORN_CLUE_SCROLL_PART_2;
|
||||
import static net.runelite.api.ItemID.TORN_CLUE_SCROLL_PART_3;
|
||||
@@ -48,6 +45,7 @@ import net.runelite.client.plugins.cluescrolls.ClueScrollPlugin;
|
||||
import net.runelite.client.ui.overlay.components.LineComponent;
|
||||
import net.runelite.client.ui.overlay.components.PanelComponent;
|
||||
import net.runelite.client.ui.overlay.components.TitleComponent;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@Getter
|
||||
@@ -127,21 +125,19 @@ public class ThreeStepCrypticClue extends ClueScroll implements TextClueScroll,
|
||||
if (event.getItemContainer() == client.getItemContainer(InventoryID.INVENTORY))
|
||||
{
|
||||
boolean success = false;
|
||||
success |= checkForPart(event, itemManager, TORN_CLUE_SCROLL_PART_1, 0);
|
||||
success |= checkForPart(event, itemManager, TORN_CLUE_SCROLL_PART_2, 1);
|
||||
success |= checkForPart(event, itemManager, TORN_CLUE_SCROLL_PART_3, 2);
|
||||
success |= checkForPart(event, TORN_CLUE_SCROLL_PART_1, 0);
|
||||
success |= checkForPart(event, TORN_CLUE_SCROLL_PART_2, 1);
|
||||
success |= checkForPart(event, TORN_CLUE_SCROLL_PART_3, 2);
|
||||
return success;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean checkForPart(final ItemContainerChanged event, ItemManager itemManager, int clueScrollPart, int index)
|
||||
private boolean checkForPart(final ItemContainerChanged event, int clueScrollPart, int index)
|
||||
{
|
||||
final Stream<Item> items = Arrays.stream(event.getItemContainer().getItems());
|
||||
|
||||
// If we have the part then that step is done
|
||||
if (items.anyMatch(item -> itemManager.getItemComposition(item.getId()).getId() == clueScrollPart))
|
||||
if (ItemUtil.containsItemId(event.getItemContainer().getItems(), clueScrollPart))
|
||||
{
|
||||
final Map.Entry<CrypticClue, Boolean> entry = clueSteps.get(index);
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.fishing;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.inject.Provides;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
@@ -43,7 +44,6 @@ import net.runelite.api.ChatMessageType;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemContainer;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.api.NPC;
|
||||
@@ -65,6 +65,7 @@ import net.runelite.client.plugins.PluginDependency;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Fishing",
|
||||
@@ -81,6 +82,15 @@ public class FishingPlugin extends Plugin
|
||||
|
||||
private static final int TRAWLER_ACTIVITY_THRESHOLD = Math.round(0.15f * 255);
|
||||
|
||||
private static final ImmutableSet<Integer> FISHING_TOOLS = ImmutableSet.of(
|
||||
ItemID.DRAGON_HARPOON, ItemID.INFERNAL_HARPOON, ItemID.INFERNAL_HARPOON_UNCHARGED, ItemID.HARPOON,
|
||||
ItemID.BARBTAIL_HARPOON, ItemID.BIG_FISHING_NET, ItemID.SMALL_FISHING_NET, ItemID.SMALL_FISHING_NET_6209,
|
||||
ItemID.FISHING_ROD, ItemID.FLY_FISHING_ROD, ItemID.BARBARIAN_ROD, ItemID.OILY_FISHING_ROD,
|
||||
ItemID.LOBSTER_POT, ItemID.KARAMBWAN_VESSEL, ItemID.KARAMBWAN_VESSEL_3159,
|
||||
ItemID.CORMORANTS_GLOVE, ItemID.CORMORANTS_GLOVE_22817,
|
||||
ItemID.PEARL_FISHING_ROD, ItemID.PEARL_FLY_FISHING_ROD, ItemID.PEARL_BARBARIAN_ROD
|
||||
);
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private final FishingSession session = new FishingSession();
|
||||
|
||||
@@ -226,39 +236,7 @@ public class FishingPlugin extends Plugin
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Item item : itemContainer.getItems())
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
switch (item.getId())
|
||||
{
|
||||
case ItemID.DRAGON_HARPOON:
|
||||
case ItemID.INFERNAL_HARPOON:
|
||||
case ItemID.INFERNAL_HARPOON_UNCHARGED:
|
||||
case ItemID.HARPOON:
|
||||
case ItemID.BARBTAIL_HARPOON:
|
||||
case ItemID.BIG_FISHING_NET:
|
||||
case ItemID.SMALL_FISHING_NET:
|
||||
case ItemID.SMALL_FISHING_NET_6209:
|
||||
case ItemID.FISHING_ROD:
|
||||
case ItemID.FLY_FISHING_ROD:
|
||||
case ItemID.PEARL_BARBARIAN_ROD:
|
||||
case ItemID.PEARL_FISHING_ROD:
|
||||
case ItemID.PEARL_FLY_FISHING_ROD:
|
||||
case ItemID.BARBARIAN_ROD:
|
||||
case ItemID.OILY_FISHING_ROD:
|
||||
case ItemID.LOBSTER_POT:
|
||||
case ItemID.KARAMBWAN_VESSEL:
|
||||
case ItemID.KARAMBWAN_VESSEL_3159:
|
||||
case ItemID.CORMORANTS_GLOVE:
|
||||
case ItemID.CORMORANTS_GLOVE_22817:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return ItemUtil.containsAnyItemId(itemContainer.getItems(), FISHING_TOOLS);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
@@ -24,13 +24,16 @@
|
||||
*/
|
||||
package net.runelite.client.plugins.itemstats.potions;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.EquipmentInventorySlot;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemContainer;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.client.plugins.itemstats.StatBoost;
|
||||
import static net.runelite.client.plugins.itemstats.stats.Stats.PRAYER;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
|
||||
public class PrayerPotion extends StatBoost
|
||||
{
|
||||
@@ -42,8 +45,11 @@ public class PrayerPotion extends StatBoost
|
||||
this.delta = delta;
|
||||
}
|
||||
|
||||
private static final int RING_SLOT = 12;
|
||||
private static final int CAPE_SLOT = 1;
|
||||
private static final ImmutableSet<Integer> HOLY_WRENCH_IDS = ImmutableSet.of(
|
||||
ItemID.HOLY_WRENCH, ItemID.PRAYER_CAPE, ItemID.PRAYER_CAPET, ItemID.MAX_CAPE, ItemID.MAX_CAPE_13342,
|
||||
// No idea what these are
|
||||
ItemID.PRAYER_CAPE_10643, ItemID.MAX_CAPE_13282
|
||||
);
|
||||
|
||||
@Override
|
||||
public int heals(Client client)
|
||||
@@ -54,40 +60,18 @@ public class PrayerPotion extends StatBoost
|
||||
if (equipContainer != null)
|
||||
{
|
||||
Item[] equip = equipContainer.getItems();
|
||||
final int ring = ItemUtil.safeGetItemIdAtIndex(equip, EquipmentInventorySlot.RING.getSlotIdx());
|
||||
final int cape = ItemUtil.safeGetItemIdAtIndex(equip, EquipmentInventorySlot.CAPE.getSlotIdx());
|
||||
|
||||
hasHolyWrench |= equip.length > RING_SLOT && equip[RING_SLOT].getId() == ItemID.RING_OF_THE_GODS_I;
|
||||
if (equip.length > CAPE_SLOT)
|
||||
{
|
||||
int cape = equip[CAPE_SLOT].getId();
|
||||
hasHolyWrench |= cape == ItemID.PRAYER_CAPE;
|
||||
hasHolyWrench |= cape == ItemID.PRAYER_CAPET;
|
||||
hasHolyWrench |= cape == ItemID.PRAYER_CAPE_10643; // No idea what this is
|
||||
hasHolyWrench |= cape == ItemID.MAX_CAPE;
|
||||
hasHolyWrench |= cape == ItemID.MAX_CAPE_13282; // Or these
|
||||
hasHolyWrench |= cape == ItemID.MAX_CAPE_13342;
|
||||
}
|
||||
hasHolyWrench |= ring == ItemID.RING_OF_THE_GODS_I;
|
||||
hasHolyWrench |= HOLY_WRENCH_IDS.contains(cape);
|
||||
}
|
||||
if (!hasHolyWrench)
|
||||
{
|
||||
ItemContainer invContainer = client.getItemContainer(InventoryID.INVENTORY);
|
||||
if (invContainer != null)
|
||||
{
|
||||
for (Item itemStack : invContainer.getItems())
|
||||
{
|
||||
int item = itemStack.getId();
|
||||
hasHolyWrench |= item == ItemID.HOLY_WRENCH;
|
||||
hasHolyWrench |= item == ItemID.PRAYER_CAPE;
|
||||
hasHolyWrench |= item == ItemID.PRAYER_CAPET;
|
||||
hasHolyWrench |= item == ItemID.PRAYER_CAPE_10643;
|
||||
hasHolyWrench |= item == ItemID.MAX_CAPE;
|
||||
hasHolyWrench |= item == ItemID.MAX_CAPE_13282;
|
||||
hasHolyWrench |= item == ItemID.MAX_CAPE_13342;
|
||||
|
||||
if (hasHolyWrench)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
hasHolyWrench = ItemUtil.containsAnyItemId(invContainer.getItems(), HOLY_WRENCH_IDS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,6 @@ import lombok.Getter;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.InventoryID;
|
||||
import net.runelite.api.Item;
|
||||
import net.runelite.api.ItemContainer;
|
||||
import static net.runelite.api.ItemID.MYSTIC_JEWEL;
|
||||
import net.runelite.api.Tile;
|
||||
@@ -49,6 +48,7 @@ import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.task.Schedule;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.util.ItemUtil;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Rogues' Den",
|
||||
@@ -104,15 +104,7 @@ public class RoguesDenPlugin extends Plugin
|
||||
return false;
|
||||
}
|
||||
|
||||
for (Item item : container.getItems())
|
||||
{
|
||||
if (item.getId() == MYSTIC_JEWEL)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
return ItemUtil.containsItemId(container.getItems(), MYSTIC_JEWEL);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
|
||||
Reference in New Issue
Block a user