().
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+