diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java index b17ec814f2..e65012e1f0 100644 --- a/runelite-api/src/main/java/net/runelite/api/Varbits.java +++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java @@ -314,6 +314,9 @@ public enum Varbits PERSONAL_POINTS(5422), RAID_PARTY_SIZE(5424), + // 0 = raid not started, >0 = raid started + RAID_STATE(5425), + /** * Making Friends with My Arm fire pits * diff --git a/runelite-client/runelite-client.gradle.kts b/runelite-client/runelite-client.gradle.kts index 0c67d831d6..7068bf0595 100644 --- a/runelite-client/runelite-client.gradle.kts +++ b/runelite-client/runelite-client.gradle.kts @@ -91,6 +91,7 @@ dependencies { testImplementation(group = "org.mockito", name = "mockito-inline", version = "3.3.3") testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.6.0") testImplementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") + testImplementation(group = "com.openosrs.rxrelay3", name = "rxrelay", version = "3.0.1-SNAPSHOT") } fun formatDate(date: Date?) = with(date ?: Date()) { 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 new file mode 100644 index 0000000000..0a6437efb9 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/game/FishingSpot.java @@ -0,0 +1,254 @@ +/* + * 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.game; + +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; +import static net.runelite.api.NpcID.FISHING_SPOT_1510; +import static net.runelite.api.NpcID.FISHING_SPOT_1511; +import static net.runelite.api.NpcID.FISHING_SPOT_1514; +import static net.runelite.api.NpcID.FISHING_SPOT_1517; +import static net.runelite.api.NpcID.FISHING_SPOT_1518; +import static net.runelite.api.NpcID.FISHING_SPOT_1519; +import static net.runelite.api.NpcID.FISHING_SPOT_1520; +import static net.runelite.api.NpcID.FISHING_SPOT_1521; +import static net.runelite.api.NpcID.FISHING_SPOT_1522; +import static net.runelite.api.NpcID.FISHING_SPOT_1523; +import static net.runelite.api.NpcID.FISHING_SPOT_1524; +import static net.runelite.api.NpcID.FISHING_SPOT_1525; +import static net.runelite.api.NpcID.FISHING_SPOT_1528; +import static net.runelite.api.NpcID.FISHING_SPOT_1530; +import static net.runelite.api.NpcID.FISHING_SPOT_1535; +import static net.runelite.api.NpcID.FISHING_SPOT_1536; +import static net.runelite.api.NpcID.FISHING_SPOT_1542; +import static net.runelite.api.NpcID.FISHING_SPOT_1544; +import static net.runelite.api.NpcID.FISHING_SPOT_2653; +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; +import static net.runelite.api.NpcID.FISHING_SPOT_5821; +import static net.runelite.api.NpcID.FISHING_SPOT_6488; +import static net.runelite.api.NpcID.FISHING_SPOT_7155; +import static net.runelite.api.NpcID.FISHING_SPOT_7199; +import static net.runelite.api.NpcID.FISHING_SPOT_7200; +import static net.runelite.api.NpcID.FISHING_SPOT_7323; +import static net.runelite.api.NpcID.FISHING_SPOT_7459; +import static net.runelite.api.NpcID.FISHING_SPOT_7460; +import static net.runelite.api.NpcID.FISHING_SPOT_7461; +import static net.runelite.api.NpcID.FISHING_SPOT_7462; +import static net.runelite.api.NpcID.FISHING_SPOT_7465; +import static net.runelite.api.NpcID.FISHING_SPOT_7466; +import static net.runelite.api.NpcID.FISHING_SPOT_7467; +import static net.runelite.api.NpcID.FISHING_SPOT_7469; +import static net.runelite.api.NpcID.FISHING_SPOT_7470; +import static net.runelite.api.NpcID.FISHING_SPOT_7730; +import static net.runelite.api.NpcID.FISHING_SPOT_7731; +import static net.runelite.api.NpcID.FISHING_SPOT_7732; +import static net.runelite.api.NpcID.FISHING_SPOT_7733; +import static net.runelite.api.NpcID.FISHING_SPOT_7946; +import static net.runelite.api.NpcID.FISHING_SPOT_7947; +import static net.runelite.api.NpcID.FISHING_SPOT_8523; +import static net.runelite.api.NpcID.FISHING_SPOT_8525; +import static net.runelite.api.NpcID.FISHING_SPOT_8526; +import static net.runelite.api.NpcID.FISHING_SPOT_8527; +import static net.runelite.api.NpcID.FISHING_SPOT_9171; +import static net.runelite.api.NpcID.FISHING_SPOT_9172; +import static net.runelite.api.NpcID.FISHING_SPOT_9173; +import static net.runelite.api.NpcID.FISHING_SPOT_9174; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1506; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1507; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1508; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1509; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1513; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1515; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1516; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1526; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_1527; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_3417; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_3418; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_6825; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_7463; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_7464; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_7468; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_7676; +import static net.runelite.api.NpcID.ROD_FISHING_SPOT_8524; +import static net.runelite.api.NpcID.FISHING_SPOT_4928; +import static net.runelite.api.NpcID.FISHING_SPOT_6784; + +@Getter +public enum FishingSpot +{ + 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, + FISHING_SPOT_1544, FISHING_SPOT_3913, FISHING_SPOT_7155, + FISHING_SPOT_7459, FISHING_SPOT_7462, FISHING_SPOT_7467, + FISHING_SPOT_7469, FISHING_SPOT_7947 + ), + 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", "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, + FISHING_SPOT_7200, FISHING_SPOT_7461, FISHING_SPOT_7466, + FISHING_SPOT_8525, FISHING_SPOT_8526, FISHING_SPOT_8527, + FISHING_SPOT_9171, FISHING_SPOT_9172 + ), + MONKFISH("Monkfish", ItemID.RAW_MONKFISH, + FISHING_SPOT_4316 + ), + 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, + ROD_FISHING_SPOT_1527, ROD_FISHING_SPOT_3417, ROD_FISHING_SPOT_3418, + ROD_FISHING_SPOT_7463, ROD_FISHING_SPOT_7464, ROD_FISHING_SPOT_7468, + ROD_FISHING_SPOT_8524 + ), + LAVA_EEL("Lava eel", ItemID.LAVA_EEL, + FISHING_SPOT_4928, FISHING_SPOT_6784 + ), + BARB_FISH("Sturgeon, Salmon, Trout", ItemID.LEAPING_STURGEON, + FISHING_SPOT_1542, FISHING_SPOT_7323 + ), + ANGLERFISH("Anglerfish", ItemID.RAW_ANGLERFISH, + ROD_FISHING_SPOT_6825 + ), + MINNOW("Minnow", ItemID.MINNOW, + FISHING_SPOT_7730, FISHING_SPOT_7731, FISHING_SPOT_7732, FISHING_SPOT_7733 + ), + INFERNAL_EEL("Infernal Eel", "Leaping sturgeon", ItemID.INFERNAL_EEL, + ROD_FISHING_SPOT_7676 + ), + KARAMBWAN("Karambwan", "Karambwanji", ItemID.RAW_KARAMBWAN, + FISHING_SPOT_4712, FISHING_SPOT_4713 + ), + KARAMBWANJI("Karambwanji, Shrimp", ItemID.KARAMBWANJI, + FISHING_SPOT_4710 + ), + SACRED_EEL("Sacred eel", ItemID.SACRED_EEL, + FISHING_SPOT_6488 + ), + CAVE_EEL("Cave eel", ItemID.RAW_CAVE_EEL, + FISHING_SPOT_1497, FISHING_SPOT_1498, FISHING_SPOT_1499 + ), + SLIMY_EEL("Slimy eel", ItemID.RAW_SLIMY_EEL, + FISHING_SPOT_2653, FISHING_SPOT_2654, FISHING_SPOT_2655 + ), + DARK_CRAB("Dark Crab", ItemID.RAW_DARK_CRAB, + FISHING_SPOT_1535, FISHING_SPOT_1536 + ), + 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; + + static + { + ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); + + for (FishingSpot spot : values()) + { + for (int spotId : spot.getIds()) + { + builder.put(spotId, spot); + } + } + + SPOTS = builder.build(); + } + + 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; + } + + public static FishingSpot findSpot(int id) + { + return SPOTS.get(id); + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java b/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java index 3cf83baedd..dac4474cb9 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java @@ -233,6 +233,10 @@ public enum ItemMapping ITEM_BASILISK_JAW(BASILISK_JAW, NEITIZNOT_FACEGUARD), ITEM_HELM_OF_NEITIZNOT(HELM_OF_NEITIZNOT, NEITIZNOT_FACEGUARD), ITEM_TWISTED_HORNS(TWISTED_HORNS, TWISTED_SLAYER_HELMET, TWISTED_SLAYER_HELMET_I), + ITEM_ELDRITCH_ORB(ELDRITCH_ORB, ELDRITCH_NIGHTMARE_STAFF), + ITEM_HARMONISED_ORB(HARMONISED_ORB, HARMONISED_NIGHTMARE_STAFF), + ITEM_VOLATILE_ORB(VOLATILE_ORB, VOLATILE_NIGHTMARE_STAFF), + ITEM_NIGHTMARE_STAFF(NIGHTMARE_STAFF, ELDRITCH_NIGHTMARE_STAFF, HARMONISED_NIGHTMARE_STAFF, VOLATILE_NIGHTMARE_STAFF), // Crystal items ITEM_CRYSTAL_TOOL_SEED(CRYSTAL_TOOL_SEED, CRYSTAL_AXE, CRYSTAL_AXE_INACTIVE, CRYSTAL_HARPOON, CRYSTAL_HARPOON_INACTIVE, CRYSTAL_PICKAXE, CRYSTAL_PICKAXE_INACTIVE), diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index 1049b3c4b1..0b5e44055e 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -901,25 +901,21 @@ public class ClientUI private void togglePluginPanel() { - // Toggle sidebar open - boolean isPanelOpen = sidebarOpen; - sidebarOpen = !sidebarOpen; + // Toggle plugin panel open + final boolean pluginPanelOpen = pluginPanel != null; - if (isPanelOpen) + if (currentButton != null) + { + currentButton.setSelected(!pluginPanelOpen); + } + + if (pluginPanelOpen) { contract(); } else { - // Try to restore last panel expand(currentNavButton); - - //Checks if the toolbar was previously closed by toggleSidebar - if (!container.isAncestorOf(pluginToolbar)) - { - container.add(pluginToolbar); - frame.expandBy(pluginToolbar.getWidth()); - } } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java b/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java index 54497b6de9..631260bc7a 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/FontManager.java @@ -73,12 +73,12 @@ public class FontManager { font = Font.createFont(Font.TRUETYPE_FONT, boldIn) - .deriveFont(Font.PLAIN, 16); + .deriveFont(Font.BOLD, 16); ge.registerFont(font); } runescapeBoldFont = StyleContext.getDefaultStyleContext() - .getFont(font.getName(), Font.PLAIN, 16); + .getFont(font.getName(), Font.BOLD, 16); ge.registerFont(runescapeBoldFont); } catch (FontFormatException ex) diff --git a/runelite-client/src/main/resources/net/runelite/client/ui/runescape.ttf b/runelite-client/src/main/resources/net/runelite/client/ui/runescape.ttf index 9d15fc64ff..87e93164df 100644 Binary files a/runelite-client/src/main/resources/net/runelite/client/ui/runescape.ttf and b/runelite-client/src/main/resources/net/runelite/client/ui/runescape.ttf differ diff --git a/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf b/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf index 1eaf0e7b82..a75a584ccb 100644 Binary files a/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf and b/runelite-client/src/main/resources/net/runelite/client/ui/runescape_bold.ttf differ