diff --git a/runelite-client/src/main/java/net/runelite/client/game/FishingSpot.java b/runelite-client/src/main/java/net/runelite/client/game/FishingSpot.java index 0000624d2d..0a6437efb9 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/FishingSpot.java +++ b/runelite-client/src/main/java/net/runelite/client/game/FishingSpot.java @@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableMap; import java.util.Map; import lombok.Getter; import net.runelite.api.ItemID; +import static net.runelite.api.NpcID.FISHING_SPOT; import static net.runelite.api.NpcID.FISHING_SPOT_1497; import static net.runelite.api.NpcID.FISHING_SPOT_1498; import static net.runelite.api.NpcID.FISHING_SPOT_1499; @@ -54,15 +55,21 @@ import static net.runelite.api.NpcID.FISHING_SPOT_2654; import static net.runelite.api.NpcID.FISHING_SPOT_2655; import static net.runelite.api.NpcID.FISHING_SPOT_3317; import static net.runelite.api.NpcID.FISHING_SPOT_3419; +import static net.runelite.api.NpcID.FISHING_SPOT_3657; import static net.runelite.api.NpcID.FISHING_SPOT_3913; import static net.runelite.api.NpcID.FISHING_SPOT_3914; import static net.runelite.api.NpcID.FISHING_SPOT_3915; +import static net.runelite.api.NpcID.FISHING_SPOT_4079; +import static net.runelite.api.NpcID.FISHING_SPOT_4080; +import static net.runelite.api.NpcID.FISHING_SPOT_4081; +import static net.runelite.api.NpcID.FISHING_SPOT_4082; import static net.runelite.api.NpcID.FISHING_SPOT_4316; import static net.runelite.api.NpcID.FISHING_SPOT_4476; import static net.runelite.api.NpcID.FISHING_SPOT_4477; import static net.runelite.api.NpcID.FISHING_SPOT_4710; import static net.runelite.api.NpcID.FISHING_SPOT_4712; import static net.runelite.api.NpcID.FISHING_SPOT_4713; +import static net.runelite.api.NpcID.FISHING_SPOT_4714; import static net.runelite.api.NpcID.FISHING_SPOT_5233; import static net.runelite.api.NpcID.FISHING_SPOT_5234; import static net.runelite.api.NpcID.FISHING_SPOT_5820; @@ -119,7 +126,7 @@ import static net.runelite.api.NpcID.FISHING_SPOT_6784; @Getter public enum FishingSpot { - SHRIMP("Shrimp, Anchovies", ItemID.RAW_SHRIMPS, + SHRIMP("Shrimp, Anchovies", "Anchovies", ItemID.RAW_SHRIMPS, FISHING_SPOT_1514, FISHING_SPOT_1517, FISHING_SPOT_1518, FISHING_SPOT_1521, FISHING_SPOT_1523, FISHING_SPOT_1524, FISHING_SPOT_1525, FISHING_SPOT_1528, FISHING_SPOT_1530, @@ -127,13 +134,13 @@ public enum FishingSpot FISHING_SPOT_7459, FISHING_SPOT_7462, FISHING_SPOT_7467, FISHING_SPOT_7469, FISHING_SPOT_7947 ), - LOBSTER("Lobster, Swordfish, Tuna", ItemID.RAW_LOBSTER, + LOBSTER("Lobster, Swordfish, Tuna", "Lobster", ItemID.RAW_LOBSTER, FISHING_SPOT_1510, FISHING_SPOT_1519, FISHING_SPOT_1522, FISHING_SPOT_3914, FISHING_SPOT_5820, FISHING_SPOT_7199, FISHING_SPOT_7460, FISHING_SPOT_7465, FISHING_SPOT_7470, FISHING_SPOT_7946, FISHING_SPOT_9173, FISHING_SPOT_9174 ), - SHARK("Shark, Bass", ItemID.RAW_SHARK, + SHARK("Shark, Bass", "Shark", ItemID.RAW_SHARK, FISHING_SPOT_1511, FISHING_SPOT_1520, FISHING_SPOT_3419, FISHING_SPOT_3915, FISHING_SPOT_4476, FISHING_SPOT_4477, FISHING_SPOT_5233, FISHING_SPOT_5234, FISHING_SPOT_5821, @@ -144,7 +151,7 @@ public enum FishingSpot MONKFISH("Monkfish", ItemID.RAW_MONKFISH, FISHING_SPOT_4316 ), - SALMON("Salmon, Trout", ItemID.RAW_SALMON, + SALMON("Salmon, Trout", "Salmon", ItemID.RAW_SALMON, ROD_FISHING_SPOT, ROD_FISHING_SPOT_1506, ROD_FISHING_SPOT_1507, ROD_FISHING_SPOT_1508, ROD_FISHING_SPOT_1509, ROD_FISHING_SPOT_1513, ROD_FISHING_SPOT_1515, ROD_FISHING_SPOT_1516, ROD_FISHING_SPOT_1526, @@ -164,10 +171,10 @@ public enum FishingSpot MINNOW("Minnow", ItemID.MINNOW, FISHING_SPOT_7730, FISHING_SPOT_7731, FISHING_SPOT_7732, FISHING_SPOT_7733 ), - INFERNAL_EEL("Infernal Eel", ItemID.INFERNAL_EEL, + INFERNAL_EEL("Infernal Eel", "Leaping sturgeon", ItemID.INFERNAL_EEL, ROD_FISHING_SPOT_7676 ), - KARAMBWAN("Karambwan", ItemID.RAW_KARAMBWAN, + KARAMBWAN("Karambwan", "Karambwanji", ItemID.RAW_KARAMBWAN, FISHING_SPOT_4712, FISHING_SPOT_4713 ), KARAMBWANJI("Karambwanji, Shrimp", ItemID.KARAMBWANJI, @@ -185,12 +192,30 @@ public enum FishingSpot DARK_CRAB("Dark Crab", ItemID.RAW_DARK_CRAB, FISHING_SPOT_1535, FISHING_SPOT_1536 ), - COMMON_TENCH("Common tench, Bluegill, Greater siren, Mottled eel", ItemID.COMMON_TENCH, - FISHING_SPOT_8523); + COMMON_TENCH("Common tench, Bluegill, Greater siren, Mottled eel", "Greater siren", ItemID.COMMON_TENCH, + FISHING_SPOT_8523 + ), + TUTORIAL_SHRIMP("Shrimp", ItemID.RAW_SHRIMPS, + FISHING_SPOT_3317 + ), + ETCETERIA_LOBSTER("Lobster", "Lobster (Approval only)", ItemID.RAW_LOBSTER, + FISHING_SPOT_3657 + ), + QUEST_RUM_DEAL("Sluglings", "Rum deal (Quest)", ItemID.SLUGLINGS, + FISHING_SPOT + ), + QUEST_TAI_BWO_WANNAI_TRIO("Karambwan", "Tai Bwo Wannai Trio (Quest)", ItemID.RAW_KARAMBWAN, + FISHING_SPOT_4714 + ), + QUEST_FISHING_CONTEST("Giant carp", "Fishing Contest (Quest)", ItemID.GIANT_CARP, + FISHING_SPOT_4079, FISHING_SPOT_4080, FISHING_SPOT_4081, FISHING_SPOT_4082 + ), + ; private static final Map SPOTS; private final String name; + private final String worldMapTooltip; private final int fishSpriteId; private final int[] ids; @@ -210,8 +235,14 @@ public enum FishingSpot } FishingSpot(String spot, int fishSpriteId, int... ids) + { + this(spot, spot, fishSpriteId, ids); + } + + FishingSpot(String spot, String worldMapTooltip, int fishSpriteId, int... ids) { this.name = spot; + this.worldMapTooltip = worldMapTooltip; this.fishSpriteId = fishSpriteId; this.ids = ids; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotLocation.java new file mode 100644 index 0000000000..f789d7e7c3 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotLocation.java @@ -0,0 +1,189 @@ +/* + * Copyright (c) 2020, melky + * 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 HOLDER 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.worldmap; + +import java.util.Arrays; +import java.util.stream.Collectors; +import lombok.Getter; +import net.runelite.api.coords.WorldPoint; +import net.runelite.client.game.FishingSpot; + +@Getter +enum FishingSpotLocation +{ + AL_KHARID(FishingSpot.SHRIMP, + new WorldPoint(3274, 3140, 0), new WorldPoint(3266, 3148, 0)), + APE_ATOLL_SOUTH_WEST(FishingSpot.SHARK, new WorldPoint(2698, 2703, 0)), + BARBARIAN_OUTPOST(FishingSpot.SHRIMP, + new WorldPoint(2497, 3548, 0), new WorldPoint(2509, 3562, 0), + new WorldPoint(2514, 3575, 0)), + BARBARIAN_VILLAGE(FishingSpot.SALMON, + new WorldPoint(3103, 3424, 0), new WorldPoint(3109, 3433, 0)), + BRAINDEATH_ISLAND(FishingSpot.QUEST_RUM_DEAL, + new WorldPoint(2112, 5074, 0), new WorldPoint(2161, 5061, 0), + new WorldPoint(2172, 5074, 0)), + BRIMHAVEN_QUEST(FishingSpot.QUEST_TAI_BWO_WANNAI_TRIO, new WorldPoint(2767, 3165, 0)), + BURGH_DE_ROTT_SOUTH(FishingSpot.SHARK, + new WorldPoint(3472, 3192, 0), new WorldPoint(3486, 3182, 0), + new WorldPoint(3497, 3174, 0), new WorldPoint(3513, 3177, 0), + new WorldPoint(3528, 3164, 0), new WorldPoint(3537, 3177, 0), + new WorldPoint(3545, 3179, 0), new WorldPoint(3553, 3177, 0), + new WorldPoint(3559, 3173, 0), new WorldPoint(3564, 3174, 0)), + CATHERBY(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER, FishingSpot.SHRIMP}, + new WorldPoint(2836, 3431, 0), new WorldPoint(2844, 3429, 0), + new WorldPoint(2853, 3423, 0), new WorldPoint(2859, 3426, 0)), + DRAYNOR_VILLAGE(FishingSpot.SHRIMP, new WorldPoint(3084, 3228, 0)), + ENTRANA_CENTER(FishingSpot.SALMON, + new WorldPoint(2841, 3356, 0), new WorldPoint(2842, 3359, 0), + new WorldPoint(2847, 3361, 0)), + ENTRANA_DOCK(FishingSpot.SHRIMP, + new WorldPoint(2875, 3331, 0), new WorldPoint(2878, 3334, 0), + new WorldPoint(2878, 3339, 0), new WorldPoint(2875, 3342, 0)), + ETCETERIA_DOCK(FishingSpot.ETCETERIA_LOBSTER, new WorldPoint(2577, 3854, 0)), + FAIRY_RING_CKR(FishingSpot.KARAMBWANJI, new WorldPoint(2806, 3014, 0)), + FAIRY_RING_DKP(FishingSpot.KARAMBWAN, + new WorldPoint(2898, 3119, 0), new WorldPoint(2911, 3119, 0)), + FARMING_GUILD_SOUTH_EAST(FishingSpot.SALMON, new WorldPoint(1269, 3707, 0)), + FARMING_GUILD_SOUTH_WEST1(FishingSpot.SHARK, new WorldPoint(1209, 3687, 0)), + FARMING_GUILD_SOUTH_WEST2(FishingSpot.SHARK, new WorldPoint(1221, 3714, 0)), + FARMING_GUILD_WEST(FishingSpot.SHARK, + new WorldPoint(1199, 3736, 0), new WorldPoint(1208, 3749, 0)), + FELDIP_HILLS_SOUTH(FishingSpot.SHRIMP, new WorldPoint(2511, 2838, 0)), + FISHING_CONTEST(FishingSpot.QUEST_FISHING_CONTEST, + new WorldPoint(2626, 3415, 0), new WorldPoint(2631, 3425, 0), + new WorldPoint(2629, 3435, 0), new WorldPoint(2636, 3444, 0)), + FISHING_GUILD(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(2604, 3423, 0), new WorldPoint(2605, 3417, 0), + new WorldPoint(2611, 3413, 0)), + FISHING_GUILD_PLATFORM(FishingSpot.MINNOW, + new WorldPoint(2609, 3444, 0), new WorldPoint(2617, 3444, 0)), + FISHING_PLATFORM(FishingSpot.SHRIMP, + new WorldPoint(2788, 3273, 0), new WorldPoint(2794, 3279, 0), + new WorldPoint(2793, 3283, 0)), + HOSIDIUS_CENTER(FishingSpot.SALMON, new WorldPoint(1715, 3612, 0)), + HOSIDIUS_EAST(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER, FishingSpot.SHRIMP}, + new WorldPoint(1817, 3603, 0), new WorldPoint(1827, 3605, 0), + new WorldPoint(1828, 3614, 0), new WorldPoint(1840, 3619, 0), + new WorldPoint(1838, 3595, 0)), + INFIRMARY_SOUTH(FishingSpot.SALMON, new WorldPoint(1584, 3566, 0)), + IORWERTH_CAMP_INSIDE(FishingSpot.SALMON, new WorldPoint(3239, 5997, 0)), + IORWERTH_CAMP_NORTH_INSIDE(FishingSpot.SHARK, new WorldPoint(3185, 6027, 0)), + IORWERTH_CAMP_NORTH_OUTSIDE(FishingSpot.SHARK, new WorldPoint(2161, 3275, 0)), + IORWERTH_CAMP_OUTSIDE(FishingSpot.SALMON, new WorldPoint(2215, 3245, 0)), + ISAFDAR_NORTH_EAST_INSIDE(FishingSpot.SALMON, new WorldPoint(3293, 6005, 0)), + ISAFDAR_NORTH_EAST_OUTSIDE(FishingSpot.SALMON, new WorldPoint(2269, 3253, 0)), + JATISZO(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(2400, 3780, 0), new WorldPoint(2412, 3780, 0), + new WorldPoint(2419, 3789, 0)), + KINGSTOWN_EAST(FishingSpot.SALMON, new WorldPoint(1723, 3685, 0)), + LANDS_END_EAST(FishingSpot.SHRIMP, new WorldPoint(1534, 3414, 0)), + LANDS_END_WEST(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER, FishingSpot.SHRIMP}, + new WorldPoint(1484, 3432, 0)), + LUMBRIDGE_RIVER(FishingSpot.SALMON, + new WorldPoint(3238, 3241, 0), new WorldPoint(3237, 3253, 0)), + LUMBRIDGE_SWAMP_CAVE_EAST(FishingSpot.CAVE_EEL, new WorldPoint(3244, 9570, 0)), + LUMBRIDGE_SWAMP_CAVE_WEST(FishingSpot.CAVE_EEL, new WorldPoint(3153, 9544, 0)), + LUMBRIDGE_SWAMP_SOUTH_EAST(FishingSpot.SHRIMP, new WorldPoint(3244, 3153, 0)), + MARIM(FishingSpot.SHARK, new WorldPoint(2774, 2740, 0)), + MOLCH_ISLAND(FishingSpot.COMMON_TENCH, new WorldPoint(1370, 3632, 0)), + MORTTON(FishingSpot.SLIMY_EEL, new WorldPoint(3439, 3273, 0)), + MORT_MYRE_SWAMP_NORTH(FishingSpot.SLIMY_EEL, + new WorldPoint(3480, 3433, 0), new WorldPoint(3485, 3448, 0)), + MORT_MYRE_SWAMP_WEST(FishingSpot.SLIMY_EEL, + new WorldPoint(3425, 3409, 0), new WorldPoint(3432, 3415, 0)), + MOR_UI_REK(FishingSpot.INFERNAL_EEL, + new WorldPoint(2443, 5104, 0), new WorldPoint(2476, 5077, 0), + new WorldPoint(2537, 5086, 0)), + MOUNT_QUIDAMORTEM(FishingSpot.BARB_FISH, + new WorldPoint(1271, 3546, 0), new WorldPoint(1265, 3541, 0), + new WorldPoint(1253, 3542, 0)), + MUDSKIPPER_POINT(FishingSpot.SHRIMP, + new WorldPoint(2995, 3158, 0), new WorldPoint(2985, 3176, 0)), + MUSA_POINT(new FishingSpot[]{FishingSpot.LOBSTER, FishingSpot.SHRIMP}, new WorldPoint(2925, 3179, 0)), + MYTHS_GUILD_NORTH(FishingSpot.LOBSTER, new WorldPoint(2456, 2893, 0)), + OBSERVATORY_EAST(FishingSpot.SALMON, new WorldPoint(2466, 3151, 0)), + OTTOS_GROTTO(FishingSpot.BARB_FISH, + new WorldPoint(2500, 3509, 0), new WorldPoint(2504, 3495, 0), + new WorldPoint(2505, 3515, 0), new WorldPoint(2520, 3518, 0)), + PISCATORIS(FishingSpot.MONKFISH, new WorldPoint(2308, 3700, 0)), + PORT_PISCARILIUS_EAST(FishingSpot.ANGLERFISH, new WorldPoint(1831, 3773, 0)), + PORT_PISCARILIUS_WEST(new FishingSpot[]{FishingSpot.LOBSTER, FishingSpot.SHRIMP}, + new WorldPoint(1762, 3796, 0), new WorldPoint(1745, 3802, 0)), + PRIFFDINAS_INSIDE_EAST(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(3186, 6102, 0), new WorldPoint(3187, 6123, 0)), + PRIFFDINAS_INSIDE_NORTH(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(3250, 6182, 0), new WorldPoint(3258, 6180, 0), + new WorldPoint(3258, 6197, 0)), + PRIFFDINAS_OUTSIDE_EAST(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(2162, 3350, 0), new WorldPoint(2163, 3371, 0)), + PRIFFDINAS_OUTSIDE_NORTH(new FishingSpot[]{FishingSpot.SHARK, FishingSpot.LOBSTER}, + new WorldPoint(2226, 3430, 0), new WorldPoint(2234, 3428, 0), + new WorldPoint(2234, 3445, 0)), + RELLEKKA_CENTER(FishingSpot.LOBSTER, new WorldPoint(2641, 3696, 0)), + RELLEKKA_NORTH_EAST(FishingSpot.SHARK, new WorldPoint(2649, 3708, 0)), + RELLEKKA_WEST(FishingSpot.SHRIMP, new WorldPoint(2632, 3694, 0)), + RIVER_ARDOUGNE(FishingSpot.SALMON, + new WorldPoint(2560, 3374, 0), new WorldPoint(2565, 3370, 0), + new WorldPoint(2526, 3412, 0), new WorldPoint(2536, 3405, 0), + new WorldPoint(2507, 3420, 0)), + SAND_CRAB_PENINSULA_NORTH(FishingSpot.SHARK, new WorldPoint(1675, 3490, 0)), + SAND_CRAB_PENINSULA_SOUTH(FishingSpot.SHRIMP, new WorldPoint(1676, 3469, 0)), + SAND_CRAB_PENINSULA_WEST(FishingSpot.LOBSTER, new WorldPoint(1668, 3479, 0)), + SEERS_VILLAGE(FishingSpot.SALMON, + new WorldPoint(2725, 3524, 0), new WorldPoint(2714, 3531, 0)), + SHILO_VILLAGE(FishingSpot.SALMON, + new WorldPoint(2854, 2977, 0), new WorldPoint(2858, 2973, 0)), + TAVERLEY_DUNGEON(FishingSpot.LAVA_EEL, + new WorldPoint(2893, 9764, 0), new WorldPoint(2889, 9766, 0), + new WorldPoint(2883, 9765, 0)), + TREE_GNOME_STRONGHOLD(FishingSpot.SALMON, + new WorldPoint(2389, 3422, 0), new WorldPoint(2382, 3415, 0)), + TUTORIAL_ISLAND(FishingSpot.TUTORIAL_SHRIMP, new WorldPoint(3100, 3091, 0)), + WATSON_HOUSE_SOUTH(FishingSpot.SALMON, new WorldPoint(1646, 3558, 0)), + WILDERNESS_BANDIT_CAMP(FishingSpot.SHRIMP, new WorldPoint(3049, 3704, 0)), + WILDERNESS_DARK_CRABS(FishingSpot.DARK_CRAB, + new WorldPoint(3362, 3802, 0), new WorldPoint(3347, 3813, 0)), + WILDERNESS_LAVA_MAZE(FishingSpot.LAVA_EEL, new WorldPoint(3071, 3840, 0)), + WILDERNESS_RESOURCE_AREA(FishingSpot.DARK_CRAB, new WorldPoint(3186, 3925, 0)), + ZUL_ANDRA(FishingSpot.SACRED_EEL, + new WorldPoint(2183, 3068, 0), new WorldPoint(2195, 3067, 0)), + ; + + private final WorldPoint[] locations; + private final String tooltip; + + FishingSpotLocation(FishingSpot fishingSpot, WorldPoint... locations) + { + this.tooltip = fishingSpot.getWorldMapTooltip(); + this.locations = locations; + } + + FishingSpotLocation(FishingSpot[] fishingSpot, WorldPoint... locations) + { + this.tooltip = Arrays.stream(fishingSpot).map(FishingSpot::getWorldMapTooltip).collect(Collectors.joining(" / ")); + this.locations = locations; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotPoint.java new file mode 100644 index 0000000000..fa32c86ffe --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/FishingSpotPoint.java @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020, melky + * 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 HOLDER 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.worldmap; + +import java.awt.image.BufferedImage; +import net.runelite.api.coords.WorldPoint; +import net.runelite.client.ui.overlay.worldmap.WorldMapPoint; + +class FishingSpotPoint extends WorldMapPoint +{ + FishingSpotPoint(WorldPoint point, String tooltip, BufferedImage icon) + { + super(point, icon); + setTooltip(tooltip); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java index 25a1065b56..704a451415 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapConfig.java @@ -262,4 +262,15 @@ public interface WorldMapConfig extends Config { return true; } + + @ConfigItem( + keyName = WorldMapPlugin.CONFIG_KEY_FISHING_SPOT_TOOLTIPS, + name = "Show fishing spot tooltips", + description = "Indicates the type of fish fishable at the fishing spot", + position = 22 + ) + default boolean fishingSpotTooltips() + { + return true; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java index 1eaaf89619..25c7a09ff7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java @@ -84,6 +84,7 @@ public class WorldMapPlugin extends Plugin static final String CONFIG_KEY_MINING_SITE_TOOLTIPS = "miningSiteTooltips"; static final String CONFIG_KEY_DUNGEON_TOOLTIPS = "dungeonTooltips"; static final String CONFIG_KEY_HUNTER_AREA_TOOLTIPS = "hunterAreaTooltips"; + static final String CONFIG_KEY_FISHING_SPOT_TOOLTIPS = "fishingSpotTooltips"; static { @@ -162,6 +163,7 @@ public class WorldMapPlugin extends Plugin worldMapPointManager.removeIf(RareTreePoint.class::isInstance); worldMapPointManager.removeIf(RunecraftingAltarPoint.class::isInstance); worldMapPointManager.removeIf(DungeonPoint.class::isInstance); + worldMapPointManager.removeIf(FishingSpotPoint.class::isInstance); agilityLevel = 0; woodcuttingLevel = 0; } @@ -347,6 +349,16 @@ public class WorldMapPlugin extends Plugin .map(value -> new HunterAreaPoint(value, BLANK_ICON)) .forEach(worldMapPointManager::add); } + + worldMapPointManager.removeIf(FishingSpotPoint.class::isInstance); + if (config.fishingSpotTooltips()) + { + Arrays.stream(FishingSpotLocation.values()).forEach(location -> + Arrays.stream(location.getLocations()) + .map(point -> new FishingSpotPoint(point, location.getTooltip(), BLANK_ICON)) + .forEach(worldMapPointManager::add) + ); + } } private void updateQuestStartPointIcons()