Merge pull request #3701 from Mitchell-Kovacs/ItemOverlay

Change the Jewellery Count plugin to Item Charges and added more options.
This commit is contained in:
Adam
2018-06-10 19:08:39 -04:00
committed by GitHub
11 changed files with 392 additions and 449 deletions

View File

@@ -0,0 +1,148 @@
/*
* Copyright (c) 2017, Devin French <https://github.com/devinfrench>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.itemcharges;
import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup(
keyName = "itemCharge",
name = "Item Charges",
description = "Configuration for the Item Charges plugin"
)
public interface ItemChargeConfig extends Config
{
@ConfigItem(
keyName = "veryLowWarningColor",
name = "Very Low Warning Color",
description = "Configure the color of the overlay when charges are very low",
position = 1
)
default Color veryLowWarningColor()
{
return Color.RED;
}
@ConfigItem(
keyName = "lowWarningColor",
name = "Low Warning Color",
description = "Configure the color of the overlay when charges are low",
position = 2
)
default Color lowWarningolor()
{
return Color.YELLOW;
}
@ConfigItem(
keyName = "veryLowWarning",
name = "Very Low Warning",
description = "Configure the charge count for the very low warning color",
position = 3
)
default int veryLowWarning()
{
return 1;
}
@ConfigItem(
keyName = "lowWarning",
name = "Low Warning",
description = "Configure the charge count for the low warning color",
position = 4
)
default int lowWarning()
{
return 2;
}
@ConfigItem(
keyName = "showTeleportCharges",
name = "Show Teleport Charges",
description = "Configures if teleport item count is shown",
position = 5
)
default boolean showTeleportCharges()
{
return true;
}
@ConfigItem(
keyName = "showImpCharges",
name = "Show Imp-in-a-box charges",
description = "Configures if imp-in-a-box item charges is shown",
position = 6
)
default boolean showImpCharges()
{
return true;
}
@ConfigItem(
keyName = "showFungicideCharges",
name = "Show Fungicide Charges",
description = "Configures if fungicide item charges is shown",
position = 7
)
default boolean showFungicideCharges()
{
return true;
}
@ConfigItem(
keyName = "showWateringCanCharges",
name = "Show Watering Can Charges",
description = "Configures if watering can item charge is shown",
position = 8
)
default boolean showWateringCanCharges()
{
return true;
}
@ConfigItem(
keyName = "showWaterskinCharges",
name = "Show Waterskin Charges",
description = "Configures if waterskin item charge is shown",
position = 9
)
default boolean showWaterskinCharges()
{
return true;
}
@ConfigItem(
keyName = "recoilNotification",
name = "Ring of Recoil Notification",
description = "Configures if the ring of recoil breaking notification is shown",
position = 10
)
default boolean recoilNotification()
{
return false;
}
}

View File

@@ -22,8 +22,9 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.jewellerycount;
package net.runelite.client.plugins.itemcharges;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Point;
@@ -37,6 +38,11 @@ import net.runelite.api.queries.EquipmentItemQuery;
import net.runelite.api.queries.InventoryWidgetItemQuery;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.FUNGICIDE_SPRAY;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.IMPBOX;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.TELEPORT;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERCAN;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERSKIN;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
@@ -44,13 +50,13 @@ import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.TextComponent;
import net.runelite.client.util.QueryRunner;
class JewelleryCountOverlay extends Overlay
class ItemChargeOverlay extends Overlay
{
private final QueryRunner queryRunner;
private final JewelleryCountConfig config;
private final ItemChargeConfig config;
@Inject
JewelleryCountOverlay(QueryRunner queryRunner, JewelleryCountConfig config)
ItemChargeOverlay(QueryRunner queryRunner, ItemChargeConfig config)
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_WIDGETS);
@@ -61,33 +67,44 @@ class JewelleryCountOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (!config.showJewelleryCount())
if (!config.showTeleportCharges() && !config.showFungicideCharges() && !config.showImpCharges()
&& !config.showWateringCanCharges() && !config.showWaterskinCharges())
{
return null;
}
graphics.setFont(FontManager.getRunescapeSmallFont());
for (WidgetItem item : getJewelleryWidgetItems())
for (WidgetItem item : getChargeWidgetItems())
{
JewelleryCharges charges = JewelleryCharges.getCharges(item.getId());
if (charges == null)
ItemWithCharge chargeItem = ItemWithCharge.findItem(item.getId());
if (chargeItem == null)
{
continue;
}
ItemChargeType type = chargeItem.getType();
if ((type == TELEPORT && !config.showTeleportCharges())
|| (type == FUNGICIDE_SPRAY && !config.showFungicideCharges())
|| (type == IMPBOX && !config.showImpCharges())
|| (type == WATERCAN && !config.showWateringCanCharges())
|| (type == WATERSKIN && !config.showWaterskinCharges()))
{
continue;
}
int charges = chargeItem.getCharges();
final Rectangle bounds = item.getCanvasBounds();
final TextComponent textComponent = new TextComponent();
textComponent.setPosition(new Point(bounds.x, bounds.y + 16));
textComponent.setText(String.valueOf(charges.getCharges()));
textComponent.setText(String.valueOf(charges));
textComponent.setColor(getColor(charges));
textComponent.render(graphics);
}
return null;
}
private Collection<WidgetItem> getJewelleryWidgetItems()
private Collection<WidgetItem> getChargeWidgetItems()
{
Query inventoryQuery = new InventoryWidgetItemQuery();
WidgetItem[] inventoryWidgetItems = queryRunner.runQuery(inventoryQuery);
@@ -105,4 +122,18 @@ class JewelleryCountOverlay extends Overlay
jewellery.addAll(Arrays.asList(equipmentWidgetItems));
return jewellery;
}
private Color getColor(int charges)
{
Color color = Color.WHITE;
if (charges <= config.veryLowWarning())
{
color = config.veryLowWarningColor();
}
else if (charges <= config.lowWarning())
{
color = config.lowWarningolor();
}
return color;
}
}

View File

@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.jewellerycount;
package net.runelite.client.plugins.itemcharges;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
@@ -30,25 +30,24 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.Overlay;
import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.PluginDescriptor;
@PluginDescriptor(
name = "Jewellery Count"
name = "Item Charges"
)
public class JewelleryCountPlugin extends Plugin
public class ItemChargePlugin extends Plugin
{
@Inject
private JewelleryCountOverlay overlay;
private ItemChargeOverlay overlay;
@Inject
private Notifier notifier;
@Inject
private JewelleryCountConfig config;
private ItemChargeConfig config;
@Override
public Overlay getOverlay()
@@ -57,9 +56,9 @@ public class JewelleryCountPlugin extends Plugin
}
@Provides
JewelleryCountConfig getConfig(ConfigManager configManager)
ItemChargeConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(JewelleryCountConfig.class);
return configManager.getConfig(ItemChargeConfig.class);
}
@Subscribe

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017, Seth <Sethtroll3@gmail.com>
* Copyright (c) 2017, Mitchell <https://github.com/Mitchell-Kovacs>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,24 +22,13 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.jewellerycount;
package net.runelite.client.plugins.itemcharges;
public enum JewelleryType
enum ItemChargeType
{
GLORY,
ROD,
GAMES,
ROW,
ROS,
SKILLS,
CBRACE,
DIGSITE,
BURNING,
PASSAGE,
RETURNING,
TCRYSTAL,
PHARAO,
WATERSKIN,
IMP_IN_A_BOX,
ELYRE
FUNGICIDE_SPRAY,
IMPBOX,
TELEPORT,
WATERCAN,
WATERSKIN
}

View File

@@ -0,0 +1,182 @@
/*
* Copyright (c) 2017, Seth <Sethtroll3@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.itemcharges;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Nullable;
import lombok.AllArgsConstructor;
import lombok.Getter;
import static net.runelite.api.ItemID.*;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.FUNGICIDE_SPRAY;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.IMPBOX;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.TELEPORT;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERCAN;
import static net.runelite.client.plugins.itemcharges.ItemChargeType.WATERSKIN;
@AllArgsConstructor
@Getter
enum ItemWithCharge
{
BURNING1(TELEPORT, BURNING_AMULET1, 1),
BURNING2(TELEPORT, BURNING_AMULET2, 2),
BURNING3(TELEPORT, BURNING_AMULET3, 3),
BURNING4(TELEPORT, BURNING_AMULET4, 4),
BURNING5(TELEPORT, BURNING_AMULET5, 5),
CBRACE1(TELEPORT, COMBAT_BRACELET1, 1),
CBRACE2(TELEPORT, COMBAT_BRACELET2, 2),
CBRACE3(TELEPORT, COMBAT_BRACELET3, 3),
CBRACE4(TELEPORT, COMBAT_BRACELET4, 4),
CBRACE5(TELEPORT, COMBAT_BRACELET5, 5),
CBRACE6(TELEPORT, COMBAT_BRACELET6, 6),
DIGSITE1(TELEPORT, DIGSITE_PENDANT_1, 1),
DIGSITE2(TELEPORT, DIGSITE_PENDANT_2, 2),
DIGSITE3(TELEPORT, DIGSITE_PENDANT_3, 3),
DIGSITE4(TELEPORT, DIGSITE_PENDANT_4, 4),
DIGSITE5(TELEPORT, DIGSITE_PENDANT_5, 5),
ELYRE1(TELEPORT, ENCHANTED_LYRE1, 1),
ELYRE2(TELEPORT, ENCHANTED_LYRE2, 2),
ELYRE3(TELEPORT, ENCHANTED_LYRE3, 3),
ELYRE4(TELEPORT, ENCHANTED_LYRE4, 4),
ELYRE5(TELEPORT, ENCHANTED_LYRE5, 5),
FUNGICIDE0(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_0, 0),
FUNGICIDE1(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_1, 1),
FUNGICIDE2(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_2, 2),
FUNGICIDE3(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_3, 3),
FUNGICIDE4(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_4, 4),
FUNGICIDE5(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_5, 5),
FUNGICIDE6(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_6, 6),
FUNGICIDE7(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_7, 7),
FUNGICIDE8(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_8, 8),
FUNGICIDE9(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_9, 9),
FUNGICIDE10(FUNGICIDE_SPRAY, FUNGICIDE_SPRAY_10, 10),
GAMES1(TELEPORT, GAMES_NECKLACE1, 1),
GAMES2(TELEPORT, GAMES_NECKLACE2, 2),
GAMES3(TELEPORT, GAMES_NECKLACE3, 3),
GAMES4(TELEPORT, GAMES_NECKLACE4, 4),
GAMES5(TELEPORT, GAMES_NECKLACE5, 5),
GAMES6(TELEPORT, GAMES_NECKLACE6, 6),
GAMES7(TELEPORT, GAMES_NECKLACE7, 7),
GAMES8(TELEPORT, GAMES_NECKLACE8, 8),
GLORY1(TELEPORT, AMULET_OF_GLORY1, 1),
GLORY2(TELEPORT, AMULET_OF_GLORY2, 2),
GLORY3(TELEPORT, AMULET_OF_GLORY3, 3),
GLORY4(TELEPORT, AMULET_OF_GLORY4, 4),
GLORY5(TELEPORT, AMULET_OF_GLORY5, 5),
GLORY6(TELEPORT, AMULET_OF_GLORY6, 6),
GLORYT1(TELEPORT, AMULET_OF_GLORY_T1, 1),
GLORYT2(TELEPORT, AMULET_OF_GLORY_T2, 2),
GLORYT3(TELEPORT, AMULET_OF_GLORY_T3, 3),
GLORYT4(TELEPORT, AMULET_OF_GLORY_T4, 4),
GLORYT5(TELEPORT, AMULET_OF_GLORY_T5, 5),
GLORYT6(TELEPORT, AMULET_OF_GLORY_T6, 6),
IMP_IN_A_BOX1(IMPBOX, IMPINABOX1, 1),
IMP_IN_A_BOX2(IMPBOX, IMPINABOX2, 2),
PASSAGE1(TELEPORT, NECKLACE_OF_PASSAGE1, 1),
PASSAGE2(TELEPORT, NECKLACE_OF_PASSAGE2, 2),
PASSAGE3(TELEPORT, NECKLACE_OF_PASSAGE3, 3),
PASSAGE4(TELEPORT, NECKLACE_OF_PASSAGE4, 4),
PASSAGE5(TELEPORT, NECKLACE_OF_PASSAGE5, 5),
PHARAO1(TELEPORT, PHARAOHS_SCEPTRE_1, 1),
PHARAO2(TELEPORT, PHARAOHS_SCEPTRE_2, 2),
PHARAO3(TELEPORT, PHARAOHS_SCEPTRE_3, 3),
PHARAO4(TELEPORT, PHARAOHS_SCEPTRE_4, 4),
PHARAO5(TELEPORT, PHARAOHS_SCEPTRE_5, 5),
PHARAO6(TELEPORT, PHARAOHS_SCEPTRE_6, 6),
PHARAO7(TELEPORT, PHARAOHS_SCEPTRE_7, 7),
PHARAO8(TELEPORT, PHARAOHS_SCEPTRE_8, 8),
RETURNING1(TELEPORT, RING_OF_RETURNING1, 1),
RETURNING2(TELEPORT, RING_OF_RETURNING2, 2),
RETURNING3(TELEPORT, RING_OF_RETURNING3, 3),
RETURNING4(TELEPORT, RING_OF_RETURNING4, 4),
RETURNING5(TELEPORT, RING_OF_RETURNING5, 5),
ROD1(TELEPORT, RING_OF_DUELING1, 1),
ROD2(TELEPORT, RING_OF_DUELING2, 2),
ROD3(TELEPORT, RING_OF_DUELING3, 3),
ROD4(TELEPORT, RING_OF_DUELING4, 4),
ROD5(TELEPORT, RING_OF_DUELING5, 5),
ROD6(TELEPORT, RING_OF_DUELING6, 6),
ROD7(TELEPORT, RING_OF_DUELING7, 7),
ROD8(TELEPORT, RING_OF_DUELING8, 8),
ROS1(TELEPORT, SLAYER_RING_1, 1),
ROS2(TELEPORT, SLAYER_RING_2, 2),
ROS3(TELEPORT, SLAYER_RING_3, 3),
ROS4(TELEPORT, SLAYER_RING_4, 4),
ROS5(TELEPORT, SLAYER_RING_5, 5),
ROS6(TELEPORT, SLAYER_RING_6, 6),
ROS7(TELEPORT, SLAYER_RING_7, 7),
ROS8(TELEPORT, SLAYER_RING_8, 8),
ROW1(TELEPORT, RING_OF_WEALTH_1, 1),
ROW2(TELEPORT, RING_OF_WEALTH_2, 2),
ROW3(TELEPORT, RING_OF_WEALTH_3, 3),
ROW4(TELEPORT, RING_OF_WEALTH_4, 4),
ROW5(TELEPORT, RING_OF_WEALTH_5, 5),
SKILLS1(TELEPORT, SKILLS_NECKLACE1, 1),
SKILLS2(TELEPORT, SKILLS_NECKLACE2, 2),
SKILLS3(TELEPORT, SKILLS_NECKLACE3, 3),
SKILLS4(TELEPORT, SKILLS_NECKLACE4, 4),
SKILLS5(TELEPORT, SKILLS_NECKLACE5, 5),
SKILLS6(TELEPORT, SKILLS_NECKLACE6, 6),
TCRYSTAL1(TELEPORT, TELEPORT_CRYSTAL_1, 1),
TCRYSTAL2(TELEPORT, TELEPORT_CRYSTAL_2, 2),
TCRYSTAL3(TELEPORT, TELEPORT_CRYSTAL_3, 3),
TCRYSTAL4(TELEPORT, TELEPORT_CRYSTAL_4, 4),
TCRYSTAL5(TELEPORT, TELEPORT_CRYSTAL_5, 5),
WCAN0(WATERCAN, WATERING_CAN, 0),
WCAN1(WATERCAN, WATERING_CAN1, 1),
WCAN2(WATERCAN, WATERING_CAN2, 2),
WCAN3(WATERCAN, WATERING_CAN3, 3),
WCAN4(WATERCAN, WATERING_CAN4, 4),
WCAN5(WATERCAN, WATERING_CAN5, 5),
WCAN6(WATERCAN, WATERING_CAN6, 6),
WCAN7(WATERCAN, WATERING_CAN7, 7),
WCAN8(WATERCAN, WATERING_CAN8, 8),
WSKIN0(WATERSKIN, WATERSKIN0, 0),
WSKIN1(WATERSKIN, WATERSKIN1, 1),
WSKIN2(WATERSKIN, WATERSKIN2, 2),
WSKIN3(WATERSKIN, WATERSKIN3, 3),
WSKIN4(WATERSKIN, WATERSKIN4, 4);
private final ItemChargeType type;
private final int id;
private final int charges;
private static final Map<Integer, ItemWithCharge> ID_MAP = new HashMap<>();
static
{
for (ItemWithCharge itemCharge : values())
{
ID_MAP.put(itemCharge.getId(), itemCharge);
}
}
@Nullable
static ItemWithCharge findItem(int itemId)
{
return ID_MAP.get(itemId);
}
}

View File

@@ -1,174 +0,0 @@
/*
* Copyright (c) 2017, Seth <Sethtroll3@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.jewellerycount;
import java.util.HashMap;
import java.util.Map;
import static net.runelite.api.ItemID.*;
import static net.runelite.client.plugins.jewellerycount.JewelleryType.*;
public enum JewelleryCharges
{
GLORY1(GLORY, AMULET_OF_GLORY1, 1),
GLORY2(GLORY, AMULET_OF_GLORY2, 2),
GLORY3(GLORY, AMULET_OF_GLORY3, 3),
GLORY4(GLORY, AMULET_OF_GLORY4, 4),
GLORY5(GLORY, AMULET_OF_GLORY5, 5),
GLORY6(GLORY, AMULET_OF_GLORY6, 6),
GLORYT1(GLORY, AMULET_OF_GLORY_T1, 1),
GLORYT2(GLORY, AMULET_OF_GLORY_T2, 2),
GLORYT3(GLORY, AMULET_OF_GLORY_T3, 3),
GLORYT4(GLORY, AMULET_OF_GLORY_T4, 4),
GLORYT5(GLORY, AMULET_OF_GLORY_T5, 5),
GLORYT6(GLORY, AMULET_OF_GLORY_T6, 6),
ROD1(ROD, RING_OF_DUELING1, 1),
ROD2(ROD, RING_OF_DUELING2, 2),
ROD3(ROD, RING_OF_DUELING3, 3),
ROD4(ROD, RING_OF_DUELING4, 4),
ROD5(ROD, RING_OF_DUELING5, 5),
ROD6(ROD, RING_OF_DUELING6, 6),
ROD7(ROD, RING_OF_DUELING7, 7),
ROD8(ROD, RING_OF_DUELING8, 8),
GAMES1(GAMES, GAMES_NECKLACE1, 1),
GAMES2(GAMES, GAMES_NECKLACE2, 2),
GAMES3(GAMES, GAMES_NECKLACE3, 3),
GAMES4(GAMES, GAMES_NECKLACE4, 4),
GAMES5(GAMES, GAMES_NECKLACE5, 5),
GAMES6(GAMES, GAMES_NECKLACE6, 6),
GAMES7(GAMES, GAMES_NECKLACE7, 7),
GAMES8(GAMES, GAMES_NECKLACE8, 8),
ROW1(ROW, RING_OF_WEALTH_1, 1),
ROW2(ROW, RING_OF_WEALTH_2, 2),
ROW3(ROW, RING_OF_WEALTH_3, 3),
ROW4(ROW, RING_OF_WEALTH_4, 4),
ROW5(ROW, RING_OF_WEALTH_5, 5),
ROS1(ROS, SLAYER_RING_1, 1),
ROS2(ROS, SLAYER_RING_2, 2),
ROS3(ROS, SLAYER_RING_3, 3),
ROS4(ROS, SLAYER_RING_4, 4),
ROS5(ROS, SLAYER_RING_5, 5),
ROS6(ROS, SLAYER_RING_6, 6),
ROS7(ROS, SLAYER_RING_7, 7),
ROS8(ROS, SLAYER_RING_8, 8),
SKILLS1(SKILLS, SKILLS_NECKLACE1, 1),
SKILLS2(SKILLS, SKILLS_NECKLACE2, 2),
SKILLS3(SKILLS, SKILLS_NECKLACE3, 3),
SKILLS4(SKILLS, SKILLS_NECKLACE4, 4),
SKILLS5(SKILLS, SKILLS_NECKLACE5, 5),
SKILLS6(SKILLS, SKILLS_NECKLACE6, 6),
CBRACE1(CBRACE, COMBAT_BRACELET1, 1),
CBRACE2(CBRACE, COMBAT_BRACELET2, 2),
CBRACE3(CBRACE, COMBAT_BRACELET3, 3),
CBRACE4(CBRACE, COMBAT_BRACELET4, 4),
CBRACE5(CBRACE, COMBAT_BRACELET5, 5),
CBRACE6(CBRACE, COMBAT_BRACELET6, 6),
DIGSITE1(DIGSITE, DIGSITE_PENDANT_1, 1),
DIGSITE2(DIGSITE, DIGSITE_PENDANT_2, 2),
DIGSITE3(DIGSITE, DIGSITE_PENDANT_3, 3),
DIGSITE4(DIGSITE, DIGSITE_PENDANT_4, 4),
DIGSITE5(DIGSITE, DIGSITE_PENDANT_5, 5),
PASSAGE5(PASSAGE, NECKLACE_OF_PASSAGE5, 5),
PASSAGE4(PASSAGE, NECKLACE_OF_PASSAGE4, 4),
PASSAGE3(PASSAGE, NECKLACE_OF_PASSAGE3, 3),
PASSAGE2(PASSAGE, NECKLACE_OF_PASSAGE2, 2),
PASSAGE1(PASSAGE, NECKLACE_OF_PASSAGE1, 1),
BURNING5(BURNING, BURNING_AMULET5, 5),
BURNING4(BURNING, BURNING_AMULET4, 4),
BURNING3(BURNING, BURNING_AMULET3, 3),
BURNING2(BURNING, BURNING_AMULET2, 2),
BURNING1(BURNING, BURNING_AMULET1, 1),
RETURNING5(RETURNING, RING_OF_RETURNING5, 5),
RETURNING4(RETURNING, RING_OF_RETURNING4, 4),
RETURNING3(RETURNING, RING_OF_RETURNING3, 3),
RETURNING2(RETURNING, RING_OF_RETURNING2, 2),
RETURNING1(RETURNING, RING_OF_RETURNING1, 1),
TCRYSTAL5(TCRYSTAL, TELEPORT_CRYSTAL_5, 5),
TCRYSTAL4(TCRYSTAL, TELEPORT_CRYSTAL_4, 4),
TCRYSTAL3(TCRYSTAL, TELEPORT_CRYSTAL_3, 3),
TCRYSTAL2(TCRYSTAL, TELEPORT_CRYSTAL_2, 2),
TCRYSTAL1(TCRYSTAL, TELEPORT_CRYSTAL_1, 1),
PHARAO8(PHARAO, PHARAOHS_SCEPTRE_8, 8),
PHARAO7(PHARAO, PHARAOHS_SCEPTRE_7, 7),
PHARAO6(PHARAO, PHARAOHS_SCEPTRE_6, 6),
PHARAO5(PHARAO, PHARAOHS_SCEPTRE_5, 5),
PHARAO4(PHARAO, PHARAOHS_SCEPTRE_4, 4),
PHARAO3(PHARAO, PHARAOHS_SCEPTRE_3, 3),
PHARAO2(PHARAO, PHARAOHS_SCEPTRE_2, 2),
PHARAO1(PHARAO, PHARAOHS_SCEPTRE_1, 1),
WSKIN4(WATERSKIN, WATERSKIN4, 4),
WSKIN3(WATERSKIN, WATERSKIN3, 3),
WSKIN2(WATERSKIN, WATERSKIN2, 2),
WSKIN1(WATERSKIN, WATERSKIN1, 1),
WSKIN0(WATERSKIN, WATERSKIN0, 0),
IMP_IN_A_BOX1(IMP_IN_A_BOX, IMPINABOX1, 1),
IMP_IN_A_BOX2(IMP_IN_A_BOX, IMPINABOX2, 2),
ELYRE1(ELYRE, ENCHANTED_LYRE1, 1),
ELYRE2(ELYRE, ENCHANTED_LYRE2, 2),
ELYRE3(ELYRE, ENCHANTED_LYRE3, 3),
ELYRE4(ELYRE, ENCHANTED_LYRE4, 4),
ELYRE5(ELYRE, ENCHANTED_LYRE5, 5);
private final JewelleryType type;
private final int id;
private final int charges;
private static final Map<Integer, JewelleryCharges> ITEM_ID = new HashMap<>();
static
{
for (JewelleryCharges s : values())
{
ITEM_ID.put(s.getId(), s);
}
}
JewelleryCharges(JewelleryType type, int ID, int charges)
{
this.type = type;
this.id = ID;
this.charges = charges;
}
public JewelleryType getType()
{
return type;
}
public int getId()
{
return id;
}
public int getCharges()
{
return charges;
}
public static JewelleryCharges getCharges(int id)
{
return ITEM_ID.get(id);
}
}

View File

@@ -1,59 +0,0 @@
/*
* Copyright (c) 2017, Devin French <https://github.com/devinfrench>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.jewellerycount;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup(
keyName = "jewelleryCount",
name = "Jewellery Count",
description = "Configuration for the Jewellery count plugin"
)
public interface JewelleryCountConfig extends Config
{
@ConfigItem(
keyName = "showJewelleryCount",
name = "Show Jewellery Count Configuration",
description = "Configures if jewellery count is shown",
position = 1
)
default boolean showJewelleryCount()
{
return true;
}
@ConfigItem(
keyName = "recoilNotification",
name = "Ring of Recoil Notification",
description = "Configures if the ring of recoil breaking notification is shown",
position = 2
)
default boolean recoilNotification()
{
return false;
}
}

View File

@@ -1,86 +0,0 @@
/*
* Copyright (c) 2018, Unmoon <https://github.com/Unmoon>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.tithefarm;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import javax.inject.Inject;
import net.runelite.api.Query;
import net.runelite.api.queries.InventoryWidgetItemQuery;
import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.TextComponent;
import net.runelite.client.util.QueryRunner;
class TitheFarmInventoryOverlay extends Overlay
{
private final QueryRunner queryRunner;
private final TitheFarmPluginConfig config;
private final TextComponent textComponent = new TextComponent();
@Inject
TitheFarmInventoryOverlay(QueryRunner queryRunner, TitheFarmPluginConfig config)
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_WIDGETS);
this.queryRunner = queryRunner;
this.config = config;
}
@Override
public Dimension render(Graphics2D graphics)
{
if (!config.showWateringCanOverlay())
{
return null;
}
graphics.setFont(FontManager.getRunescapeSmallFont());
Query inventoryQuery = new InventoryWidgetItemQuery();
WidgetItem[] inventoryItems = queryRunner.runQuery(inventoryQuery);
for (WidgetItem item : inventoryItems)
{
WateringCan wateringCan = WateringCan.getWateringCan(item.getId());
if (wateringCan == null)
{
continue;
}
final Rectangle bounds = item.getCanvasBounds();
textComponent.setPosition(new Point(bounds.x, bounds.y + 16));
textComponent.setColor(wateringCan.getColor());
textComponent.setText(String.valueOf(wateringCan.getCharges()));
textComponent.render(graphics);
}
return null;
}
}

View File

@@ -55,9 +55,6 @@ public class TitheFarmPlugin extends Plugin
@Inject
private TitheFarmSackOverlay titheFarmSackOverlay;
@Inject
private TitheFarmInventoryOverlay titheFarmInventoryOverlay;
@Getter
private final Set<TitheFarmPlant> plants = new HashSet<>();
@@ -70,7 +67,7 @@ public class TitheFarmPlugin extends Plugin
@Override
public Collection<Overlay> getOverlays()
{
return Arrays.asList(titheFarmOverlay, titheFarmSackOverlay, titheFarmInventoryOverlay);
return Arrays.asList(titheFarmOverlay, titheFarmSackOverlay);
}
@Override

View File

@@ -38,17 +38,6 @@ public interface TitheFarmPluginConfig extends Config
{
@ConfigItem(
position = 0,
keyName = "showWateringCanOverlay",
name = "Show watering can doses",
description = "Configures whether or not the watering can doses are displayed"
)
default boolean showWateringCanOverlay()
{
return true;
}
@ConfigItem(
position = 1,
keyName = "showSack",
name = "Show fruit sack",
description = "Configures whether or not the fruit sack is displayed"
@@ -59,7 +48,7 @@ public interface TitheFarmPluginConfig extends Config
}
@ConfigItem(
position = 2,
position = 1,
keyName = "hexColorUnwatered",
name = "Unwatered plant",
description = "Color of unwatered plant timer"
@@ -70,7 +59,7 @@ public interface TitheFarmPluginConfig extends Config
}
@ConfigItem(
position = 3,
position = 2,
keyName = "hexColorWatered",
name = "Watered plant",
description = "Color of watered plant timer"
@@ -81,7 +70,7 @@ public interface TitheFarmPluginConfig extends Config
}
@ConfigItem(
position = 4,
position = 3,
keyName = "hexColorGrown",
name = "Grown plant",
description = "Color of grown plant timer"

View File

@@ -1,73 +0,0 @@
/*
* Copyright (c) 2018, Unmoon <https://github.com/Unmoon>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.tithefarm;
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import lombok.Getter;
import net.runelite.api.ItemID;
enum WateringCan
{
WATERING_CAN0(ItemID.WATERING_CAN, 0, Color.RED),
WATERING_CAN1(ItemID.WATERING_CAN1, 1, Color.ORANGE),
WATERING_CAN2(ItemID.WATERING_CAN2, 2, Color.YELLOW),
WATERING_CAN3(ItemID.WATERING_CAN3, 3, Color.WHITE),
WATERING_CAN4(ItemID.WATERING_CAN4, 4, Color.WHITE),
WATERING_CAN5(ItemID.WATERING_CAN5, 5, Color.WHITE),
WATERING_CAN6(ItemID.WATERING_CAN6, 6, Color.WHITE),
WATERING_CAN7(ItemID.WATERING_CAN7, 7, Color.WHITE),
WATERING_CAN8(ItemID.WATERING_CAN8, 8, Color.WHITE);
@Getter
private final int id;
@Getter
private final int charges;
@Getter
private final Color color;
private static final Map<Integer, WateringCan> wateringCans = new HashMap<>();
static
{
for (WateringCan can : values())
{
wateringCans.put(can.getId(), can);
}
}
WateringCan(int id, int charges, Color color)
{
this.id = id;
this.charges = charges;
this.color = color;
}
public static WateringCan getWateringCan(int itemId)
{
return wateringCans.get(itemId);
}
}