grounditems: highlight herblore / prayer ground items (#1534)

grounditems: highlight herblore / prayer ground items

Disabled by default
This commit is contained in:
Tyler Bochard
2019-09-04 10:27:14 -04:00
committed by GitHub
parent 6c916195d5
commit 8a1d5170ac
3 changed files with 373 additions and 12 deletions

View File

@@ -639,4 +639,65 @@ public interface GroundItemsConfig extends Config
{
return new Color(0, 0, 0, 150);
}
@ConfigItem(
keyName = "xpStub",
name = "XP",
description = "Highlights various items that give xp",
position = 50
)
default Stub xpStub()
{
return new Stub();
}
@ConfigItem(
keyName = "highlightHerblore",
name = "Highlight Herblore xp",
description = "Highlight Herblore xp related items.",
position = 51,
parent = "xpStub"
)
default boolean highlightHerblore()
{
return false;
}
@ConfigItem(
keyName = "herbloreColor",
name = "Herblore Color",
description = "Color of Herblore xp items.",
position = 52,
parent = "xpStub"
)
@Alpha
default Color herbloreColor()
{
return Color.GREEN.darker();
}
@ConfigItem(
keyName = "highlightPrayer",
name = "Highlight Prayer xp",
description = "Highlight Prayer xp related items.",
position = 53,
parent = "xpStub"
)
default boolean highlightPrayer()
{
return false;
}
@ConfigItem(
keyName = "prayerColor",
name = "Prayer Color",
description = "Color of Prayer xp items.",
position = 54,
parent = "xpStub"
)
@Alpha
default Color prayerColor()
{
return Color.YELLOW;
}
}

View File

@@ -36,10 +36,10 @@ import java.time.Instant;
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
@@ -195,7 +195,37 @@ public class GroundItemsOverlay extends Overlay
continue;
}
final Color highlighted = plugin.getHighlighted(item.getName(), item.getGePrice(), item.getHaPrice());
Color highlighted = null;
//Process skill items
if (!plugin.hiddenItems.getUnchecked(item.getName()))
{
highlighted = plugin.getDefaultColor();
if (plugin.highlightHerblore)
{
if (GroundItemsPlugin.herbloreItems.contains(item.getId()))
{
highlighted = plugin.getHerbloreColor();
}
}
if (plugin.highlightPrayer)
{
if (GroundItemsPlugin.prayerItems.contains(item.getId()))
{
highlighted = plugin.getPrayerColor();
}
}
}
// Value overrides skill
if (plugin.getHighlighted(item.getName(), item.getGePrice(), item.getHaPrice()) != null)
{
if (plugin.getHighlighted(item.getName(), item.getGePrice(), item.getHaPrice()).getRGB() != highlighted.getRGB())
{
highlighted = plugin.getHighlighted(item.getName(), item.getGePrice(), item.getHaPrice());
}
}
final Color hidden = plugin.getHidden(item.getName(), item.getGePrice(), item.getHaPrice(), item.isTradeable());
if (highlighted == null && !plugin.isHotKeyPressed())
@@ -280,8 +310,8 @@ public class GroundItemsOverlay extends Overlay
if (item.getTicks() > 0 && plugin.isShowTimer())
{
itemStringBuilder
.append(" - ")
.append(item.getTicks());
.append(" - ")
.append(item.getTicks());
}
final String itemString = itemStringBuilder.toString();

View File

