diff --git a/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreResult.java b/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreResult.java index aae95b9b83..033ab213da 100644 --- a/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreResult.java +++ b/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreResult.java @@ -65,6 +65,7 @@ public class HiscoreResult private Skill clueScrollElite; private Skill clueScrollMaster; private Skill lastManStanding; + private Skill soulWarsZeal; private Skill abyssalSire; private Skill alchemicalHydra; private Skill barrowsChests; @@ -184,6 +185,8 @@ public class HiscoreResult return getClueScrollMaster(); case LAST_MAN_STANDING: return getLastManStanding(); + case SOUL_WARS_ZEAL: + return getSoulWarsZeal(); case ABYSSAL_SIRE: return abyssalSire; case ALCHEMICAL_HYDRA: @@ -276,4 +279,4 @@ public class HiscoreResult throw new IllegalArgumentException("Invalid hiscore skill"); } } -} +} \ No newline at end of file diff --git a/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreSkill.java b/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreSkill.java index e20fafac0f..1245cde765 100644 --- a/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreSkill.java +++ b/http-api/src/main/java/net/runelite/http/api/hiscore/HiscoreSkill.java @@ -69,6 +69,7 @@ public enum HiscoreSkill CLUE_SCROLL_ELITE("Clue Scrolls (elite)", ACTIVITY), CLUE_SCROLL_MASTER("Clue Scrolls (master)", ACTIVITY), LAST_MAN_STANDING("Last Man Standing", ACTIVITY), + SOUL_WARS_ZEAL("Soul Wars Zeal", ACTIVITY), ABYSSAL_SIRE("Abyssal Sire", BOSS), ALCHEMICAL_HYDRA("Alchemical Hydra", BOSS), BARROWS_CHESTS("Barrows Chests", BOSS), @@ -116,4 +117,4 @@ public enum HiscoreSkill private final String name; private final HiscoreSkillType type; -} +} \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index 7228e36667..ed667b6b68 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -624,7 +624,7 @@ public final class ItemID public static final int SILK = 950; public static final int SPADE = 952; public static final int ROPE = 954; - public static final int FLIER = 956; + public static final int FLYER = 956; public static final int GREY_WOLF_FUR = 958; public static final int PLANK = 960; public static final int CHRISTMAS_CRACKER = 962; @@ -3330,7 +3330,6 @@ public final class ItemID public static final int TILES = 5569; public static final int TILES_5570 = 5570; public static final int TILES_5571 = 5571; - public static final int DIAL = 5572; public static final int DESERT_AMULET = 5573; public static final int INITIATE_SALLET = 5574; public static final int INITIATE_HAUBERK = 5575; @@ -5008,7 +5007,7 @@ public final class ItemID public static final int SARADOMIN_ICON = 8058; public static final int ZAMORAK_ICON = 8059; public static final int GUTHIX_ICON = 8060; - public static final int ICON_OF_BOB = 8061; + public static final int BOB_ICON = 8061; public static final int OAK_ALTAR = 8062; public static final int TEAK_ALTAR = 8063; public static final int CLOTHCOVERED_ALTAR = 8064; @@ -10754,7 +10753,7 @@ public final class ItemID public static final int CRYSTAL_SAPLING = 23659; public static final int CRYSTAL_ACORN = 23661; public static final int DRAGONSTONE_ARMOUR_SET = 23667; - public static final int FLIER_23670 = 23670; + public static final int FLYER_23670 = 23670; public static final int CRYSTAL_AXE = 23673; public static final int CRYSTAL_AXE_INACTIVE = 23675; public static final int DRAGON_PICKAXE_OR = 23677; @@ -10946,9 +10945,7 @@ public final class ItemID public static final int CRYSTAL_SHIELD = 23991; public static final int CRYSTAL_SHIELD_INACTIVE = 23993; public static final int BLADE_OF_SAELDOR = 23995; - public static final int BLADE_OF_SAELDOR_23996 = 23996; public static final int BLADE_OF_SAELDOR_INACTIVE = 23997; - public static final int BLADE_OF_SAELDOR_INACTIVE_23999 = 23999; public static final int CRYSTAL_GRAIL = 24000; public static final int ELVEN_BOOTS = 24003; public static final int ELVEN_GLOVES = 24006; @@ -11494,19 +11491,18 @@ public final class ItemID public static final int CABBAGE_24994 = 24994; public static final int CABBAGE_24996 = 24996; public static final int TRAILBLAZER_HOOD_T3 = 25001; - public static final int TRAILBLAZER_COAT_T3 = 25004; + public static final int TRAILBLAZER_TOP_T3 = 25004; public static final int TRAILBLAZER_TROUSERS_T3 = 25007; public static final int TRAILBLAZER_BOOTS_T3 = 25010; public static final int TRAILBLAZER_CANE = 25013; public static final int TRAILBLAZER_HOOD_T2 = 25016; - public static final int TRAILBLAZER_COAT_T2 = 25019; + public static final int TRAILBLAZER_TOP_T2 = 25019; public static final int TRAILBLAZER_TROUSERS_T2 = 25022; public static final int TRAILBLAZER_BOOTS_T2 = 25025; public static final int TRAILBLAZER_HOOD_T1 = 25028; - public static final int TRAILBLAZER_COAT_T1 = 25031; + public static final int TRAILBLAZER_TOP_T1 = 25031; public static final int TRAILBLAZER_TROUSERS_T1 = 25034; public static final int TRAILBLAZER_BOOTS_T1 = 25037; - public static final int TRAILBLAZER_TROPHY = 25040; public static final int TRAILBLAZER_DRAGON_TROPHY = 25042; public static final int TRAILBLAZER_RUNE_TROPHY = 25044; public static final int TRAILBLAZER_ADAMANT_TROPHY = 25046; @@ -11515,9 +11511,9 @@ public final class ItemID public static final int TRAILBLAZER_IRON_TROPHY = 25052; public static final int TRAILBLAZER_BRONZE_TROPHY = 25054; public static final int TRAILBLAZER_BANNER = 25056; - public static final int TRAILBLAZER_HARPOON = 25059; - public static final int TRAILBLAZER_PICKAXE = 25063; - public static final int TRAILBLAZER_AXE = 25066; + public static final int INFERNAL_HARPOON_OR = 25059; + public static final int INFERNAL_PICKAXE_OR = 25063; + public static final int INFERNAL_AXE_OR = 25066; public static final int GRACEFUL_HOOD_25069 = 25069; public static final int GRACEFUL_HOOD_25071 = 25071; public static final int GRACEFUL_CAPE_25072 = 25072; @@ -11539,9 +11535,9 @@ public final class ItemID public static final int CRYSTAL_OF_MEMORIES = 25104; public static final int EXTRADIMENSIONAL_BAG = 25106; public static final int EXTRADIMENSIONAL_BAG_25108 = 25108; - public static final int TRAILBLAZER_AXE_25110 = 25110; - public static final int TRAILBLAZER_PICKAXE_25112 = 25112; - public static final int TRAILBLAZER_HARPOON_25114 = 25114; + public static final int TRAILBLAZER_AXE = 25110; + public static final int TRAILBLAZER_PICKAXE = 25112; + public static final int TRAILBLAZER_HARPOON = 25114; public static final int LEAGUE_TOMATO = 25117; public static final int BEEKEEPERS_HAT = 25129; public static final int BEEKEEPERS_TOP = 25131; @@ -11549,5 +11545,158 @@ public final class ItemID public static final int BEEKEEPERS_GLOVES = 25135; public static final int BEEKEEPERS_BOOTS = 25137; public static final int BONE_FRAGMENTS = 25139; + public static final int CLAY_HEAD = 25145; + public static final int FUR_HEAD = 25146; + public static final int BLOODY_HEAD = 25147; + public static final int NEILANS_JOURNAL = 25152; + public static final int ORNATE_UNDEAD_COMBAT_DUMMY = 25154; + public static final int DECORATIVE_BOOTS_BROKEN = 25155; + public static final int DECORATIVE_FULL_HELM_BROKEN = 25157; + public static final int CASTLEWARS_BREW4 = 25159; + public static final int CASTLEWARS_BREW3 = 25160; + public static final int CASTLEWARS_BREW2 = 25161; + public static final int CASTLEWARS_BREW1 = 25162; + public static final int DECORATIVE_BOOTS = 25163; + public static final int DECORATIVE_FULL_HELM = 25165; + public static final int DECORATIVE_BOOTS_25167 = 25167; + public static final int DECORATIVE_FULL_HELM_25169 = 25169; + public static final int DECORATIVE_BOOTS_25171 = 25171; + public static final int DECORATIVE_BOOTS_L = 25173; + public static final int DECORATIVE_FULL_HELM_25174 = 25174; + public static final int DECORATIVE_FULL_HELM_L = 25176; + public static final int SLAYER_HELMET_I_25177 = 25177; + public static final int BLACK_SLAYER_HELMET_I_25179 = 25179; + public static final int GREEN_SLAYER_HELMET_I_25181 = 25181; + public static final int RED_SLAYER_HELMET_I_25183 = 25183; + public static final int PURPLE_SLAYER_HELMET_I_25185 = 25185; + public static final int TURQUOISE_SLAYER_HELMET_I_25187 = 25187; + public static final int HYDRA_SLAYER_HELMET_I_25189 = 25189; + public static final int TWISTED_SLAYER_HELMET_I_25191 = 25191; + public static final int GRANITE_RING_I_25193 = 25193; + public static final int BLUE_CAPE_25195 = 25195; + public static final int SOUL_FRAGMENT = 25196; + public static final int SOUL_WARS_GUIDE = 25197; + public static final int BONES_25199 = 25199; + public static final int SOUL_FRAGMENT_25201 = 25201; + public static final int BANDAGES_25202 = 25202; + public static final int POTION_OF_POWER4 = 25203; + public static final int POTION_OF_POWER3 = 25204; + public static final int POTION_OF_POWER2 = 25205; + public static final int POTION_OF_POWER1 = 25206; + public static final int RED_CAPE_25207 = 25207; + public static final int BLUE_CAPE_25208 = 25208; + public static final int BARRICADE_25209 = 25209; + public static final int BARRICADE_25210 = 25210; + public static final int EXPLOSIVE_POTION_25211 = 25211; + public static final int BLUE_ICON = 25212; + public static final int BLUE_ICON_25213 = 25213; + public static final int BLUE_ICON_25214 = 25214; + public static final int BLUE_ICON_25215 = 25215; + public static final int BLUE_ICON_25216 = 25216; + public static final int BLUE_ICON_25217 = 25217; + public static final int BLUE_ICON_25218 = 25218; + public static final int BLUE_ICON_25219 = 25219; + public static final int BLUE_ICON_25220 = 25220; + public static final int BLUE_ICON_25221 = 25221; + public static final int BLUE_ICON_25222 = 25222; + public static final int BLUE_ICON_25223 = 25223; + public static final int BLUE_ICON_25224 = 25224; + public static final int BLUE_ICON_25225 = 25225; + public static final int BLUE_ICON_25226 = 25226; + public static final int BLUE_ICON_25227 = 25227; + public static final int RED_ICON = 25228; + public static final int RED_ICON_25229 = 25229; + public static final int RED_ICON_25230 = 25230; + public static final int RED_ICON_25231 = 25231; + public static final int RED_ICON_25232 = 25232; + public static final int RED_ICON_25233 = 25233; + public static final int RED_ICON_25234 = 25234; + public static final int RED_ICON_25235 = 25235; + public static final int RED_ICON_25236 = 25236; + public static final int RED_ICON_25237 = 25237; + public static final int RED_ICON_25238 = 25238; + public static final int RED_ICON_25239 = 25239; + public static final int RED_ICON_25240 = 25240; + public static final int RED_ICON_25241 = 25241; + public static final int RED_ICON_25242 = 25242; + public static final int RED_ICON_25243 = 25243; + public static final int OLD_KEY_25244 = 25244; + public static final int RING_OF_SUFFERING_I_25246 = 25246; + public static final int RING_OF_SUFFERING_RI_25248 = 25248; + public static final int SALVE_AMULETI_25250 = 25250; + public static final int RING_OF_THE_GODS_I_25252 = 25252; + public static final int TYRANNICAL_RING_I_25254 = 25254; + public static final int TREASONOUS_RING_I_25256 = 25256; + public static final int SEERS_RING_I_25258 = 25258; + public static final int ARCHERS_RING_I_25260 = 25260; + public static final int WARRIOR_RING_I_25262 = 25262; + public static final int BERSERKER_RING_I_25264 = 25264; + public static final int BLACK_MASK_10_I_25266 = 25266; + public static final int BLACK_MASK_9_I_25267 = 25267; + public static final int BLACK_MASK_8_I_25268 = 25268; + public static final int BLACK_MASK_7_I_25269 = 25269; + public static final int BLACK_MASK_6_I_25270 = 25270; + public static final int BLACK_MASK_5_I_25271 = 25271; + public static final int BLACK_MASK_4_I_25272 = 25272; + public static final int BLACK_MASK_3_I_25273 = 25273; + public static final int BLACK_MASK_2_I_25274 = 25274; + public static final int BLACK_MASK_1_I_25275 = 25275; + public static final int BLACK_MASK_I_25276 = 25276; + public static final int SALVE_AMULETEI_25278 = 25278; + public static final int PURE_ESSENCE_PACK = 25280; + public static final int SLED_25282 = 25282; + public static final int RED_FIREFLIES = 25283; + public static final int GREEN_FIREFLIES = 25284; + public static final int STICK_25285 = 25285; + public static final int MOULDY_SAWDUST = 25286; + public static final int ROTTEN_MEAT = 25287; + public static final int STALE_BREAD = 25288; + public static final int GOBLIN_STEW = 25289; + public static final int GOBLIN_GIFTS = 25290; + public static final int GIANT_BOULDER = 25314; + public static final int GOBLIN_DECORATIONS = 25316; + public static final int GNOME_CHILD_ICON = 25319; + public static final int GNOME_CHILD = 25320; + public static final int GNOME_CHILD_25321 = 25321; + public static final int _20TH_ANNIVERSARY_HAT = 25322; + public static final int _20TH_ANNIVERSARY_TOP = 25324; + public static final int _20TH_ANNIVERSARY_BOTTOM = 25326; + public static final int _20TH_ANNIVERSARY_BOOTS = 25328; + public static final int _20TH_ANNIVERSARY_GLOVES = 25330; + public static final int _20TH_ANNIVERSARY_NECKLACE = 25332; + public static final int _20TH_ANNIVERSARY_CAPE = 25334; + public static final int GNOME_CHILD_MASK = 25336; + public static final int GNOME_CHILD_ICON_25338 = 25338; + public static final int ECTOPLASMATOR = 25340; + public static final int SPOILS_OF_WAR = 25342; + public static final int SOUL_CAPE = 25344; + public static final int SOUL_CAPE_25346 = 25346; + public static final int LIL_CREATOR = 25348; + public static final int LIL_DESTRUCTOR = 25350; + public static final int TROPHY_PEDESTAL = 25351; + public static final int ORNATE_TROPHY_PEDESTAL = 25352; + public static final int OAK_TROPHY_CASE = 25353; + public static final int MAHOGANY_TROPHY_CASE = 25354; + public static final int BANNER_STAND = 25355; + public static final int ORNATE_BANNER_STAND = 25356; + public static final int OAK_OUTFIT_STAND = 25357; + public static final int MAHOGANY_OUTFIT_STAND = 25358; + public static final int LEAGUE_STATUE = 25359; + public static final int ORNATE_LEAGUE_STATUE = 25360; + public static final int TRAILBLAZER_GLOBE_25361 = 25361; + public static final int RUG_25362 = 25362; + public static final int OPULENT_RUG_25363 = 25363; + public static final int TRAILBLAZER_RUG_25364 = 25364; + public static final int LEAGUE_ACCOMPLISHMENTS_SCROLL = 25365; + public static final int LEAGUE_HALL = 25366; + public static final int INFERNAL_HARPOON_UNCHARGED_25367 = 25367; + public static final int INFERNAL_PICKAXE_UNCHARGED_25369 = 25369; + public static final int INFERNAL_AXE_UNCHARGED_25371 = 25371; + public static final int DRAGON_HARPOON_OR = 25373; + public static final int DRAGON_PICKAXE_OR_25376 = 25376; + public static final int DRAGON_AXE_OR = 25378; + public static final int TRAILBLAZER_RELIC_HUNTER_T1_ARMOUR_SET = 25380; + public static final int TRAILBLAZER_RELIC_HUNTER_T2_ARMOUR_SET = 25383; + public static final int TRAILBLAZER_RELIC_HUNTER_T3_ARMOUR_SET = 25386; /* This file is automatically generated. Do not edit. */ -} +} \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java index 231752d927..d01cfc7350 100644 --- a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java +++ b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java @@ -197,104 +197,15 @@ public enum VarPlayer SOUND_EFFECT_VOLUME(169), AREA_EFFECT_VOLUME(872), - /** - * f2p Quest varbits, these don't hold the completion value. - */ - QUEST_BLACK_KNIGHTS_FORTRESS(130), - QUEST_COOKS_ASSISTANT(29), - QUEST_DORICS_QUEST(31), - QUEST_DRAGON_SLAYER(176), - QUEST_ERNEST_THE_CHICKEN(32), - QUEST_IMP_CATCHER(160), - QUEST_THE_KNIGHTS_SWORD(122), - QUEST_PIRATES_TREASURE(71), - QUEST_PRINCE_ALI_RESCUE(273), - QUEST_THE_RESTLESS_GHOST(107), - QUEST_ROMEO_AND_JULIET(144), - QUEST_RUNE_MYSTERIES(63), - QUEST_SHEEP_SHEARER(179), - QUEST_SHIELD_OF_ARRAV(145), - QUEST_SHIELD_OF_ARRAV_STATE_146(146), - QUEST_VAMPIRE_SLAYER(178), - QUEST_WITCHS_POTION(67), - - /** - * member Quest varbits, these don't hold the completion value. - */ - QUEST_BIG_CHOMPY_BIRD_HUNTING(293), - QUEST_BIOHAZARD(68), - QUEST_CABIN_FEVER(655), - QUEST_CLOCK_TOWER(10), - QUEST_CREATURE_OF_FENKENSTRAIN(399), - QUEST_DEATH_PLATEAU(314), - QUEST_THE_DIG_SITE(131), - QUEST_DRUIDIC_RITUAL(80), - QUEST_DWARF_CANNON(0), - QUEST_EADGARS_RUSE(335), - QUEST_ELEMENTAL_WORKSHOP_I(299), - QUEST_FAMILY_CREST(148), - QUEST_FIGHT_ARENA(17), - QUEST_FISHING_CONTEST(11), - QUEST_THE_FREMENNIK_TRIALS(347), - QUEST_WATERFALL_QUEST(65), - QUEST_GERTRUDES_CAT(180), - QUEST_THE_GRAND_TREE(150), - QUEST_HAUNTED_MINE(382), - QUEST_HAZEEL_CULT(223), - QUEST_HEROES_QUEST(188), - QUEST_HOLY_GRAIL(5), - QUEST_IN_SEARCH_OF_THE_MYREQUE(387), - QUEST_JUNGLE_POTION(175), - QUEST_LEGENDS_QUEST(139), - QUEST_LOST_CITY(147), - QUEST_MERLINS_CRYSTAL(14), - QUEST_MONKEY_MADNESS_I(365), - QUEST_MONKS_FRIEND(30), - QUEST_MOURNINGS_END_PART_I(517), - QUEST_MURDER_MYSTERY(192), - QUEST_NATURE_SPIRIT(307), - QUEST_OBSERVATORY_QUEST(112), - QUEST_ONE_SMALL_FAVOUR(416), - QUEST_PLAGUE_CITY(165), - QUEST_PRIEST_IN_PERIL(302), - QUEST_RAG_AND_BONE_MAN(714), - QUEST_REGICIDE(328), - QUEST_ROVING_ELVES(402), - QUEST_RUM_DEAL(600), - QUEST_SCORPION_CATCHER(76), - QUEST_SEA_SLUG(159), - QUEST_SHADES_OF_MORTTON(339), - QUEST_SHEEP_HERDER(60), - QUEST_SHILO_VILLAGE(116), - QUEST_TAI_BWO_WANNAI_TRIO(320), - QUEST_TEMPLE_OF_IKOV(26), - QUEST_THRONE_OF_MISCELLANIA(359), - QUEST_THE_TOURIST_TRAP(197), - QUEST_WITCHS_HOUSE(226), - QUEST_TREE_GNOME_VILLAGE(111), - QUEST_TRIBAL_TOTEM(200), - QUEST_TROLL_ROMANCE(385), - QUEST_TROLL_STRONGHOLD(317), - QUEST_UNDERGROUND_PASS(161), - QUEST_UNDERGROUND_PASS_STATE_162(162), - QUEST_WATCHTOWER(212), - QUEST_THE_GREAT_BRAIN_ROBBERY(980), - QUEST_RAG_AND_BONE_MAN_II(714), - - /** - * mini-quest varbits, these don't hold the completion value. - */ - QUEST_ENTER_THE_ABYSS(492), - QUEST_ALFRED_GRIMHANDS_BARCRAWL(77), - QUEST_ALFRED_GRIMHANDS_BARCRAWL_STATE_76(76), - QUEST_THE_MAGE_ARENA(267), - /** * 0 = 2 buttons, 1 = 1 button */ MOUSE_BUTTONS(170), - ZALCANO_FORM(1683); + /** + * {@link NpcID} for the HP HUD + */ + HP_HUD_NPC_ID(1683); - public final int id; -} + private final int id; +} \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/game/SkillIconManager.java b/runelite-client/src/main/java/net/runelite/client/game/SkillIconManager.java index 6a7311bea1..187a936dac 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/SkillIconManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/SkillIconManager.java @@ -49,7 +49,7 @@ public class SkillIconManager String skillIconPath = (small ? "/skill_icons_small/" : "/skill_icons/") + skill.getName().toLowerCase() + ".png"; log.debug("Loading skill icon from {}", skillIconPath); - BufferedImage skillImage = ImageUtil.getResourceStreamFromClass(getClass(), skillIconPath); + BufferedImage skillImage = ImageUtil.loadImageResource(getClass(), skillIconPath); imgCache[skillIdx] = skillImage; return skillImage; diff --git a/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java b/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java index 3d7271af7f..7c0bd4f2fc 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/SpriteManager.java @@ -162,7 +162,7 @@ public class SpriteManager Class owner = add[0].getClass(); for (SpriteOverride o : add) { - BufferedImage image = ImageUtil.getResourceStreamFromClass(owner, o.getFileName()); + BufferedImage image = ImageUtil.loadImageResource(owner, o.getFileName()); SpritePixels sp = ImageUtil.getImageSpritePixels(image, client); overrides.put(o.getSpriteId(), sp); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java index 901987356c..501537654e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/account/AccountPlugin.java @@ -65,8 +65,8 @@ public class AccountPlugin extends Plugin static { - LOGIN_IMAGE = ImageUtil.getResourceStreamFromClass(AccountPlugin.class, "login_icon.png"); - LOGOUT_IMAGE = ImageUtil.getResourceStreamFromClass(AccountPlugin.class, "logout_icon.png"); + LOGIN_IMAGE = ImageUtil.loadImageResource(AccountPlugin.class, "login_icon.png"); + LOGOUT_IMAGE = ImageUtil.loadImageResource(AccountPlugin.class, "logout_icon.png"); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java index 73eb79037d..61db1d7cf9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barbarianassault/BarbarianAssaultPlugin.java @@ -100,7 +100,7 @@ public class BarbarianAssaultPlugin extends Plugin overlayManager.add(timerOverlay); overlayManager.add(healerOverlay); - clockImage = ImageUtil.getResourceStreamFromClass(getClass(), "clock.png"); + clockImage = ImageUtil.loadImageResource(getClass(), "clock.png"); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java index 22103f5e79..c7cdef0058 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsBrotherSlainOverlay.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.barrows; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; +import java.text.DecimalFormat; import javax.inject.Inject; import net.runelite.api.Client; import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG; @@ -42,6 +43,8 @@ import net.runelite.client.ui.overlay.components.LineComponent; public class BarrowsBrotherSlainOverlay extends OverlayPanel { + private static final DecimalFormat REWARD_POTENTIAL_FORMATTER = new DecimalFormat("##0.00%"); + private final Client client; @Inject @@ -84,10 +87,9 @@ public class BarrowsBrotherSlainOverlay extends OverlayPanel } final int rewardPotential = rewardPotential(); - float rewardPercent = rewardPotential / 10.12f; panelComponent.getChildren().add(LineComponent.builder() .left("Potential") - .right(rewardPercent != 0 ? rewardPercent + "%" : "0%") + .right(REWARD_POTENTIAL_FORMATTER.format(rewardPotential / 1012f)) .rightColor(rewardPotential >= 756 && rewardPotential < 881 ? Color.GREEN : rewardPotential < 631 ? Color.WHITE : Color.YELLOW) .build()); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java index c9fd49c97b..dac873dbf7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/boosts/BoostsPlugin.java @@ -119,8 +119,8 @@ public class BoostsPlugin extends Plugin Arrays.fill(lastSkillLevels, -1); // Add infoboxes for everything at startup and then determine inside if it will be rendered - infoBoxManager.addInfoBox(new StatChangeIndicator(true, ImageUtil.getResourceStreamFromClass(getClass(), "debuffed.png"), this, config)); - infoBoxManager.addInfoBox(new StatChangeIndicator(false, ImageUtil.getResourceStreamFromClass(getClass(), "buffed.png"), this, config)); + infoBoxManager.addInfoBox(new StatChangeIndicator(true, ImageUtil.loadImageResource(getClass(), "debuffed.png"), this, config)); + infoBoxManager.addInfoBox(new StatChangeIndicator(false, ImageUtil.loadImageResource(getClass(), "buffed.png"), this, config)); for (final Skill skill : Skill.values()) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java index 1cca0adfb3..06dee6142a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java @@ -625,7 +625,7 @@ public class ClueScrollPlugin extends Plugin return emoteImage; } - emoteImage = ImageUtil.getResourceStreamFromClass(getClass(), "emote.png"); + emoteImage = ImageUtil.loadImageResource(getClass(), "emote.png"); return emoteImage; } @@ -642,7 +642,7 @@ public class ClueScrollPlugin extends Plugin return mapArrow; } - mapArrow = ImageUtil.getResourceStreamFromClass(getClass(), "/util/clue_arrow.png"); + mapArrow = ImageUtil.loadImageResource(getClass(), "/util/clue_arrow.png"); return mapArrow; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java index ded2628348..a8aff43840 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CipherClue.java @@ -52,7 +52,7 @@ public class CipherClue extends ClueScroll implements TextClueScroll, NpcClueScr new CipherClue("OVEXON", "Eluned", new WorldPoint(2289, 3144, 0), "Outside Lletya or in Prifddinas after Song of the Elves", "A question on elven crystal math. I have 5 and 3 crystals, large and small respectively. A large crystal is worth 10,000 coins and a small is worth but 1,000. How much are all my crystals worth?", "53,000"), new CipherClue("VTYR APCNTGLW", "King Percival", new WorldPoint(2634, 4682, 1), "Fisher Realm, first floor. Fairy ring BJR", "How many cannons are on this here castle?", "5"), new CipherClue("UZZU MUJHRKYYKJ", "Otto Godblessed", new WorldPoint(2501, 3487, 0), "Otto's Grotto", "How many pyre sites are found around this lake?", "3"), - new CipherClue("USBJCPSO", "Traiborn", new WorldPoint(3112, 3162, 0), "First floor of Wizards Tower", "How many air runes would I need to cast 630 wind waves?", "3150"), + new CipherClue("USBJCPSO", "Traiborn", new WorldPoint(3112, 3162, 0), "First floor of Wizards Tower. Fairy ring DIS", "How many air runes would I need to cast 630 wind waves?", "3150"), new CipherClue("HCKTA IQFHCVJGT", "Fairy Godfather", new WorldPoint(2446, 4428, 0), "Zanaris throne room", "There are 3 inputs and 4 letters on each ring How many total individual fairy ring codes are possible?", "64"), new CipherClue("ZSBKDO ZODO", "Pirate Pete", new WorldPoint(3680, 3537, 0), "Dock northeast of the Ectofunctus"), new CipherClue("GBJSZ RVFFO", "Fairy Queen", new WorldPoint(2347, 4435, 0), "Fairy Resistance Hideout"), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java index cf8ad996f9..fe6a5b54a2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPanel.java @@ -134,11 +134,11 @@ class ConfigPanel extends PluginPanel static { - final BufferedImage backIcon = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "config_back_icon.png"); + final BufferedImage backIcon = ImageUtil.loadImageResource(ConfigPanel.class, "config_back_icon.png"); BACK_ICON = new ImageIcon(backIcon); BACK_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(backIcon, -100)); - BufferedImage sectionRetractIcon = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "/util/arrow_right.png"); + BufferedImage sectionRetractIcon = ImageUtil.loadImageResource(ConfigPanel.class, "/util/arrow_right.png"); sectionRetractIcon = ImageUtil.luminanceOffset(sectionRetractIcon, -121); SECTION_EXPAND_ICON = new ImageIcon(sectionRetractIcon); SECTION_EXPAND_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(sectionRetractIcon, -100)); @@ -285,7 +285,7 @@ class ConfigPanel extends PluginPanel String name = cs.name(); final JLabel sectionName = new JLabel(name); - sectionName.setForeground(ColorScheme.BRAND_BLUE); + sectionName.setForeground(ColorScheme.BRAND_ORANGE); sectionName.setFont(FontManager.getRunescapeBoldFont()); sectionName.setToolTipText("" + name + ":
" + cs.description() + ""); sectionHeader.add(sectionName, BorderLayout.CENTER); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPlugin.java index ac93dcf96b..41372e3895 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/ConfigPlugin.java @@ -83,7 +83,7 @@ public class ConfigPlugin extends Plugin )); pluginListPanel.rebuildPluginList(); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "config_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "config_icon.png"); navButton = NavigationButton.builder() .tooltip("Configuration") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginHubPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginHubPanel.java index 978be1b4c5..562a8517e2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginHubPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginHubPanel.java @@ -102,14 +102,14 @@ class PluginHubPanel extends PluginPanel static { - BufferedImage missingIcon = ImageUtil.getResourceStreamFromClass(PluginHubPanel.class, "pluginhub_missingicon.png"); + BufferedImage missingIcon = ImageUtil.loadImageResource(PluginHubPanel.class, "pluginhub_missingicon.png"); MISSING_ICON = new ImageIcon(missingIcon); - BufferedImage helpIcon = ImageUtil.getResourceStreamFromClass(PluginHubPanel.class, "pluginhub_help.png"); + BufferedImage helpIcon = ImageUtil.loadImageResource(PluginHubPanel.class, "pluginhub_help.png"); HELP_ICON = new ImageIcon(helpIcon); HELP_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(helpIcon, -100)); - BufferedImage configureIcon = ImageUtil.getResourceStreamFromClass(PluginHubPanel.class, "pluginhub_configure.png"); + BufferedImage configureIcon = ImageUtil.loadImageResource(PluginHubPanel.class, "pluginhub_configure.png"); CONFIGURE_ICON = new ImageIcon(configureIcon); CONFIGURE_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(configureIcon, -100)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java index bc3bae3cc4..767fddbc1a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListItem.java @@ -73,10 +73,10 @@ class PluginListItem extends JPanel implements SearchablePlugin static { - BufferedImage configIcon = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "config_edit_icon.png"); - BufferedImage onStar = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "star_on.png"); + BufferedImage configIcon = ImageUtil.loadImageResource(ConfigPanel.class, "config_edit_icon.png"); + BufferedImage onStar = ImageUtil.loadImageResource(ConfigPanel.class, "star_on.png"); CONFIG_ICON = new ImageIcon(configIcon); - ON_STAR = new ImageIcon(ImageUtil.recolorImage(onStar, ColorScheme.BRAND_BLUE)); + ON_STAR = new ImageIcon(onStar); CONFIG_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(configIcon, -100)); BufferedImage offStar = ImageUtil.luminanceScale( @@ -216,7 +216,7 @@ class PluginListItem extends JPanel implements SearchablePlugin } /** - * Adds a mouseover effect to change the text of the passed label to {@link ColorScheme#BRAND_BLUE} color, and + * Adds a mouseover effect to change the text of the passed label to {@link ColorScheme#BRAND_ORANGE} color, and * adds the passed menu items to a popup menu shown when the label is clicked. * * @param label The label to attach the mouseover and click effects to @@ -258,7 +258,7 @@ class PluginListItem extends JPanel implements SearchablePlugin public void mouseEntered(MouseEvent mouseEvent) { lastForeground = label.getForeground(); - label.setForeground(ColorScheme.BRAND_BLUE); + label.setForeground(ColorScheme.BRAND_ORANGE); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java index 382282b92e..8894b0fcc9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java @@ -76,7 +76,6 @@ class PluginListPanel extends PluginPanel private static final String RUNELITE_GROUP_NAME = RuneLiteConfig.class.getAnnotation(ConfigGroup.class).value(); private static final String PINNED_PLUGINS_CONFIG_KEY = "pinnedPlugins"; private static final ImmutableList CATEGORY_TAGS = ImmutableList.of( - "OpenOSRS", "Combat", "Chat", "Item", diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java index c6e5ffa177..185a5e7ecc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java @@ -29,8 +29,8 @@ import java.awt.Dimension; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; import javax.swing.JToggleButton; +import com.openosrs.client.util.ImageUtil; import net.runelite.client.ui.ColorScheme; -import net.runelite.client.util.ImageUtil; import net.runelite.client.util.SwingUtil; class PluginToggleButton extends JToggleButton @@ -40,7 +40,7 @@ class PluginToggleButton extends JToggleButton static { - BufferedImage onSwitcher = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "switcher_on.png"); + BufferedImage onSwitcher = ImageUtil.loadImageResource(ConfigPanel.class, "switcher_on.png"); ON_SWITCHER = new ImageIcon(ImageUtil.recolorImage(onSwitcher, ColorScheme.BRAND_BLUE)); OFF_SWITCHER = new ImageIcon(ImageUtil.flipImage( ImageUtil.luminanceScale( diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/woodcutting/CrowdsourcingWoodcutting.java b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/woodcutting/CrowdsourcingWoodcutting.java index c8499575cf..e61a017960 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/woodcutting/CrowdsourcingWoodcutting.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/crowdsourcing/woodcutting/CrowdsourcingWoodcutting.java @@ -88,7 +88,7 @@ public class CrowdsourcingWoodcutting put(AnimationID.WOODCUTTING_INFERNAL, ItemID.INFERNAL_AXE). put(AnimationID.WOODCUTTING_3A_AXE, ItemID._3RD_AGE_AXE). put(AnimationID.WOODCUTTING_CRYSTAL, ItemID.CRYSTAL_AXE). - put(AnimationID.WOODCUTTING_TRAILBLAZER, ItemID.TRAILBLAZER_AXE).build(); + put(AnimationID.WOODCUTTING_TRAILBLAZER, ItemID.INFERNAL_AXE_OR).build(); private static final Set SUCCESS_MESSAGES = new ImmutableSet.Builder(). add("You get some logs."). diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursor.java b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursor.java index 37208ddd23..3baf137c96 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursor.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursor.java @@ -54,6 +54,6 @@ public enum CustomCursor CustomCursor(String name, String icon) { this.name = name; - this.cursorImage = ImageUtil.getResourceStreamFromClass(CustomCursorPlugin.class, icon); + this.cursorImage = ImageUtil.loadImageResource(CustomCursorPlugin.class, icon); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java index 7ee247f92c..abc63546d9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPanel.java @@ -174,7 +174,7 @@ class DevToolsPanel extends PluginPanel final JButton newInfoboxBtn = new JButton("Infobox"); newInfoboxBtn.addActionListener(e -> { - Counter counter = new Counter(ImageUtil.getResourceStreamFromClass(getClass(), "devtools_icon.png"), plugin, 42) + Counter counter = new Counter(ImageUtil.loadImageResource(getClass(), "devtools_icon.png"), plugin, 42) { @Override public String getName() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java index df0b342c3b..424c26e4c3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java @@ -198,7 +198,7 @@ public class DevToolsPlugin extends Plugin final DevToolsPanel panel = injector.getInstance(DevToolsPanel.class); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "devtools_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "devtools_icon.png"); navButton = NavigationButton.builder() .tooltip("Developer Tools") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java index f14b259277..17b72b5d6e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java @@ -297,6 +297,7 @@ enum DiscordGameEventType MG_PYRAMID_PLUNDER("Pyramid Plunder", DiscordAreaType.MINIGAMES, 7749), MG_ROGUES_DEN("Rogues' Den", DiscordAreaType.MINIGAMES, 11855, 11854, 12111, 12110), MG_SORCERESS_GARDEN("Sorceress's Garden", DiscordAreaType.MINIGAMES, 11605), + MG_SOUL_WARS("Soul Wars", DiscordAreaType.MINIGAMES, 8493, 8748, 8749, 9005), MG_TEMPLE_TREKKING("Temple Trekking", DiscordAreaType.MINIGAMES, 8014, 8270, 8256, 8782, 9038, 9294, 9550, 9806), MG_TITHE_FARM("Tithe Farm", DiscordAreaType.MINIGAMES, 7222), MG_TROUBLE_BREWING("Trouble Brewing", DiscordAreaType.MINIGAMES, 15150), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java index 7b00cc11e8..6f5ffbdcd1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java @@ -123,7 +123,7 @@ public class DiscordPlugin extends Plugin @Override protected void startUp() throws Exception { - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "discord.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "discord.png"); discordButton = NavigationButton.builder() .tab(false) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java index acee57ab0f..37cc934ce2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/Emoji.java @@ -116,7 +116,7 @@ enum Emoji BufferedImage loadImage() { - return ImageUtil.getResourceStreamFromClass(getClass(), this.name().toLowerCase() + ".png"); + return ImageUtil.loadImageResource(getClass(), this.name().toLowerCase() + ".png"); } static Emoji getEmoji(String trigger) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java index 976082dcd7..72e7f4a085 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java @@ -314,7 +314,7 @@ public class ExaminePlugin extends Plugin return new int[]{widgetItem.getItemQuantity(), widgetItem.getItemId()}; } } - else if (WidgetInfo.SHOP_ITEMS_CONTAINER.getGroupId() == widgetGroup) + else if (WidgetID.SHOP_GROUP_ID == widgetGroup) { Widget widgetItem = widget.getChild(actionParam); if (widgetItem != null) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPanel.java index 7b1d987c4e..66894b3cda 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPanel.java @@ -101,8 +101,8 @@ class FeedPanel extends PluginPanel static { - RUNELITE_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(FeedPanel.class, "runelite.png")); - OSRS_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(FeedPanel.class, "osrs.png")); + RUNELITE_ICON = new ImageIcon(ImageUtil.loadImageResource(FeedPanel.class, "runelite.png")); + OSRS_ICON = new ImageIcon(ImageUtil.loadImageResource(FeedPanel.class, "osrs.png")); } private final FeedConfig config; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java index 5cc4ea0bd9..ebe607d986 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java @@ -97,7 +97,7 @@ public class FeedPlugin extends Plugin { feedPanel = injector.getInstance(FeedPanel.class); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "icon.png"); navButton = NavigationButton.builder() .tooltip("News Feed") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java index 65257adeb8..4715450f79 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java @@ -274,8 +274,8 @@ public class FishingPlugin extends Plugin case ItemID.KARAMBWAN_VESSEL_3159: case ItemID.CORMORANTS_GLOVE: case ItemID.CORMORANTS_GLOVE_22817: + case ItemID.INFERNAL_HARPOON_OR: case ItemID.TRAILBLAZER_HARPOON: - case ItemID.TRAILBLAZER_HARPOON_25114: case ItemID.CRYSTAL_HARPOON: case ItemID.CRYSTAL_HARPOON_23864: case ItemID.CRYSTAL_HARPOON_INACTIVE: diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java index 94fe830cc1..55183e9dff 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java @@ -416,7 +416,7 @@ public class FriendNotesPlugin extends Plugin return; } - final BufferedImage iconImg = ImageUtil.getResourceStreamFromClass(getClass(), "note_icon.png"); + final BufferedImage iconImg = ImageUtil.loadImageResource(getClass(), "note_icon.png"); if (iconImg == null) { return; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java index 7cbe5f31b0..a6be4e5872 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java @@ -269,6 +269,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks private int uniBlockLarge; private int uniBlockMain; private int uniSmoothBanding; + private int uniTextureLightMode; @Override protected void startUp() @@ -538,6 +539,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks uniFogDepth = gl.glGetUniformLocation(glProgram, "fogDepth"); uniDrawDistance = gl.glGetUniformLocation(glProgram, "drawDistance"); uniColorBlindMode = gl.glGetUniformLocation(glProgram, "colorBlindMode"); + uniTextureLightMode = gl.glGetUniformLocation(glProgram, "textureLightMode"); uniTex = gl.glGetUniformLocation(glUiProgram, "tex"); uniTexSamplingMode = gl.glGetUniformLocation(glUiProgram, "samplingMode"); @@ -791,9 +793,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks .put(client.getCenterX()) .put(client.getCenterY()) .put(client.getScale()) - .put(client.getCameraX2()) - .put(client.getCameraY2()) - .put(client.getCameraZ2()); + .put(cameraX) + .put(cameraY) + .put(cameraZ); uniformBuffer.flip(); gl.glBufferSubData(gl.GL_UNIFORM_BUFFER, 0, uniformBuffer.limit() * Integer.BYTES, uniformBuffer); @@ -1151,6 +1153,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks gl.glUniform1f(uniBrightness, (float) textureProvider.getBrightness()); gl.glUniform1f(uniSmoothBanding, config.smoothBanding() ? 0f : 1f); gl.glUniform1i(uniColorBlindMode, config.colorBlindMode().ordinal()); + gl.glUniform1f(uniTextureLightMode, config.brightTextures() ? 1f : 0f); // Calculate projection matrix Matrix4 projectionMatrix = new Matrix4(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java index bef0ce2921..9f276fa8e1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPluginConfig.java @@ -28,9 +28,9 @@ import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigItem; import net.runelite.client.config.Range; +import static net.runelite.client.plugins.gpu.GpuPlugin.MAX_DISTANCE; import static net.runelite.client.plugins.gpu.GpuPlugin.MAX_FOG_DEPTH; import net.runelite.client.plugins.gpu.config.AntiAliasingMode; -import static net.runelite.client.plugins.gpu.GpuPlugin.MAX_DISTANCE; import net.runelite.client.plugins.gpu.config.ColorBlindMode; import net.runelite.client.plugins.gpu.config.UIScalingMode; @@ -135,4 +135,15 @@ public interface GpuPluginConfig extends Config { return ColorBlindMode.NONE; } + + @ConfigItem( + keyName = "brightTextures", + name = "Bright Textures", + description = "Use old texture lighting method which results in brighter game textures", + position = 9 + ) + default boolean brightTextures() + { + return false; + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java index 13405426b9..ab9a04f5c2 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangeOfferSlot.java @@ -82,7 +82,7 @@ public class GrandExchangeOfferSlot extends JPanel static { - final BufferedImage rightArrow = ImageUtil.alphaOffset(ImageUtil.getResourceStreamFromClass(GrandExchangeOfferSlot.class, "/util/arrow_right.png"), 0.25f); + final BufferedImage rightArrow = ImageUtil.alphaOffset(ImageUtil.loadImageResource(GrandExchangeOfferSlot.class, "/util/arrow_right.png"), 0.25f); RIGHT_ARROW_ICON = new ImageIcon(rightArrow); LEFT_ARROW_ICON = new ImageIcon(ImageUtil.flipImage(rightArrow, true, false)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java index 4e7886292e..d28f4b0323 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java @@ -289,7 +289,7 @@ public class GrandExchangePlugin extends Plugin { panel = injector.getInstance(GrandExchangePanel.class); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "ge_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "ge_icon.png"); button = NavigationButton.builder() .tooltip("Grand Exchange") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java index 7876289da6..25191a428f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePanel.java @@ -206,7 +206,7 @@ public class HiscorePanel extends PluginPanel for (HiscoreEndpoint endpoint : ENDPOINTS) { - final BufferedImage iconImage = ImageUtil.getResourceStreamFromClass(getClass(), endpoint.name().toLowerCase() + ".png"); + final BufferedImage iconImage = ImageUtil.loadImageResource(getClass(), endpoint.name().toLowerCase() + ".png"); MaterialTab tab = new MaterialTab(new ImageIcon(iconImage), tabGroup, null); tab.setToolTipText(endpoint.getName() + " Hiscores"); @@ -282,6 +282,7 @@ public class HiscorePanel extends PluginPanel minigamePanel.add(makeHiscorePanel(CLUE_SCROLL_ALL)); minigamePanel.add(makeHiscorePanel(LEAGUE_POINTS)); minigamePanel.add(makeHiscorePanel(LAST_MAN_STANDING)); + minigamePanel.add(makeHiscorePanel(SOUL_WARS_ZEAL)); minigamePanel.add(makeHiscorePanel(BOUNTY_HUNTER_ROGUE)); minigamePanel.add(makeHiscorePanel(BOUNTY_HUNTER_HUNTER)); @@ -345,7 +346,7 @@ public class HiscorePanel extends PluginPanel String skillIcon = directory + skillName + ".png"; log.debug("Loading skill icon from {}", skillIcon); - label.setIcon(new ImageIcon(ImageUtil.getResourceStreamFromClass(getClass(), skillIcon))); + label.setIcon(new ImageIcon(ImageUtil.loadImageResource(getClass(), skillIcon))); boolean totalLabel = skill == OVERALL || skill == null; //overall or combat label.setIconTextGap(totalLabel ? 10 : 4); @@ -595,6 +596,18 @@ public class HiscorePanel extends PluginPanel } break; } + case SOUL_WARS_ZEAL: + { + Skill soulWarsZeal = result.getSoulWarsZeal(); + String rank = (soulWarsZeal.getRank() == -1) ? "Unranked" : QuantityFormatter.formatNumber(soulWarsZeal.getRank()); + content += "

Soul Wars Zeal

"; + content += "

Rank: " + rank + "

"; + if (soulWarsZeal.getLevel() > -1) + { + content += "

Score: " + QuantityFormatter.formatNumber(soulWarsZeal.getLevel()) + "

"; + } + break; + } case LEAGUE_POINTS: { Skill leaguePoints = result.getLeaguePoints(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java index 75e41f6018..edb450d61b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java @@ -94,7 +94,7 @@ public class HiscorePlugin extends Plugin { hiscorePanel = injector.getInstance(HiscorePanel.class); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "normal.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "normal.png"); navButton = NavigationButton.builder() .tooltip("Hiscore") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java index b9eb0fd2e8..c59fa78798 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java @@ -114,12 +114,12 @@ public class InfoPanel extends PluginPanel static { - ARROW_RIGHT_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "/util/arrow_right.png")); - GITHUB_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "github_icon.png")); - DISCORD_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "discord_icon.png")); - PATREON_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "patreon_icon.png")); - WIKI_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "wiki_icon.png")); - IMPORT_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(InfoPanel.class, "import_icon.png")); + ARROW_RIGHT_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "/util/arrow_right.png")); + GITHUB_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "github_icon.png")); + DISCORD_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "discord_icon.png")); + PATREON_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "patreon_icon.png")); + WIKI_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "wiki_icon.png")); + IMPORT_ICON = new ImageIcon(ImageUtil.loadImageResource(InfoPanel.class, "import_icon.png")); } void init() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java index f986a28ffa..6b85037e67 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java @@ -50,7 +50,7 @@ public class InfoPlugin extends Plugin final InfoPanel panel = injector.getInstance(InfoPanel.class); panel.init(); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "info_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "info_icon.png"); navButton = NavigationButton.builder() .tooltip("Info") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java index 48ee9313fa..f224fa55f7 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java @@ -264,7 +264,7 @@ public class InterfaceStylesPlugin extends Plugin try { log.debug("Loading: {}", file); - BufferedImage image = ImageUtil.getResourceStreamFromClass(this.getClass(), file); + BufferedImage image = ImageUtil.loadImageResource(this.getClass(), file); return ImageUtil.getImageSpritePixels(image, client); } catch (RuntimeException ex) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPanel.java index 73d5a1937f..513127a248 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPanel.java @@ -59,7 +59,7 @@ class KourendLibraryPanel extends PluginPanel static { - final BufferedImage resetIcon = ImageUtil.getResourceStreamFromClass(KourendLibraryPanel.class, "/util/reset.png"); + final BufferedImage resetIcon = ImageUtil.loadImageResource(KourendLibraryPanel.class, "/util/reset.png"); RESET_ICON = new ImageIcon(resetIcon); RESET_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(resetIcon, -100)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java index d0bd3c11cf..b79ee73720 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java @@ -134,7 +134,7 @@ public class KourendLibraryPlugin extends Plugin panel = injector.getInstance(KourendLibraryPanel.class); panel.init(); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "panel_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "panel_icon.png"); navButton = NavigationButton.builder() .tooltip("Kourend Library") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java index e338af7fe6..a4ede4f9dc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java @@ -308,7 +308,7 @@ public class LoginScreenPlugin extends Plugin implements KeyListener try { log.debug("Loading: {}", file); - BufferedImage image = ImageUtil.getResourceStreamFromClass(this.getClass(), file); + BufferedImage image = ImageUtil.loadImageResource(this.getClass(), file); return ImageUtil.getImageSpritePixels(image, client); } catch (RuntimeException ex) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java index f90563954a..cb4802cdaf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPanel.java @@ -131,13 +131,13 @@ class LootTrackerPanel extends PluginPanel static { - final BufferedImage singleLootImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "single_loot_icon.png"); - final BufferedImage groupedLootImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "grouped_loot_icon.png"); - final BufferedImage backArrowImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "back_icon.png"); - final BufferedImage visibleImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "visible_icon.png"); - final BufferedImage invisibleImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "invisible_icon.png"); - final BufferedImage collapseImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "collapsed.png"); - final BufferedImage expandedImg = ImageUtil.getResourceStreamFromClass(LootTrackerPlugin.class, "expanded.png"); + final BufferedImage singleLootImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "single_loot_icon.png"); + final BufferedImage groupedLootImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "grouped_loot_icon.png"); + final BufferedImage backArrowImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "back_icon.png"); + final BufferedImage visibleImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "visible_icon.png"); + final BufferedImage invisibleImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "invisible_icon.png"); + final BufferedImage collapseImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "collapsed.png"); + final BufferedImage expandedImg = ImageUtil.loadImageResource(LootTrackerPlugin.class, "expanded.png"); SINGLE_LOOT_VIEW = new ImageIcon(singleLootImg); SINGLE_LOOT_VIEW_FADED = new ImageIcon(ImageUtil.alphaOffset(singleLootImg, -180)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java index ed085b081c..6f8c1d966d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java @@ -363,7 +363,7 @@ public class LootTrackerPlugin extends Plugin panel = new LootTrackerPanel(this, itemManager, config); spriteManager.getSpriteAsync(SpriteID.TAB_INVENTORY, 0, panel::loadHeaderIcon); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "panel_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "panel_icon.png"); navButton = NavigationButton.builder() .tooltip("Loot Tracker") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mining/Pickaxe.java b/runelite-client/src/main/java/net/runelite/client/plugins/mining/Pickaxe.java index edfd2826ff..c0531ac091 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mining/Pickaxe.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mining/Pickaxe.java @@ -73,7 +73,7 @@ import static net.runelite.api.ItemID.MITHRIL_PICKAXE; import static net.runelite.api.ItemID.RUNE_PICKAXE; import static net.runelite.api.ItemID.STEEL_PICKAXE; import static net.runelite.api.ItemID._3RD_AGE_PICKAXE; -import static net.runelite.api.ItemID.TRAILBLAZER_PICKAXE; +import static net.runelite.api.ItemID.INFERNAL_PICKAXE_OR; import net.runelite.api.Player; @Getter @@ -93,7 +93,7 @@ enum Pickaxe INFERNAL(INFERNAL_PICKAXE, MINING_INFERNAL_PICKAXE, MINING_MOTHERLODE_INFERNAL), THIRDAGE(_3RD_AGE_PICKAXE, MINING_3A_PICKAXE, MINING_MOTHERLODE_3A), CRYSTAL(CRYSTAL_PICKAXE, MINING_CRYSTAL_PICKAXE, MINING_MOTHERLODE_CRYSTAL), - TRAILBLAZER(TRAILBLAZER_PICKAXE, MINING_TRAILBLAZER_PICKAXE, MINING_TRAILBLAZER_PICKAXE_2, + TRAILBLAZER(INFERNAL_PICKAXE_OR, MINING_TRAILBLAZER_PICKAXE, MINING_TRAILBLAZER_PICKAXE_2, MINING_TRAILBLAZER_PICKAXE_3, MINING_MOTHERLODE_TRAILBLAZER); private final int itemId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mta/alchemy/AlchemyRoomTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/mta/alchemy/AlchemyRoomTimer.java index 693e0517c9..8609ae66bc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/mta/alchemy/AlchemyRoomTimer.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/mta/alchemy/AlchemyRoomTimer.java @@ -48,7 +48,7 @@ public class AlchemyRoomTimer extends Timer return image; } - image = ImageUtil.getResourceStreamFromClass(AlchemyRoomTimer.class, "/util/reset.png"); + image = ImageUtil.loadImageResource(AlchemyRoomTimer.class, "/util/reset.png"); return image; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java index 67922bccbb..1458855db8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicConfig.java @@ -155,4 +155,4 @@ public interface MusicConfig extends Config hidden = true ) void setAreaSoundEffectVolume(int vol); -} \ No newline at end of file +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java index e20d59f37d..6f3421b08a 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java @@ -924,4 +924,4 @@ public class MusicPlugin extends Plugin soundEffectPlayed.consume(); } } -} \ No newline at end of file +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java index 0b23ac8eb2..92afc38378 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java @@ -65,7 +65,7 @@ public class NotesPlugin extends Plugin panel = injector.getInstance(NotesPanel.class); panel.init(config); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "notes_icon.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "notes_icon.png"); navButton = NavigationButton.builder() .tooltip("Notes") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcSceneOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcSceneOverlay.java index 3fdaeb114a..441d811a97 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcSceneOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcSceneOverlay.java @@ -48,7 +48,6 @@ 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.OverlayUtil; -import net.runelite.client.util.ColorUtil; import net.runelite.client.util.Text; public class NpcSceneOverlay extends Overlay @@ -200,7 +199,7 @@ public class NpcSceneOverlay extends Overlay graphics.setColor(color); graphics.setStroke(new BasicStroke(2)); graphics.draw(polygon); - graphics.setColor(ColorUtil.colorWithAlpha(color, color.getAlpha() / 12)); + graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), 20)); graphics.fill(polygon); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java index 79608ac725..f892560501 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyWorldMapPoint.java @@ -34,7 +34,7 @@ import net.runelite.client.ws.PartyMember; class PartyWorldMapPoint extends WorldMapPoint { - private static final BufferedImage ARROW = ImageUtil.getResourceStreamFromClass(PartyWorldMapPoint.class, "/util/clue_arrow.png"); + private static final BufferedImage ARROW = ImageUtil.loadImageResource(PartyWorldMapPoint.class, "/util/clue_arrow.png"); private BufferedImage partyImage; private final PartyMember member; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java index 01925a7aab..418ce28ef6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohIcons.java @@ -143,7 +143,7 @@ public enum PohIcons return image; } - image = ImageUtil.getResourceStreamFromClass(getClass(), getImageResource() + ".png"); + image = ImageUtil.loadImageResource(getClass(), getImageResource() + ".png"); return image; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java index 22386a90ba..cf26835e83 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java @@ -71,9 +71,9 @@ public class PoisonPlugin extends Plugin static { - HEART_DISEASE = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.DISEASE_HEART), 26, 26); - HEART_POISON = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.POISON_HEART), 26, 26); - HEART_VENOM = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.VENOM_HEART), 26, 26); + HEART_DISEASE = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.DISEASE_HEART), 26, 26); + HEART_POISON = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.POISON_HEART), 26, 26); + HEART_VENOM = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.VENOM_HEART), 26, 26); } @Inject diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerBarOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerBarOverlay.java index 522c1aa754..5d84ac22f3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerBarOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerBarOverlay.java @@ -52,8 +52,8 @@ class PrayerBarOverlay extends Overlay private static final Color FLICK_HELP_COLOR = Color.white; private static final Dimension PRAYER_BAR_SIZE = new Dimension(30, 5); private static final int HD_PRAYER_BAR_PADDING = 1; - private static final BufferedImage HD_FRONT_BAR = ImageUtil.getResourceStreamFromClass(PrayerPlugin.class, "front.png"); - private static final BufferedImage HD_BACK_BAR = ImageUtil.getResourceStreamFromClass(PrayerPlugin.class, "back.png"); + private static final BufferedImage HD_FRONT_BAR = ImageUtil.loadImageResource(PrayerPlugin.class, "front.png"); + private static final BufferedImage HD_BACK_BAR = ImageUtil.loadImageResource(PrayerPlugin.class, "back.png"); private final Client client; private final PrayerConfig config; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java index 6dc7558df2..88dca9d214 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java @@ -125,7 +125,7 @@ public class ScreenMarkerPlugin extends Plugin pluginPanel = new ScreenMarkerPluginPanel(this); pluginPanel.rebuild(); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), ICON_FILE); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), ICON_FILE); navigationButton = NavigationButton.builder() .tooltip(PLUGIN_NAME) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerCreationPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerCreationPanel.java index 51567dd2dc..b5a1ddd7e8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerCreationPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerCreationPanel.java @@ -54,8 +54,8 @@ public class ScreenMarkerCreationPanel extends JPanel static { - CONFIRM_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "confirm_icon.png")); - CANCEL_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "cancel_icon.png")); + CONFIRM_ICON = new ImageIcon(ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "confirm_icon.png")); + CANCEL_ICON = new ImageIcon(ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "cancel_icon.png")); final BufferedImage confirmIcon = ImageUtil.bufferedImageFromImage(CONFIRM_ICON.getImage()); CONFIRM_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(confirmIcon, 0.54f)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPanel.java index 782697f396..a9ad6e61e0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPanel.java @@ -107,7 +107,7 @@ class ScreenMarkerPanel extends JPanel static { - final BufferedImage borderImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "border_color_icon.png"); + final BufferedImage borderImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "border_color_icon.png"); final BufferedImage borderImgHover = ImageUtil.luminanceOffset(borderImg, -150); BORDER_COLOR_ICON = new ImageIcon(borderImg); BORDER_COLOR_HOVER_ICON = new ImageIcon(borderImgHover); @@ -115,7 +115,7 @@ class ScreenMarkerPanel extends JPanel NO_BORDER_COLOR_ICON = new ImageIcon(borderImgHover); NO_BORDER_COLOR_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(borderImgHover, -100)); - final BufferedImage fillImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "fill_color_icon.png"); + final BufferedImage fillImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "fill_color_icon.png"); final BufferedImage fillImgHover = ImageUtil.luminanceOffset(fillImg, -150); FILL_COLOR_ICON = new ImageIcon(fillImg); FILL_COLOR_HOVER_ICON = new ImageIcon(fillImgHover); @@ -123,7 +123,7 @@ class ScreenMarkerPanel extends JPanel NO_FILL_COLOR_ICON = new ImageIcon(fillImgHover); NO_FILL_COLOR_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(fillImgHover, -100)); - final BufferedImage opacityImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "opacity_icon.png"); + final BufferedImage opacityImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "opacity_icon.png"); final BufferedImage opacityImgHover = ImageUtil.luminanceOffset(opacityImg, -150); FULL_OPACITY_ICON = new ImageIcon(opacityImg); FULL_OPACITY_HOVER_ICON = new ImageIcon(opacityImgHover); @@ -131,15 +131,15 @@ class ScreenMarkerPanel extends JPanel NO_OPACITY_ICON = new ImageIcon(opacityImgHover); NO_OPACITY_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(opacityImgHover, -100)); - final BufferedImage visibleImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "visible_icon.png"); + final BufferedImage visibleImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "visible_icon.png"); VISIBLE_ICON = new ImageIcon(visibleImg); VISIBLE_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(visibleImg, -100)); - final BufferedImage invisibleImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "invisible_icon.png"); + final BufferedImage invisibleImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "invisible_icon.png"); INVISIBLE_ICON = new ImageIcon(invisibleImg); INVISIBLE_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(invisibleImg, -100)); - final BufferedImage deleteImg = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "delete_icon.png"); + final BufferedImage deleteImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "delete_icon.png"); DELETE_ICON = new ImageIcon(deleteImg); DELETE_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(deleteImg, -100)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPluginPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPluginPanel.java index d63a2af4d4..efa012df87 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPluginPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ui/ScreenMarkerPluginPanel.java @@ -77,7 +77,7 @@ public class ScreenMarkerPluginPanel extends PluginPanel static { - final BufferedImage addIcon = ImageUtil.getResourceStreamFromClass(ScreenMarkerPlugin.class, "add_icon.png"); + final BufferedImage addIcon = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "add_icon.png"); ADD_ICON = new ImageIcon(addIcon); ADD_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(addIcon, 0.53f)); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java index 7ecc64af50..b199248c39 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java @@ -186,7 +186,7 @@ public class ScreenshotPlugin extends Plugin SCREENSHOT_DIR.mkdirs(); keyManager.registerKeyListener(hotkeyListener); - final BufferedImage iconImage = ImageUtil.getResourceStreamFromClass(getClass(), "screenshot.png"); + final BufferedImage iconImage = ImageUtil.loadImageResource(getClass(), "screenshot.png"); titleBarButton = NavigationButton.builder() .tab(false) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java index 1deb71d093..8999d2ad00 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java @@ -64,7 +64,7 @@ public class SkillCalculatorPlugin extends Plugin @Override protected void startUp() throws Exception { - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "calc.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "calc.png"); final SkillCalculatorPanel uiPanel = new SkillCalculatorPanel(skillIconManager, client, spriteManager, itemManager); uiNavigationButton = NavigationButton.builder() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounter.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounter.java index eaeb0a0cda..736ae0677c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounter.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounter.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.specialcounter; +import java.awt.Color; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; @@ -34,13 +35,15 @@ import net.runelite.client.ui.overlay.infobox.Counter; class SpecialCounter extends Counter { private final SpecialWeapon weapon; + private final SpecialCounterConfig config; @Getter(AccessLevel.PACKAGE) private final Map partySpecs = new HashMap<>(); - SpecialCounter(BufferedImage image, SpecialCounterPlugin plugin, int hitValue, SpecialWeapon weapon) + SpecialCounter(BufferedImage image, SpecialCounterPlugin plugin, SpecialCounterConfig config, int hitValue, SpecialWeapon weapon) { super(image, plugin, hitValue); this.weapon = weapon; + this.config = config; } void addHits(double hit) @@ -90,4 +93,16 @@ class SpecialCounter extends Counter return weapon.getName() + " special has hit " + hitValue + " total."; } } + + @Override + public Color getTextColor() + { + int threshold = weapon.getThreshold().apply(config); + if (threshold > 0) + { + int count = getCount(); + return count >= threshold ? Color.GREEN : Color.RED; + } + return super.getTextColor(); + } } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterConfig.java new file mode 100644 index 0000000000..4320b59e6c --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterConfig.java @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2020, Dylan + * Copyright (c) 2020, Jacob + * 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.specialcounter; + +import net.runelite.client.config.Config; +import net.runelite.client.config.ConfigGroup; +import net.runelite.client.config.ConfigItem; + +@ConfigGroup("specialcounter") +public interface SpecialCounterConfig extends Config +{ + @ConfigItem( + position = 0, + keyName = "thresholdNotification", + name = "Threshold Notifications", + description = "Sends a notification when your special attack counter exceeds the threshold" + ) + default boolean thresholdNotification() + { + return false; + } + + @ConfigItem( + position = 1, + keyName = "dragonWarhammerThreshold", + name = "Dragon Warhammer", + description = "Threshold for Dragon Warhammer (0 to disable)" + ) + default int dragonWarhammerThreshold() + { + return 0; + } + + @ConfigItem( + position = 2, + keyName = "arclightThreshold", + name = "Arclight", + description = "Threshold for Arclight (0 to disable)" + ) + default int arclightThreshold() + { + return 0; + } + + @ConfigItem( + position = 3, + keyName = "darklightThreshold", + name = "Darklight", + description = "Threshold for Darklight (0 to disable)" + ) + default int darklightThreshold() + { + return 0; + } + + @ConfigItem( + position = 4, + keyName = "bandosGodswordThreshold", + name = "Bandos Godsword", + description = "Threshold for Bandos Godsword (0 to disable)" + ) + default int bandosGodswordThreshold() + { + return 0; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java index dbe313272c..799dd098ef 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java @@ -24,6 +24,8 @@ */ package net.runelite.client.plugins.specialcounter; +import com.google.common.collect.ImmutableSet; +import com.google.inject.Provides; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -38,13 +40,16 @@ import net.runelite.api.InventoryID; import net.runelite.api.Item; import net.runelite.api.ItemContainer; import net.runelite.api.NPC; +import net.runelite.api.NpcID; import net.runelite.api.VarPlayer; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.HitsplatApplied; import net.runelite.api.events.InteractingChanged; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.VarbitChanged; +import net.runelite.client.Notifier; import net.runelite.client.callback.ClientThread; +import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.Subscribe; import net.runelite.client.game.ItemManager; import net.runelite.client.plugins.Plugin; @@ -62,6 +67,11 @@ import net.runelite.client.ws.WSClient; @Slf4j public class SpecialCounterPlugin extends Plugin { + private static final Set IGNORED_NPCS = ImmutableSet.of( + NpcID.DARK_ENERGY_CORE, NpcID.ZOMBIFIED_SPAWN, NpcID.ZOMBIFIED_SPAWN_8063, + NpcID.COMBAT_DUMMY, NpcID.UNDEAD_COMBAT_DUMMY + ); + private int currentWorld; private int specialPercentage; private Actor lastSpecTarget; @@ -89,6 +99,18 @@ public class SpecialCounterPlugin extends Plugin @Inject private ItemManager itemManager; + @Inject + private Notifier notifier; + + @Inject + private SpecialCounterConfig config; + + @Provides + SpecialCounterConfig getConfig(ConfigManager configManager) + { + return configManager.getConfig(SpecialCounterConfig.class); + } + @Override protected void startUp() { @@ -191,6 +213,11 @@ public class SpecialCounterPlugin extends Plugin NPC npc = (NPC) target; int interactingId = npc.getId(); + if (IGNORED_NPCS.contains(interactingId)) + { + return; + } + // If this is a new NPC reset the counters if (!interactedNpcIds.contains(interactingId)) { @@ -301,7 +328,7 @@ public class SpecialCounterPlugin extends Plugin if (counter == null) { - counter = new SpecialCounter(itemManager.getImage(specialWeapon.getItemID()), this, + counter = new SpecialCounter(itemManager.getImage(specialWeapon.getItemID()), this, config, hit, specialWeapon); infoBoxManager.addInfoBox(counter); specialCounter[specialWeapon.ordinal()] = counter; @@ -311,6 +338,9 @@ public class SpecialCounterPlugin extends Plugin counter.addHits(hit); } + // Display a notification if special attack thresholds are met + sendNotification(specialWeapon, counter); + // If in a party, add hit to partySpecs for the infobox tooltip Map partySpecs = counter.getPartySpecs(); if (!party.getMembers().isEmpty()) @@ -326,6 +356,15 @@ public class SpecialCounterPlugin extends Plugin } } + private void sendNotification(SpecialWeapon weapon, SpecialCounter counter) + { + int threshold = weapon.getThreshold().apply(config); + if (threshold > 0 && counter.getCount() >= threshold && config.thresholdNotification()) + { + notifier.notify(weapon.getName() + " special attack threshold reached!"); + } + } + private void removeCounters() { interactedNpcIds.clear(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java index 69d8d68193..e3cd82cfc6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialWeapon.java @@ -24,6 +24,7 @@ */ package net.runelite.client.plugins.specialcounter; +import java.util.function.Function; import lombok.AllArgsConstructor; import lombok.Getter; import net.runelite.api.ItemID; @@ -32,13 +33,14 @@ import net.runelite.api.ItemID; @Getter enum SpecialWeapon { - DRAGON_WARHAMMER("Dragon Warhammer", ItemID.DRAGON_WARHAMMER, false), - ARCLIGHT("Arclight", ItemID.ARCLIGHT, false), - DARKLIGHT("Darklight", ItemID.DARKLIGHT, false), - BANDOS_GODSWORD("Bandos Godsword", ItemID.BANDOS_GODSWORD, true), - BANDOS_GODSWORD_OR("Bandos Godsword", ItemID.BANDOS_GODSWORD_OR, true); + DRAGON_WARHAMMER("Dragon Warhammer", ItemID.DRAGON_WARHAMMER, false, SpecialCounterConfig::dragonWarhammerThreshold), + ARCLIGHT("Arclight", ItemID.ARCLIGHT, false, SpecialCounterConfig::arclightThreshold), + DARKLIGHT("Darklight", ItemID.DARKLIGHT, false, SpecialCounterConfig::darklightThreshold), + BANDOS_GODSWORD("Bandos Godsword", ItemID.BANDOS_GODSWORD, true, SpecialCounterConfig::bandosGodswordThreshold), + BANDOS_GODSWORD_OR("Bandos Godsword", ItemID.BANDOS_GODSWORD_OR, true, SpecialCounterConfig::bandosGodswordThreshold); private final String name; private final int itemID; private final boolean damage; + private final Function threshold; } \ No newline at end of file diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java index 55a9603d6a..3710944577 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java @@ -311,9 +311,9 @@ class StatusBarsOverlay extends Overlay } heartIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_HITPOINTS_ICON, 0)), ICON_DIMENSIONS, ICON_DIMENSIONS); - heartDisease = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.DISEASE_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); - heartPoison = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.POISON_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); - heartVenom = ImageUtil.resizeCanvas(ImageUtil.getResourceStreamFromClass(AlternateSprites.class, AlternateSprites.VENOM_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); + heartDisease = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.DISEASE_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); + heartPoison = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.POISON_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); + heartVenom = ImageUtil.resizeCanvas(ImageUtil.loadImageResource(AlternateSprites.class, AlternateSprites.VENOM_HEART), ICON_DIMENSIONS, ICON_DIMENSIONS); energyIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_WALK_ICON, 0)), ICON_DIMENSIONS, ICON_DIMENSIONS); specialIcon = ImageUtil.resizeCanvas(Objects.requireNonNull(spriteManager.getSprite(SpriteID.MINIMAP_ORB_SPECIAL_ICON, 0)), ICON_DIMENSIONS, ICON_DIMENSIONS); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewItemPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewItemPanel.java index a029d0b5d9..56776f272f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewItemPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewItemPanel.java @@ -57,7 +57,7 @@ class OverviewItemPanel extends JPanel static { - ARROW_RIGHT_ICON = new ImageIcon(ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "/util/arrow_right.png")); + ARROW_RIGHT_ICON = new ImageIcon(ImageUtil.loadImageResource(TimeTrackingPlugin.class, "/util/arrow_right.png")); } OverviewItemPanel(ItemManager itemManager, TimeTrackingPanel pluginPanel, Tab tab, String title) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java index e77843bcdc..0f6f3c30f1 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java @@ -124,7 +124,7 @@ public class TimeTrackingPlugin extends Plugin birdHouseTracker.loadFromConfig(); farmingTracker.loadCompletionTimes(); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "watch.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "watch.png"); panel = injector.getInstance(TimeTrackingPanel.class); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/clocks/ClockTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/clocks/ClockTabPanel.java index e3ce75f631..8e8c8a3c92 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/clocks/ClockTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/clocks/ClockTabPanel.java @@ -71,14 +71,14 @@ public class ClockTabPanel extends TabContentPanel static { - BufferedImage deleteIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "delete_icon.png"); - BufferedImage lapIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "lap_icon.png"); - BufferedImage pauseIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "pause_icon.png"); - BufferedImage resetIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "reset_icon.png"); - BufferedImage startIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "start_icon.png"); - BufferedImage addIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "add_icon.png"); - BufferedImage loopIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_icon.png"); - BufferedImage loopSelectedIcon = ImageUtil.getResourceStreamFromClass(TimeTrackingPlugin.class, "loop_selected_icon.png"); + BufferedImage deleteIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "delete_icon.png"); + BufferedImage lapIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "lap_icon.png"); + BufferedImage pauseIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "pause_icon.png"); + BufferedImage resetIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "reset_icon.png"); + BufferedImage startIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "start_icon.png"); + BufferedImage addIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "add_icon.png"); + BufferedImage loopIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "loop_icon.png"); + BufferedImage loopSelectedIcon = ImageUtil.loadImageResource(TimeTrackingPlugin.class, "loop_selected_icon.png"); DELETE_ICON = new ImageIcon(deleteIcon); DELETE_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(deleteIcon, -80)); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java index 306e9dd346..90797e265d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/Axe.java @@ -52,7 +52,7 @@ import static net.runelite.api.ItemID.IRON_AXE; import static net.runelite.api.ItemID.MITHRIL_AXE; import static net.runelite.api.ItemID.RUNE_AXE; import static net.runelite.api.ItemID.STEEL_AXE; -import static net.runelite.api.ItemID.TRAILBLAZER_AXE; +import static net.runelite.api.ItemID.INFERNAL_AXE_OR; import static net.runelite.api.ItemID._3RD_AGE_AXE; import net.runelite.api.Player; @@ -72,7 +72,7 @@ enum Axe INFERNAL(WOODCUTTING_INFERNAL, INFERNAL_AXE), THIRDAGE(WOODCUTTING_3A_AXE, _3RD_AGE_AXE), CRYSTAL(WOODCUTTING_CRYSTAL, CRYSTAL_AXE), - TRAILBLAZER(WOODCUTTING_TRAILBLAZER, TRAILBLAZER_AXE); + TRAILBLAZER(WOODCUTTING_TRAILBLAZER, INFERNAL_AXE_OR); private final Integer animId; private final Integer itemId; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java index 8f9b9060b5..b10e2a0667 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java @@ -40,7 +40,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -import javax.imageio.ImageIO; import javax.inject.Inject; import javax.swing.SwingUtilities; import lombok.AccessLevel; @@ -83,6 +82,7 @@ import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.util.ExecutorServiceExceptionLogger; import net.runelite.client.util.HotkeyListener; +import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; import net.runelite.client.util.WorldUtil; import net.runelite.http.api.worlds.World; @@ -190,12 +190,7 @@ public class WorldHopperPlugin extends Plugin panel = new WorldSwitcherPanel(this); - final BufferedImage icon; - synchronized (ImageIO.class) - { - icon = ImageIO.read(getClass().getResourceAsStream("icon.png")); - } - + BufferedImage icon = ImageUtil.loadImageResource(WorldHopperPlugin.class, "icon.png"); navButton = NavigationButton.builder() .tooltip("World Switcher") .icon(icon) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableHeader.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableHeader.java index 1004bc7016..ecaaae1fbf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableHeader.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableHeader.java @@ -54,7 +54,7 @@ class WorldTableHeader extends JPanel static { - final BufferedImage arrowDown = ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "arrow_down.png"); + final BufferedImage arrowDown = ImageUtil.loadImageResource(WorldHopperPlugin.class, "arrow_down.png"); final BufferedImage arrowUp = ImageUtil.rotateImage(arrowDown, Math.PI); final BufferedImage arrowUpFaded = ImageUtil.luminanceOffset(arrowUp, -80); ARROW_UP = new ImageIcon(arrowUpFaded); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java index 6361c123c8..11f9c8b261 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldTableRow.java @@ -66,10 +66,10 @@ class WorldTableRow extends JPanel static { - FLAG_AUS = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_aus.png")); - FLAG_UK = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_uk.png")); - FLAG_US = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_us.png")); - FLAG_GER = new ImageIcon(ImageUtil.getResourceStreamFromClass(WorldHopperPlugin.class, "flag_ger.png")); + FLAG_AUS = new ImageIcon(ImageUtil.loadImageResource(WorldHopperPlugin.class, "flag_aus.png")); + FLAG_UK = new ImageIcon(ImageUtil.loadImageResource(WorldHopperPlugin.class, "flag_uk.png")); + FLAG_US = new ImageIcon(ImageUtil.loadImageResource(WorldHopperPlugin.class, "flag_us.png")); + FLAG_GER = new ImageIcon(ImageUtil.loadImageResource(WorldHopperPlugin.class, "flag_ger.png")); } private final JMenuItem favoriteMenuOption = new JMenuItem(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java index 21358d1e0f..b01f709250 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/MiningSiteLocation.java @@ -40,6 +40,9 @@ enum MiningSiteLocation new Rock(3, Ore.COPPER), new Rock(1, Ore.TIN), new Rock(7, Ore.IRON), new Rock(5, Ore.SILVER), new Rock(3, Ore.COAL), new Rock(3, Ore.MITHRIL), new Rock(2, Ore.ADAMANTITE)), AL_KHARID_MINE_SOUTH(new WorldPoint(3298, 3282, 0), new Rock(2, Ore.IRON), new Rock(2, Ore.GOLD)), + ANCIENT_CAVERN_NORTH(new WorldPoint(1847, 5414, 0), new Rock(4, Ore.MITHRIL)), + ANCIENT_CAVERN_SOUTH(new WorldPoint(1826, 5392, 0), new Rock(2, Ore.MITHRIL)), + ANCIENT_CAVERN_MIDDLE(new WorldPoint(1840, 5397, 0), new Rock(8, Ore.MITHRIL)), ARANDAR(new WorldPoint(2322, 3269, 0), new Rock(8, Ore.LIMESTONE)), ARANDAR_PRIFDDINAS_MAP(new WorldPoint(3346, 6021, 0), new Rock(8, Ore.LIMESTONE)), ARCEUUS_NORTH(new WorldPoint(1763, 3860, 0), new Rock(1, Ore.DENSE_ESSENCE)), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java index 11cdad457f..d09ced3ce9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/RunecraftingAltarPoint.java @@ -33,7 +33,7 @@ class RunecraftingAltarPoint extends WorldMapPoint RunecraftingAltarPoint(RunecraftingAltarLocation point) { super(point.getLocation(), WorldMapPlugin.BLANK_ICON); - setImage(ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, point.getIconPath())); + setImage(ImageUtil.loadImageResource(WorldMapPlugin.class, point.getIconPath())); setTooltip(point.getTooltip()); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportPoint.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportPoint.java index c8c2a778cb..a1171cfbc6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportPoint.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/TeleportPoint.java @@ -34,6 +34,6 @@ class TeleportPoint extends WorldMapPoint { super(data.getLocation(), WorldMapPlugin.BLANK_ICON); setTooltip(data.getTooltip()); - setImage(ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, data.getIconPath())); + setImage(ImageUtil.loadImageResource(WorldMapPlugin.class, data.getIconPath())); } } 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 dc0d25a722..518edd0668 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 @@ -101,31 +101,31 @@ public class WorldMapPlugin extends Plugin BLANK_ICON = new BufferedImage(iconBufferSize, iconBufferSize, BufferedImage.TYPE_INT_ARGB); FAIRY_TRAVEL_ICON = new BufferedImage(iconBufferSize, iconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage fairyTravelIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "fairy_ring_travel.png"); + final BufferedImage fairyTravelIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "fairy_ring_travel.png"); FAIRY_TRAVEL_ICON.getGraphics().drawImage(fairyTravelIcon, 1, 1, null); NOPE_ICON = new BufferedImage(iconBufferSize, iconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage nopeImage = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "nope_icon.png"); + final BufferedImage nopeImage = ImageUtil.loadImageResource(WorldMapPlugin.class, "nope_icon.png"); NOPE_ICON.getGraphics().drawImage(nopeImage, 1, 1, null); NOT_STARTED_ICON = new BufferedImage(questIconBufferSize, questIconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage notStartedIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "quest_not_started_icon.png"); + final BufferedImage notStartedIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "quest_not_started_icon.png"); NOT_STARTED_ICON.getGraphics().drawImage(notStartedIcon, 4, 4, null); STARTED_ICON = new BufferedImage(questIconBufferSize, questIconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage startedIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "quest_started_icon.png"); + final BufferedImage startedIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "quest_started_icon.png"); STARTED_ICON.getGraphics().drawImage(startedIcon, 4, 4, null); FINISHED_ICON = new BufferedImage(questIconBufferSize, questIconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage finishedIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "quest_completed_icon.png"); + final BufferedImage finishedIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "quest_completed_icon.png"); FINISHED_ICON.getGraphics().drawImage(finishedIcon, 4, 4, null); MINING_SITE_ICON = new BufferedImage(iconBufferSize, iconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage miningSiteIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "mining_site_icon.png"); + final BufferedImage miningSiteIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "mining_site_icon.png"); MINING_SITE_ICON.getGraphics().drawImage(miningSiteIcon, 1, 1, null); ROOFTOP_COURSE_ICON = new BufferedImage(iconBufferSize, iconBufferSize, BufferedImage.TYPE_INT_ARGB); - final BufferedImage rooftopCourseIcon = ImageUtil.getResourceStreamFromClass(WorldMapPlugin.class, "rooftop_course_icon.png"); + final BufferedImage rooftopCourseIcon = ImageUtil.loadImageResource(WorldMapPlugin.class, "rooftop_course_icon.png"); ROOFTOP_COURSE_ICON.getGraphics().drawImage(rooftopCourseIcon, 1, 1, null); } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java index 9ae532a8db..4fd1f02516 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java @@ -157,7 +157,7 @@ public class XpTrackerPlugin extends Plugin { xpPanel = new XpPanel(this, xpTrackerConfig, client, skillIconManager); - final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "/skill_icons/overall.png"); + final BufferedImage icon = ImageUtil.loadImageResource(getClass(), "/skill_icons/overall.png"); navButton = NavigationButton.builder() .tooltip("XP Tracker") diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/zalcano/ZalcanoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/zalcano/ZalcanoPlugin.java index fdaa151b29..b529c54aef 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/zalcano/ZalcanoPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/zalcano/ZalcanoPlugin.java @@ -265,6 +265,7 @@ public class ZalcanoPlugin extends Plugin private boolean isHealthbarActive() { - return client.getVar(VarPlayer.ZALCANO_FORM) != -1; + int npcId = client.getVar(VarPlayer.HP_HUD_NPC_ID); + return npcId == ZALCANO_WEAKENED || npcId == ZALCANO; } } 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 b145ab8496..a33c6c4757 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 @@ -108,7 +108,7 @@ public class ClientUI private static final String CONFIG_CLIENT_BOUNDS = "clientBounds"; private static final String CONFIG_CLIENT_MAXIMIZED = "clientMaximized"; private static final String CONFIG_CLIENT_SIDEBAR_CLOSED = "clientSidebarClosed"; - public static final BufferedImage ICON = ImageUtil.getResourceStreamFromClass(ClientUI.class, "/openosrs.png"); + public static final BufferedImage ICON = ImageUtil.loadImageResource(ClientUI.class, "/openosrs.png"); @Getter private TrayIcon trayIcon; @@ -128,8 +128,9 @@ public class ClientUI private boolean withTitleBar; private BufferedImage sidebarOpenIcon; private BufferedImage sidebarClosedIcon; + @Getter - private static ContainableFrame frame; + public static ContainableFrame frame; private JPanel navContainer; private PluginPanel pluginPanel; private ClientPluginToolbar pluginToolbar; @@ -475,7 +476,7 @@ public class ClientUI // Create hide sidebar button - sidebarOpenIcon = ImageUtil.getResourceStreamFromClass(ClientUI.class, withTitleBar ? "open.png" : "open_rs.png"); + sidebarOpenIcon = ImageUtil.loadImageResource(ClientUI.class, withTitleBar ? "open.png" : "open_rs.png"); sidebarClosedIcon = ImageUtil.flipImage(sidebarOpenIcon, true, false); sidebarNavigationButton = NavigationButton diff --git a/runelite-client/src/main/java/net/runelite/client/ui/FatalErrorDialog.java b/runelite-client/src/main/java/net/runelite/client/ui/FatalErrorDialog.java index dcf1b9fe48..23591f8dcf 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/FatalErrorDialog.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/FatalErrorDialog.java @@ -81,7 +81,7 @@ public class FatalErrorDialog extends JDialog try { - BufferedImage logo = ImageUtil.getResourceStreamFromClass(FatalErrorDialog.class, "runelite_transparent.png"); + BufferedImage logo = ImageUtil.loadImageResource(FatalErrorDialog.class, "runelite_transparent.png"); setIconImage(logo); JLabel runelite = new JLabel(); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index e1666d8b14..5c01f578c8 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -266,29 +266,35 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener else { final Rectangle bounds = overlay.getBounds(); - final Point location = bounds.getLocation(); final Dimension dimension = bounds.getSize(); - final Point preferredLocation = overlay.getPreferredLocation(); + Point location; // If the final position is not modified, layout it if (overlayPosition != OverlayPosition.DETACHED && (preferredLocation == null || overlay.getPreferredPosition() != null)) { final Rectangle snapCorner = snapCorners.forPosition(overlayPosition); - final Point translation = OverlayUtil.transformPosition(overlayPosition, dimension); - location.setLocation(snapCorner.getX() + translation.x, snapCorner.getY() + translation.y); - final Point padding = OverlayUtil.padPosition(overlayPosition, dimension, PADDING); - snapCorner.translate(padding.x, padding.y); + final Point translation = OverlayUtil.transformPosition(overlayPosition, dimension); // offset from corner + // Target x/y to draw the overlay + int destX = (int) snapCorner.getX() + translation.x; + int destY = (int) snapCorner.getY() + translation.y; + // Clamp the target position to ensure it is on screen or within parent bounds + location = clampOverlayLocation(destX, destY, dimension.width, dimension.height, overlay); + // Diff final position to target position in order to add it to the snap corner padding. The + // overlay effectively takes up the difference of (clamped location - target location) in + // addition to its normal dimensions. + int dX = location.x - destX; + int dY = location.y - destY; + final Point padding = OverlayUtil.padPosition(overlayPosition, dimension, PADDING); // overlay size + fixed padding + // translate corner for padding and any difference due to the position clamping + snapCorner.translate(padding.x + dX, padding.y + dY); } else { - if (preferredLocation != null) - { - location.setLocation(preferredLocation); - } + location = preferredLocation != null ? preferredLocation : bounds.getLocation(); // Clamp the overlay position to ensure it is on screen or within parent bounds - clampOverlayLocation(location, dimension.width, dimension.height, overlay); + location = clampOverlayLocation(location.x, location.y, dimension.width, dimension.height, overlay); } if (overlay.getPreferredSize() != null) @@ -605,7 +611,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener // Clamp drag to parent component final Rectangle overlayBounds = currentManagedOverlay.getBounds(); - clampOverlayLocation(overlayPosition, overlayBounds.width, overlayBounds.height, currentManagedOverlay); + overlayPosition = clampOverlayLocation(overlayPosition.x, overlayPosition.y, overlayBounds.width, overlayBounds.height, currentManagedOverlay); currentManagedOverlay.setPreferredPosition(null); currentManagedOverlay.setPreferredLocation(overlayPosition); } @@ -920,12 +926,14 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener /** * Adjust the given overlay position to be within its parent's bounds. * - * @param overlayPosition the overlay position, which is modified in place + * @param overlayX + * @param overlayY * @param overlayWidth * @param overlayHeight - * @param overlay the overlay + * @param overlay the overlay + * @return the clamped position */ - private void clampOverlayLocation(Point overlayPosition, int overlayWidth, int overlayHeight, Overlay overlay) + private Point clampOverlayLocation(int overlayX, int overlayY, int overlayWidth, int overlayHeight, Overlay overlay) { Rectangle parentBounds = overlay.getParentBounds(); if (parentBounds == null || parentBounds.isEmpty()) @@ -936,9 +944,11 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener } // Constrain overlay position to be within the parent bounds - overlayPosition.x = Ints.constrainToRange(overlayPosition.x, parentBounds.x, - Math.max(parentBounds.x, parentBounds.width - overlayWidth)); - overlayPosition.y = Ints.constrainToRange(overlayPosition.y, parentBounds.y, - Math.max(parentBounds.y, parentBounds.height - overlayHeight)); + return new Point( + Ints.constrainToRange(overlayX, parentBounds.x, + Math.max(parentBounds.x, parentBounds.width - overlayWidth)), + Ints.constrainToRange(overlayY, parentBounds.y, + Math.max(parentBounds.y, parentBounds.height - overlayHeight)) + ); } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java index e5fc071ae3..7a59965f68 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayUtil.java @@ -217,8 +217,6 @@ public class OverlayUtil break; case TOP_LEFT: case TOP_CENTER: - result.y += dimension.height + (dimension.height == 0 ? 0 : padding); - break; case CANVAS_TOP_RIGHT: case TOP_RIGHT: result.y += dimension.height + (dimension.height == 0 ? 0 : padding); @@ -242,18 +240,18 @@ public class OverlayUtil case TOP_LEFT: break; case TOP_CENTER: - result.x = result.x - dimension.width / 2; + result.x = -dimension.width / 2; break; case BOTTOM_LEFT: - result.y = result.y - dimension.height; + result.y = -dimension.height; break; case BOTTOM_RIGHT: case ABOVE_CHATBOX_RIGHT: - result.y = result.y - dimension.height; + result.y = -dimension.height; // FALLTHROUGH case CANVAS_TOP_RIGHT: case TOP_RIGHT: - result.x = result.x - dimension.width; + result.x = -dimension.width; break; } diff --git a/runelite-client/src/main/java/net/runelite/client/util/ImageUtil.java b/runelite-client/src/main/java/net/runelite/client/util/ImageUtil.java index 9c04a15d33..3efeabcfa4 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/ImageUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/util/ImageUtil.java @@ -34,12 +34,10 @@ import java.awt.image.BufferedImage; import java.awt.image.DirectColorModel; import java.awt.image.PixelGrabber; import java.awt.image.RescaleOp; -import java.awt.image.WritableRaster; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.function.Predicate; import javax.imageio.ImageIO; import javax.swing.GrayFilter; import lombok.extern.slf4j.Slf4j; @@ -333,16 +331,25 @@ public class ImageUtil return outlinedImage; } + /** + * @see #loadImageResource(Class, String) + */ + @Deprecated + public static BufferedImage getResourceStreamFromClass(Class c, String path) + { + return loadImageResource(c, path); + } + /** * Reads an image resource from a given path relative to a given class. * This method is primarily shorthand for the synchronization and error handling required for - * loading image resources from classes. + * loading image resources from the classpath. * - * @param c The class to be referenced for resource path. + * @param c The class to be referenced for the package path. * @param path The path, relative to the given class. * @return A {@link BufferedImage} of the loaded image resource from the given path. */ - public static BufferedImage getResourceStreamFromClass(final Class c, final String path) + public static BufferedImage loadImageResource(final Class c, final String path) { try { @@ -361,7 +368,7 @@ public class ImageUtil } else { - filePath = c.getPackage().getName().replace(".", "/") + "/" + path; + filePath = c.getPackage().getName().replace('.', '/') + "/" + path; } log.warn("Failed to load image from class: {}, path: {}", c.getName(), filePath); @@ -400,56 +407,6 @@ public class ImageUtil return filledImage; } - /** - * Recolors pixels of the given image with the given color based on a given recolor condition - * predicate. - * - * @param image The image which should have its non-transparent pixels recolored. - * @param color The color with which to recolor pixels. - * @param recolorCondition The condition on which to recolor pixels with the given color. - * @return The given image with all pixels fulfilling the recolor condition predicate - * set to the given color. - */ - public static BufferedImage recolorImage(final BufferedImage image, final Color color, final Predicate recolorCondition) - { - final BufferedImage recoloredImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB); - for (int x = 0; x < recoloredImage.getWidth(); x++) - { - for (int y = 0; y < recoloredImage.getHeight(); y++) - { - final Color pixelColor = new Color(image.getRGB(x, y), true); - if (!recolorCondition.test(pixelColor)) - { - recoloredImage.setRGB(x, y, image.getRGB(x, y)); - continue; - } - - recoloredImage.setRGB(x, y, color.getRGB()); - } - } - return recoloredImage; - } - - public static BufferedImage recolorImage(BufferedImage image, final Color color) - { - int width = image.getWidth(); - int height = image.getHeight(); - WritableRaster raster = image.getRaster(); - - for (int xx = 0; xx < width; xx++) - { - for (int yy = 0; yy < height; yy++) - { - int[] pixels = raster.getPixel(xx, yy, (int[]) null); - pixels[0] = color.getRed(); - pixels[1] = color.getGreen(); - pixels[2] = color.getBlue(); - raster.setPixel(xx, yy, pixels); - } - } - return image; - } - /** * Performs a rescale operation on the image's color components. * diff --git a/runelite-client/src/main/resources/udp-openosrs.xml b/runelite-client/src/main/resources/udp-openosrs.xml new file mode 100644 index 0000000000..f117e8b88f --- /dev/null +++ b/runelite-client/src/main/resources/udp-openosrs.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + +