diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java new file mode 100644 index 0000000000..8d33d384b8 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeConfig.java @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2017, Devin French + * 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; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java similarity index 65% rename from runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java rename to runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java index e0818303e3..f1f3568c16 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeOverlay.java @@ -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 getJewelleryWidgetItems() + private Collection 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; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java similarity index 86% rename from runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountPlugin.java rename to runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java index 5827090926..251b5b1f17 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java @@ -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 diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryType.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java similarity index 82% rename from runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryType.java rename to runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java index 8e05da9d15..224044b62d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargeType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017, Seth + * Copyright (c) 2017, Mitchell * 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 } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java new file mode 100644 index 0000000000..96b54f37e8 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemWithCharge.java @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2017, Seth + * 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 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); + } + +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCharges.java b/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCharges.java deleted file mode 100644 index 402d50e14a..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCharges.java +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Copyright (c) 2017, Seth - * 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 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); - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountConfig.java deleted file mode 100644 index bb9b4186ab..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/jewellerycount/JewelleryCountConfig.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2017, Devin French - * 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; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmInventoryOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmInventoryOverlay.java deleted file mode 100644 index 2b3178d9d1..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmInventoryOverlay.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (c) 2018, 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; - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java index ef793c04fa..9dfa4cc990 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java @@ -55,9 +55,6 @@ public class TitheFarmPlugin extends Plugin @Inject private TitheFarmSackOverlay titheFarmSackOverlay; - @Inject - private TitheFarmInventoryOverlay titheFarmInventoryOverlay; - @Getter private final Set plants = new HashSet<>(); @@ -70,7 +67,7 @@ public class TitheFarmPlugin extends Plugin @Override public Collection getOverlays() { - return Arrays.asList(titheFarmOverlay, titheFarmSackOverlay, titheFarmInventoryOverlay); + return Arrays.asList(titheFarmOverlay, titheFarmSackOverlay); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPluginConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPluginConfig.java index 84ce84af0c..de41ca4f36 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPluginConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPluginConfig.java @@ -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" diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/WateringCan.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/WateringCan.java deleted file mode 100644 index aa18b546e9..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/WateringCan.java +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright (c) 2018, 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 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); - } -}