@@ -28,6 +28,7 @@ package net.runelite.client.plugins.grounditems;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.EvictingQueue;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Provides;
import java.awt.Color;
import java.awt.Rectangle;
@@ -56,14 +57,15 @@ import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.ItemDefinition;
import net.runelite.api.ItemID;
import net.runelite.api.MenuOpcode;
import net.runelite.api.TileItemPile;
import static net.runelite.api.ItemID.*;
import net.runelite.api.MenuEntry;
import net.runelite.api.MenuOpcode;
import net.runelite.api.Node;
import net.runelite.api.Player;
import net.runelite.api.Scene;
import net.runelite.api.Tile;
import net.runelite.api.TileItem;
import net.runelite.api.TileItemPile;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ClientTick;
import net.runelite.api.events.ConfigChanged;
@@ -75,6 +77,7 @@ import net.runelite.api.events.ItemQuantityChanged;
import net.runelite.api.events.ItemSpawned;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.util.Text;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
@@ -98,7 +101,6 @@ import net.runelite.client.plugins.grounditems.config.ValueCalculationMode;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.StackFormatter;
import net.runelite.api.util.Text;
@PluginDescriptor(
name = "Ground Items",
@@ -134,6 +136,256 @@ public class GroundItemsPlugin extends Plugin
private static final int CAST_ON_ITEM = MenuOpcode.SPELL_CAST_ON_GROUND_ITEM.getId();
private static final String TELEGRAB_TEXT = ColorUtil.wrapWithColorTag("Telekinetic Grab", Color.GREEN) + ColorUtil.prependColorTag(" -> ", Color.WHITE);
private final Map<Integer, Color> priceChecks = new LinkedHashMap<>();
private final Queue<Integer> droppedItemQueue = EvictingQueue.create(16); // recently dropped items
boolean highlightHerblore;
boolean highlightPrayer;
LoadingCache<String, Boolean> hiddenItems;
static final ImmutableSet<Integer> herbloreItems = ImmutableSet.of
(
//Grimy Herbs
GRIMY_GUAM_LEAF,
GRIMY_GUAM_LEAF + 1,
GRIMY_MARRENTILL,
GRIMY_MARRENTILL + 1,
GRIMY_TARROMIN,
GRIMY_TARROMIN + 1,
GRIMY_HARRALANDER,
GRIMY_HARRALANDER + 1,
GRIMY_RANARR_WEED,
GRIMY_RANARR_WEED + 1,
GRIMY_TOADFLAX,
GRIMY_TOADFLAX + 1,
GRIMY_IRIT_LEAF,
GRIMY_IRIT_LEAF + 1,
GRIMY_AVANTOE,
GRIMY_AVANTOE + 1,
GRIMY_KWUARM,
GRIMY_KWUARM + 1,
GRIMY_SNAPDRAGON,
GRIMY_SNAPDRAGON + 1,
GRIMY_CADANTINE,
GRIMY_CADANTINE + 1,
GRIMY_LANTADYME,
GRIMY_LANTADYME + 1,
GRIMY_DWARF_WEED,
GRIMY_DWARF_WEED + 1,
GRIMY_TORSTOL,
GRIMY_TORSTOL + 1,
//Clean Herbs
GUAM_LEAF,
GUAM_LEAF + 1,
MARRENTILL,
MARRENTILL + 1,
TARROMIN,
TARROMIN + 1,
HARRALANDER,
HARRALANDER + 1,
RANARR_WEED,
RANARR_WEED + 1,
TOADFLAX,
TOADFLAX + 1,
IRIT_LEAF,
IRIT_LEAF + 1,
AVANTOE,
AVANTOE + 1,
KWUARM,
KWUARM + 1,
SNAPDRAGON,
SNAPDRAGON + 1,
CADANTINE,
CADANTINE + 1,
LANTADYME,
LANTADYME + 1,
DWARF_WEED,
DWARF_WEED + 1,
TORSTOL,
TORSTOL + 1,
//Secondary ingredients
EYE_OF_NEWT,
EYE_OF_NEWT + 1,
UNICORN_HORN,
UNICORN_HORN + 1,
UNICORN_HORN_DUST,
UNICORN_HORN_DUST + 1,
LIMPWURT_ROOT,
LIMPWURT_ROOT + 1,
RED_SPIDERS_EGGS,
RED_SPIDERS_EGGS + 1,
CHOCOLATE_BAR,
CHOCOLATE_BAR + 1,
CHOCOLATE_DUST,
CHOCOLATE_DUST + 1,
TOADS_LEGS,
TOADS_LEGS + 1,
GOAT_HORN_DUST,
GOAT_HORN_DUST + 1,
DESERT_GOAT_HORN,
DESERT_GOAT_HORN + 1,
SNAPE_GRASS,
SNAPE_GRASS + 1,
MORT_MYRE_FUNGUS,
MORT_MYRE_FUNGUS + 1,
WHITE_BERRIES,
WHITE_BERRIES + 1,
BLUE_DRAGON_SCALE,
BLUE_DRAGON_SCALE + 1,
DRAGON_SCALE_DUST,
DRAGON_SCALE_DUST + 1,
WINE_OF_ZAMORAK,
WINE_OF_ZAMORAK + 1,
POTATO_CACTUS,
POTATO_CACTUS + 1,
BIRD_NEST,
BIRD_NEST + 1,
BIRD_NEST_5071,
BIRD_NEST_5072,
BIRD_NEST_5073,
BIRD_NEST_5074,
BIRD_NEST_5075,
BIRD_NEST_7413,
BIRD_NEST_13653,
BIRD_NEST_22798,
BIRD_NEST_22800,
LAVA_SCALE,
LAVA_SCALE + 1,
LAVA_SCALE_SHARD,
LAVA_SCALE_SHARD + 1,
TORSTOL,
TORSTOL + 1,
SUPERIOR_DRAGON_BONES,
SUPERIOR_DRAGON_BONES + 1,
CRUSHED_SUPERIOR_DRAGON_BONES,
CRUSHED_SUPERIOR_DRAGON_BONES + 1,
AMYLASE_CRYSTAL,
GARLIC,
GARLIC + 1,
//Jungle Potion herbs
GRIMY_ARDRIGAL,
GRIMY_ROGUES_PURSE,
GRIMY_SITO_FOIL,
GRIMY_SNAKE_WEED,
GRIMY_VOLENCIA_MOSS,
//Herb seeds
GUAM_SEED,
MARRENTILL_SEED,
TARROMIN_SEED,
HARRALANDER_SEED,
GOUT_TUBER,
RANARR_SEED,
TOADFLAX_SEED,
IRIT_SEED,
AVANTOE_SEED,
KWUARM_SEED,
SNAPDRAGON_SEED,
CADANTINE_SEED,
LANTADYME_SEED,
DWARF_WEED_SEED,
TORSTOL_SEED,
//Secondary seeds
LIMPWURT_SEED,
SNAPE_GRASS_SEED,
POTATO_CACTUS_SEED,
JANGERBERRY_SEED,
POISON_IVY_SEED,
BELLADONNA_SEED
);
static final ImmutableSet<Integer> prayerItems = ImmutableSet.of
(
//Bones
BONES,
BONES + 1,
WOLF_BONES,
WOLF_BONES + 1,
BURNT_BONES,
BURNT_BONES + 1,
MONKEY_BONES,
MONKEY_BONES + 1,
BAT_BONES,
BAT_BONES + 1,
BIG_BONES,
BIG_BONES + 1,
JOGRE_BONES,
JOGRE_BONES + 1,
ZOGRE_BONES,
ZOGRE_BONES + 1,
SHAIKAHAN_BONES,
SHAIKAHAN_BONES + 1,
BABYDRAGON_BONES,
BABYDRAGON_BONES + 1,
WYRM_BONES,
WYRM_BONES + 1,
WYVERN_BONES,
WYVERN_BONES + 1,
DRAGON_BONES,
DRAGON_BONES + 1,
DRAKE_BONES,
DRAKE_BONES + 1,
FAYRG_BONES,
FAYRG_BONES + 1,
LAVA_DRAGON_BONES,
LAVA_DRAGON_BONES + 1,
RAURG_BONES,
RAURG_BONES + 1,
HYDRA_BONES,
HYDRA_BONES + 1,
DAGANNOTH_BONES,
DAGANNOTH_BONES + 1,
OURG_BONES,
OURG_BONES + 1,
SUPERIOR_DRAGON_BONES,
SUPERIOR_DRAGON_BONES + 1,
//Ensouled heads
ENSOULED_ABYSSAL_HEAD_13508,
ENSOULED_ABYSSAL_HEAD_13508 + 1,
ENSOULED_AVIANSIE_HEAD_13505,
ENSOULED_AVIANSIE_HEAD_13505 + 1,
ENSOULED_BEAR_HEAD_13463,
ENSOULED_BEAR_HEAD_13463 + 1,
ENSOULED_BLOODVELD_HEAD_13496,
ENSOULED_BLOODVELD_HEAD_13496 + 1,
ENSOULED_CHAOS_DRUID_HEAD_13472,
ENSOULED_CHAOS_DRUID_HEAD_13472 + 1,
ENSOULED_DAGANNOTH_HEAD_13493,
ENSOULED_DAGANNOTH_HEAD_13493 + 1,
ENSOULED_DEMON_HEAD_13502,
ENSOULED_DEMON_HEAD_13502 + 1,
ENSOULED_DOG_HEAD_13469,
ENSOULED_DOG_HEAD_13469 + 1,
ENSOULED_DRAGON_HEAD_13511,
ENSOULED_DRAGON_HEAD_13511 + 1,
ENSOULED_ELF_HEAD_13481,
ENSOULED_ELF_HEAD_13481 + 1,
ENSOULED_GIANT_HEAD_13475,
ENSOULED_GIANT_HEAD_13475 + 1,
ENSOULED_GOBLIN_HEAD_13448,
ENSOULED_GOBLIN_HEAD_13448 + 1,
ENSOULED_HORROR_HEAD_13487,
ENSOULED_HORROR_HEAD_13487 + 1,
ENSOULED_IMP_HEAD_13454,
ENSOULED_IMP_HEAD_13454 + 1,
ENSOULED_KALPHITE_HEAD_13490,
ENSOULED_KALPHITE_HEAD_13490 + 1,
ENSOULED_MINOTAUR_HEAD_13457,
ENSOULED_MINOTAUR_HEAD_13457 + 1,
ENSOULED_MONKEY_HEAD_13451,
ENSOULED_MONKEY_HEAD_13451 + 1,
ENSOULED_OGRE_HEAD_13478,
ENSOULED_OGRE_HEAD_13478 + 1,
ENSOULED_SCORPION_HEAD_13460,
ENSOULED_SCORPION_HEAD_13460 + 1,
ENSOULED_TROLL_HEAD_13484,
ENSOULED_TROLL_HEAD_13484 + 1,
ENSOULED_TZHAAR_HEAD_13499,
ENSOULED_TZHAAR_HEAD_13499 + 1,
ENSOULED_UNICORN_HEAD_13466,
ENSOULED_UNICORN_HEAD_13466 + 1
);
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private Map.Entry<Rectangle, GroundItem> textBoxBounds;
@@ -172,9 +424,6 @@ public class GroundItemsPlugin extends Plugin
@Inject
private EventBus eventBus;
private LoadingCache<String, Boolean> highlightedItems;
private LoadingCache<String, Boolean> hiddenItems;
private final Queue<Integer> droppedItemQueue = EvictingQueue.create(16); // recently dropped items
private Color defaultColor;
private Color highlightedColor;
private Color hiddenColor;
@@ -225,6 +474,8 @@ public class GroundItemsPlugin extends Plugin
private boolean showTimer;
@Getter(AccessLevel.PACKAGE)
private Color bordercolor;
private Color herbloreColor;
private Color prayerColor;
@Provides
GroundItemsConfig provideConfig(ConfigManager configManager)
@@ -821,6 +1072,21 @@ public class GroundItemsPlugin extends Plugin
this.getHighlightItems = Text.toCSV(highlightedItemSet);
}
Color getHerbloreColor()
{
return herbloreColor;
}
Color getPrayerColor()
{
return prayerColor;
}
Color getDefaultColor()
{
return config.defaultColor();
}
Color getHighlighted(String item, int gePrice, int haPrice)
{
if (TRUE.equals(highlightedItems.getUnchecked(item)))
@@ -1022,5 +1288,9 @@ public class GroundItemsPlugin extends Plugin
this.toggleOutline = config.toggleOutline();
this.showTimer = config.showTimer();
this.bordercolor = config.bordercolor();
this.herbloreColor = config.herbloreColor();
this.prayerColor = config.prayerColor();
this.highlightHerblore = config.highlightHerblore();
this.highlightPrayer = config.highlightPrayer();
}
}