diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java
index c9e857a099..d3cc6903b2 100644
--- a/runelite-api/src/main/java/net/runelite/api/Client.java
+++ b/runelite-api/src/main/java/net/runelite/api/Client.java
@@ -420,7 +420,6 @@ public interface Client extends OAuthApi, GameEngine
*
* (getLocalPlayerIndex returns the local index, useful for menus/interacting)
*/
- @Nullable
Player getLocalPlayer();
int getLocalPlayerIndex();
diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
index cee4740dc7..9130cbb270 100644
--- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
@@ -452,4 +452,10 @@ public final class ScriptID
@ScriptArguments(integer = 6)
public static final int INVENTORY_DRAWITEM = 6011;
+
+ /**
+ * Initializes the trade interface
+ */
+ @ScriptArguments(integer = 6)
+ public static final int TRADE_MAIN_INIT = 755;
}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
index 46241c342c..efd0b06444 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
@@ -188,6 +188,7 @@ public final class WidgetID
public static final int GROUP_STORAGE_INVENTORY_GROUP_ID = 725;
public static final int GROUP_STORAGE_GROUP_ID = 724;
public static final int WILDERNESS_LOOT_CHEST = 742;
+ public static final int TRADE_WINDOW_GROUP_ID = 335;
static class WorldMap
{
@@ -1367,4 +1368,9 @@ public final class WidgetID
static final int HEADER = 1;
static final int MEMBERS = 6;
}
+
+ static class Trade
+ {
+ static final int HEADER = 31;
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
index 8c239ba65a..f444f81857 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
@@ -930,6 +930,8 @@ public enum WidgetInfo
SHOP_ITEMS_CONTAINER(WidgetID.SHOP_GROUP_ID, WidgetID.Shop.ITEMS_CONTAINER),
POH_TREASURE_CHEST_INVENTORY_CONTAINER(WidgetID.POH_TREASURE_CHEST_INVENTORY_GROUP_ID, 0),
+
+ TRADE_WINDOW_HEADER(WidgetID.TRADE_WINDOW_GROUP_ID, WidgetID.Trade.HEADER),
;
private final int groupId;
diff --git a/runelite-client/pmd-ruleset.xml b/runelite-client/pmd-ruleset.xml
index ebab6e2dcf..cfbbdec60e 100644
--- a/runelite-client/pmd-ruleset.xml
+++ b/runelite-client/pmd-ruleset.xml
@@ -53,13 +53,14 @@
-
+
+
@@ -84,18 +85,20 @@
-
-
-
+
+
+
+
+
diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java
index 1b8afd0924..e6b3722cd8 100644
--- a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java
+++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java
@@ -34,7 +34,7 @@ public class ChatMessageBuilder
public ChatMessageBuilder append(final ChatColorType type)
{
- builder.append("
");
+ builder.append("');
return this;
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WidgetInspector.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WidgetInspector.java
index 1bab167afb..4ddbc7af57 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WidgetInspector.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/WidgetInspector.java
@@ -447,7 +447,7 @@ class WidgetInspector extends DevToolsFrame
picker = parent.createChild(-1, WidgetType.GRAPHIC);
- log.info("Picker is {}.{} [{}]", WidgetInfo.TO_GROUP(picker.getId()), WidgetInfo.TO_CHILD(picker.getId()), picker.getIndex());
+ log.info("Picker is {}.{} [{}]", TO_GROUP(picker.getId()), TO_CHILD(picker.getId()), picker.getIndex());
picker.setSpriteId(SpriteID.MOBILE_FINGER_ON_INTERFACE);
picker.setOriginalWidth(15);
@@ -521,7 +521,7 @@ class WidgetInspector extends DevToolsFrame
{
continue;
}
- String name = WidgetInfo.TO_GROUP(entry.getParam1()) + "." + WidgetInfo.TO_CHILD(entry.getParam1());
+ String name = TO_GROUP(entry.getParam1()) + "." + TO_CHILD(entry.getParam1());
if (entry.getParam0() != -1)
{
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 7582517cfe..63e134ce70 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
@@ -445,7 +445,7 @@ public class FishingPlugin extends Plugin
if (seconds < 10)
{
- trawlerText.append("0");
+ trawlerText.append('0');
}
trawlerText.append(seconds);
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/OpenCLManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/OpenCLManager.java
index 634b4cb473..14e6945019 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/OpenCLManager.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/OpenCLManager.java
@@ -41,7 +41,6 @@ import jogamp.opengl.x11.glx.X11GLXContext;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.plugins.gpu.template.Template;
import net.runelite.client.util.OSType;
-import org.jocl.CL;
import static org.jocl.CL.*;
import org.jocl.CLException;
import org.jocl.Pointer;
@@ -96,7 +95,7 @@ class OpenCLManager
void init(GL4 gl)
{
- CL.setExceptionsEnabled(true);
+ setExceptionsEnabled(true);
switch (OSType.getOSType())
{
@@ -121,55 +120,55 @@ class OpenCLManager
{
if (programUnordered != null)
{
- CL.clReleaseProgram(programUnordered);
+ clReleaseProgram(programUnordered);
programUnordered = null;
}
if (programSmall != null)
{
- CL.clReleaseProgram(programSmall);
+ clReleaseProgram(programSmall);
programSmall = null;
}
if (programLarge != null)
{
- CL.clReleaseProgram(programLarge);
+ clReleaseProgram(programLarge);
programLarge = null;
}
if (kernelUnordered != null)
{
- CL.clReleaseKernel(kernelUnordered);
+ clReleaseKernel(kernelUnordered);
kernelUnordered = null;
}
if (kernelSmall != null)
{
- CL.clReleaseKernel(kernelSmall);
+ clReleaseKernel(kernelSmall);
kernelSmall = null;
}
if (kernelLarge != null)
{
- CL.clReleaseKernel(kernelLarge);
+ clReleaseKernel(kernelLarge);
kernelLarge = null;
}
if (commandQueue != null)
{
- CL.clReleaseCommandQueue(commandQueue);
+ clReleaseCommandQueue(commandQueue);
commandQueue = null;
}
if (context != null)
{
- CL.clReleaseContext(context);
+ clReleaseContext(context);
context = null;
}
if (device != null)
{
- CL.clReleaseDevice(device);
+ clReleaseDevice(device);
device = null;
}
}
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 e5cb354169..3d97b3d5bc 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
@@ -829,7 +829,7 @@ public class GrandExchangePlugin extends Plugin
if (resetTime != null)
{
Duration remaining = Duration.between(Instant.now(), resetTime);
- sb.append(" (").append(DurationFormatUtils.formatDuration(remaining.toMillis(), "H:mm")).append(")");
+ sb.append(" (").append(DurationFormatUtils.formatDuration(remaining.toMillis(), "H:mm")).append(')');
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
index 221094b01f..b54cb58bd8 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsOverlay.java
@@ -246,7 +246,7 @@ public class GroundItemsOverlay extends Overlay
{
itemStringBuilder.append(" (")
.append(QuantityFormatter.quantityToStackSize(item.getQuantity()))
- .append(")");
+ .append(')');
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
index f0dd02dd71..f200998f59 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
@@ -663,7 +663,7 @@ public class GroundItemsPlugin extends Plugin
{
notificationStringBuilder.append(" (")
.append(QuantityFormatter.quantityToStackSize(item.getQuantity()))
- .append(")");
+ .append(')');
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java
index bdc0f8d8c1..9be50e16ea 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatOverlay.java
@@ -173,7 +173,7 @@ public class ItemStatOverlay extends Overlay
Duration highestDuration = durationRange.getHighestDuration();
if (lowestDuration != highestDuration)
{
- sb.append("~");
+ sb.append('~');
sb.append(DurationFormatUtils.formatDuration(highestDuration.toMillis(), "m:ss"));
}
}
@@ -381,7 +381,7 @@ public class ItemStatOverlay extends Overlay
{
if (config.relative())
{
- b.append("/");
+ b.append('/');
}
b.append(c.getFormattedTheoretical());
}
@@ -397,9 +397,9 @@ public class ItemStatOverlay extends Overlay
if (config.absolute() && (config.relative() || config.theoretical()))
{
- b.append(")");
+ b.append(')');
}
- b.append(" ").append(c.getStat().getName());
+ b.append(' ').append(c.getStat().getName());
b.append("");
return b.toString();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Bookcase.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Bookcase.java
index ee7d7d295d..d383037070 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Bookcase.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Bookcase.java
@@ -106,7 +106,7 @@ class Bookcase
b.append("Center");
}
- b.append(" ");
+ b.append(' ');
switch (location.getPlane())
{
@@ -123,7 +123,7 @@ class Bookcase
if (KourendLibraryPlugin.debug)
{
- b.append(" ").append(index.stream().map(Object::toString).collect(Collectors.joining(", ")));
+ b.append(' ').append(index.stream().map(Object::toString).collect(Collectors.joining(", ")));
}
return b.toString();
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Library.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Library.java
index a77473853b..282c02ab6a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Library.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/Library.java
@@ -79,7 +79,7 @@ class Library
Library()
{
populateBooks();
- step = byIndex.size() / Book.values().length;
+ step = byIndex.size() / values().length;
reset();
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/AggressionTimer.java b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/AggressionTimer.java
index 7194d2ddd6..2d5f4df4f1 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/AggressionTimer.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/AggressionTimer.java
@@ -29,22 +29,17 @@ import java.awt.image.BufferedImage;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import lombok.Getter;
-import lombok.Setter;
-import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.infobox.Timer;
class AggressionTimer extends Timer
{
- @Getter
- @Setter
- private boolean visible;
+ private final NpcAggroAreaPlugin plugin;
- AggressionTimer(Duration duration, BufferedImage image, Plugin plugin, boolean visible)
+ AggressionTimer(Duration duration, BufferedImage image, NpcAggroAreaPlugin plugin)
{
super(duration.toMillis(), ChronoUnit.MILLIS, image, plugin);
setTooltip("Time until NPCs become unaggressive");
- this.visible = visible;
+ this.plugin = plugin;
}
@Override
@@ -63,6 +58,6 @@ class AggressionTimer extends Timer
@Override
public boolean render()
{
- return visible && super.render();
+ return plugin.shouldDisplayTimer() && super.render();
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaOverlay.java
index 5aad9ce8c6..72691c4dac 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaOverlay.java
@@ -84,8 +84,7 @@ class NpcAggroAreaOverlay extends Overlay
}
Color outlineColor = config.unaggroAreaColor();
- AggressionTimer timer = plugin.getCurrentTimer();
- if (outlineColor == null || timer == null || Instant.now().compareTo(timer.getEndTime()) < 0)
+ if (outlineColor == null || (plugin.getEndTime() != null && Instant.now().isBefore(plugin.getEndTime())))
{
outlineColor = config.aggroAreaColor();
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
index 148876e631..359d306e7b 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
@@ -82,7 +82,7 @@ public class NpcAggroAreaPlugin extends Plugin
private static final int SAFE_AREA_RADIUS = 10;
private static final int UNKNOWN_AREA_RADIUS = SAFE_AREA_RADIUS * 2;
- private static final int AGGRESSIVE_TIME_SECONDS = 600;
+ private static final Duration AGGRESSIVE_TIME_DURATION = Duration.ofSeconds(600);
private static final Splitter NAME_SPLITTER = Splitter.on(',').omitEmptyStrings().trimResults();
private static final WorldArea WILDERNESS_ABOVE_GROUND = new WorldArea(2944, 3523, 448, 448, 0);
private static final WorldArea WILDERNESS_UNDERGROUND = new WorldArea(2944, 9918, 320, 442, 0);
@@ -124,7 +124,7 @@ public class NpcAggroAreaPlugin extends Plugin
private boolean active;
@Getter
- private AggressionTimer currentTimer;
+ private Instant endTime;
private WorldPoint lastPlayerLocation;
private WorldPoint previousUnknownCenter;
@@ -156,7 +156,7 @@ public class NpcAggroAreaPlugin extends Plugin
overlayManager.remove(notWorkingOverlay);
Arrays.fill(safeCenters, null);
lastPlayerLocation = null;
- currentTimer = null;
+ endTime = null;
loggingIn = false;
npcNamePatterns = null;
active = false;
@@ -193,16 +193,6 @@ public class NpcAggroAreaPlugin extends Plugin
coords[1] = lp.getY() - Perspective.LOCAL_TILE_SIZE / 2f;
}
- private void reevaluateActive()
- {
- if (currentTimer != null)
- {
- currentTimer.setVisible(active && config.showTimer());
- }
-
- calculateLinesToDisplay();
- }
-
private void calculateLinesToDisplay()
{
if (!active || !config.showAreaLines())
@@ -227,23 +217,29 @@ public class NpcAggroAreaPlugin extends Plugin
private void removeTimer()
{
- infoBoxManager.removeInfoBox(currentTimer);
- currentTimer = null;
+ infoBoxManager.removeIf(t -> t instanceof AggressionTimer);
+ endTime = null;
notifyOnce = false;
}
private void createTimer(Duration duration)
{
removeTimer();
- BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
- currentTimer = new AggressionTimer(duration, image, this, active && config.showTimer());
- infoBoxManager.addInfoBox(currentTimer);
+ endTime = Instant.now().plus(duration);
notifyOnce = true;
+
+ if (duration.isNegative())
+ {
+ return;
+ }
+
+ BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
+ infoBoxManager.addInfoBox(new AggressionTimer(duration, image, this));
}
private void resetTimer()
{
- createTimer(Duration.ofSeconds(AGGRESSIVE_TIME_SECONDS));
+ createTimer(AGGRESSIVE_TIME_DURATION);
}
private static boolean isInWilderness(WorldPoint location)
@@ -301,7 +297,7 @@ public class NpcAggroAreaPlugin extends Plugin
}
}
- reevaluateActive();
+ calculateLinesToDisplay();
}
private void recheckActive()
@@ -326,7 +322,7 @@ public class NpcAggroAreaPlugin extends Plugin
{
WorldPoint newLocation = client.getLocalPlayer().getWorldLocation();
- if (active && currentTimer != null && currentTimer.cull() && notifyOnce)
+ if (active && notifyOnce && Instant.now().isAfter(endTime))
{
if (config.notifyExpire())
{
@@ -387,12 +383,6 @@ public class NpcAggroAreaPlugin extends Plugin
case "npcUnaggroAlwaysActive":
recheckActive();
break;
- case "npcUnaggroShowTimer":
- if (currentTimer != null)
- {
- currentTimer.setVisible(active && config.showTimer());
- }
- break;
case "npcUnaggroCollisionDetection":
case "npcUnaggroShowAreaLines":
calculateLinesToDisplay();
@@ -404,6 +394,11 @@ public class NpcAggroAreaPlugin extends Plugin
}
}
+ boolean shouldDisplayTimer()
+ {
+ return active && config.showTimer();
+ }
+
private void loadConfig()
{
safeCenters[0] = configManager.getConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_CENTER1, WorldPoint.class);
@@ -411,7 +406,7 @@ public class NpcAggroAreaPlugin extends Plugin
lastPlayerLocation = configManager.getConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_LOCATION, WorldPoint.class);
Duration timeLeft = configManager.getConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_DURATION, Duration.class);
- if (timeLeft != null && !timeLeft.isNegative())
+ if (timeLeft != null)
{
createTimer(timeLeft);
}
@@ -427,7 +422,7 @@ public class NpcAggroAreaPlugin extends Plugin
private void saveConfig()
{
- if (safeCenters[0] == null || safeCenters[1] == null || lastPlayerLocation == null || currentTimer == null)
+ if (safeCenters[0] == null || safeCenters[1] == null || lastPlayerLocation == null || endTime == null)
{
resetConfig();
}
@@ -436,7 +431,7 @@ public class NpcAggroAreaPlugin extends Plugin
configManager.setConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_CENTER1, safeCenters[0]);
configManager.setConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_CENTER2, safeCenters[1]);
configManager.setConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_LOCATION, lastPlayerLocation);
- configManager.setConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_DURATION, Duration.between(Instant.now(), currentTimer.getEndTime()));
+ configManager.setConfiguration(NpcAggroAreaConfig.CONFIG_GROUP, NpcAggroAreaConfig.CONFIG_DURATION, Duration.between(Instant.now(), endTime));
}
}
@@ -486,6 +481,7 @@ public class NpcAggroAreaPlugin extends Plugin
safeCenters[0] = null;
safeCenters[1] = null;
lastPlayerLocation = null;
+ endTime = null;
break;
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java
index 495e37283d..dd2c0821b9 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/playerindicators/PlayerIndicatorsPlugin.java
@@ -42,12 +42,17 @@ import static net.runelite.api.MenuAction.PLAYER_SEVENTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_SIXTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_THIRD_OPTION;
import static net.runelite.api.MenuAction.RUNELITE_PLAYER;
-import static net.runelite.api.MenuAction.WIDGET_TARGET_ON_PLAYER;
import static net.runelite.api.MenuAction.WALK;
+import static net.runelite.api.MenuAction.WIDGET_TARGET_ON_PLAYER;
import net.runelite.api.MenuEntry;
import net.runelite.api.Player;
+import net.runelite.api.ScriptID;
import net.runelite.api.clan.ClanTitle;
import net.runelite.api.events.ClientTick;
+import net.runelite.api.events.ScriptPostFired;
+import net.runelite.api.widgets.Widget;
+import net.runelite.api.widgets.WidgetInfo;
+import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ChatIconManager;
@@ -63,6 +68,8 @@ import net.runelite.client.util.ColorUtil;
)
public class PlayerIndicatorsPlugin extends Plugin
{
+ private static final String TRADING_WITH_TEXT = "Trading with: ";
+
@Inject
private OverlayManager overlayManager;
@@ -87,6 +94,9 @@ public class PlayerIndicatorsPlugin extends Plugin
@Inject
private ChatIconManager chatIconManager;
+ @Inject
+ private ClientThread clientThread;
+
@Provides
PlayerIndicatorsConfig provideConfig(ConfigManager configManager)
{
@@ -249,6 +259,44 @@ public class PlayerIndicatorsPlugin extends Plugin
return newTarget;
}
+ @Subscribe
+ public void onScriptPostFired(ScriptPostFired event)
+ {
+ if (event.getScriptId() == ScriptID.TRADE_MAIN_INIT)
+ {
+ clientThread.invokeLater(() ->
+ {
+ Widget tradeTitle = client.getWidget(WidgetInfo.TRADE_WINDOW_HEADER);
+ String header = tradeTitle.getText();
+ String playerName = header.substring(TRADING_WITH_TEXT.length());
+
+ Player targetPlayer = findPlayer(playerName);
+ if (targetPlayer == null)
+ {
+ return;
+ }
+
+ Decorations playerColor = getDecorations(targetPlayer);
+ if (playerColor != null)
+ {
+ tradeTitle.setText(TRADING_WITH_TEXT + ColorUtil.wrapWithColorTag(playerName, playerColor.color));
+ }
+ });
+ }
+ }
+
+ private Player findPlayer(String name)
+ {
+ for (Player player : client.getPlayers())
+ {
+ if (player.getName().equals(name))
+ {
+ return player;
+ }
+ }
+ return null;
+ }
+
@Value
private static class Decorations
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java b/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java
index 662aac5981..24b89a6b0f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/raids/Raid.java
@@ -144,7 +144,7 @@ public class Raid
}
else
{
- builder.append(" ");
+ builder.append(' ');
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runenergy/RunEnergyOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runenergy/RunEnergyOverlay.java
index 9ca4c40d6b..e897bd8698 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/runenergy/RunEnergyOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/runenergy/RunEnergyOverlay.java
@@ -83,7 +83,7 @@ class RunEnergyOverlay extends Overlay
if (config.replaceOrbText())
{
- sb.append("Run Energy: ").append(client.getEnergy()).append("%");
+ sb.append("Run Energy: ").append(client.getEnergy()).append('%');
}
else
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java
index 65aef7813b..bf78790b1f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchOverlay.java
@@ -106,7 +106,7 @@ public class RunepouchOverlay extends WidgetItemOverlay
tooltipBuilder
.append(amount)
- .append(" ")
+ .append(' ')
.append(ColorUtil.wrapWithColorTag(rune.getName(), Color.YELLOW))
.append("");
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
index 9e15b87626..f47c9b9483 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
@@ -855,7 +855,7 @@ public class SlayerPlugin extends Plugin
sb.append(task.getTask());
if (!Strings.isNullOrEmpty(task.getLocation()))
{
- sb.append(" (").append(task.getLocation()).append(")");
+ sb.append(" (").append(task.getLocation()).append(')');
}
sb.append(": ");
if (killed < 0)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TabContentPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TabContentPanel.java
index b24f108182..101e589cd5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TabContentPanel.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TabContentPanel.java
@@ -82,7 +82,7 @@ public abstract class TabContentPanel extends JPanel
LocalDateTime currentTime = LocalDateTime.now();
if (endTime.getDayOfWeek() != currentTime.getDayOfWeek())
{
- sb.append(endTime.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.getDefault())).append(" ");
+ sb.append(endTime.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.getDefault())).append(' ');
}
sb.append("at ");
sb.append(formatter.format(endTime));
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 7eee98df8c..ca6df40a4d 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
@@ -187,8 +187,8 @@ public class TimeTrackingPlugin extends Plugin
{
if (commandExecuted.getCommand().equals("resetfarmtick"))
{
- configManager.unsetRSProfileConfiguration(TimeTrackingConfig.CONFIG_GROUP, TimeTrackingConfig.FARM_TICK_OFFSET_PRECISION);
- configManager.unsetRSProfileConfiguration(TimeTrackingConfig.CONFIG_GROUP, TimeTrackingConfig.FARM_TICK_OFFSET);
+ configManager.unsetRSProfileConfiguration(CONFIG_GROUP, TimeTrackingConfig.FARM_TICK_OFFSET_PRECISION);
+ configManager.unsetRSProfileConfiguration(CONFIG_GROUP, TimeTrackingConfig.FARM_TICK_OFFSET);
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java
index d3f2222b04..fe314c46fa 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTracker.java
@@ -550,7 +550,7 @@ public class FarmingTracker
// Same RS account but different profile type
if (profileType != RuneScapeProfileType.getCurrent(client))
{
- stringBuilder.append("(")
+ stringBuilder.append('(')
.append(Text.titleCase(profile.getType()))
.append(") ");
}
@@ -564,13 +564,13 @@ public class FarmingTracker
//Don't print profile type when logged out if is STANDARD
if (client.getGameState() == GameState.LOGIN_SCREEN && profileType == RuneScapeProfileType.STANDARD)
{
- stringBuilder.append("(")
+ stringBuilder.append('(')
.append(profile.getDisplayName())
.append(") ");
}
else
{
- stringBuilder.append("(")
+ stringBuilder.append('(')
.append(profile.getDisplayName())
.append(" - ")
.append(Text.titleCase(profile.getType()))
@@ -580,7 +580,7 @@ public class FarmingTracker
// Different RS account but same profile type
else
{
- stringBuilder.append("(")
+ stringBuilder.append('(')
.append(profile.getDisplayName())
.append(") ");
}
@@ -616,7 +616,7 @@ public class FarmingTracker
stringBuilder.append(patch.getRegion().isDefinite() ? "the " : "")
.append(patch.getRegion().getName())
- .append(".");
+ .append('.');
notifier.notify(stringBuilder.toString());
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/irc/TwitchIRCClient.java b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/irc/TwitchIRCClient.java
index 53f8d461e4..022c05f8d0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/irc/TwitchIRCClient.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/irc/TwitchIRCClient.java
@@ -100,7 +100,7 @@ public class TwitchIRCClient extends Thread implements AutoCloseable
return;
}
- try
+ try // NOPMD: UseTryWithResources
{
register(username, password);
join(channel);
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 324b94259a..89d9e3c803 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
@@ -105,7 +105,7 @@ public class OverlayUtil
public static void renderImageLocation(Client client, Graphics2D graphics, LocalPoint localPoint, BufferedImage image, int zOffset)
{
- net.runelite.api.Point imageLocation = Perspective.getCanvasImageLocation(client, localPoint, image, zOffset);
+ Point imageLocation = Perspective.getCanvasImageLocation(client, localPoint, image, zOffset);
if (imageLocation != null)
{
renderImageLocation(graphics, imageLocation, image);
@@ -182,7 +182,7 @@ public class OverlayUtil
renderImageLocation(client, graphics, localLocation, image, 0);
}
- public static void renderHoverableArea(Graphics2D graphics, Shape area, net.runelite.api.Point mousePosition, Color fillColor, Color borderColor, Color borderHoverColor)
+ public static void renderHoverableArea(Graphics2D graphics, Shape area, Point mousePosition, Color fillColor, Color borderColor, Color borderHoverColor)
{
if (area != null)
{
diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/LineComponent.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/LineComponent.java
index 83c67c09e0..02ff566f4e 100644
--- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/LineComponent.java
+++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/components/LineComponent.java
@@ -182,12 +182,12 @@ public class LineComponent implements LayoutableRenderableEntity
if (wordLen + spaceWidth > spaceLeft)
{
- wrapped.append("\n").append(word);
+ wrapped.append('\n').append(word);
spaceLeft = maxWidth - wordLen;
}
else
{
- wrapped.append(" ").append(word);
+ wrapped.append(' ').append(word);
spaceLeft -= spaceWidth + wordLen;
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/Timer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/Timer.java
index c9a3664222..4f3c7be775 100644
--- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/Timer.java
+++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/Timer.java
@@ -96,6 +96,7 @@ public class Timer extends InfoBox
public void setDuration(Duration duration)
{
+ Preconditions.checkArgument(!duration.isNegative(), "negative duration");
this.duration = duration;
endTime = startTime.plus(duration);
}
diff --git a/runelite-client/src/main/java/net/runelite/client/util/CallableExceptionLogger.java b/runelite-client/src/main/java/net/runelite/client/util/CallableExceptionLogger.java
index bb1aad4cf3..cb785a14fc 100644
--- a/runelite-client/src/main/java/net/runelite/client/util/CallableExceptionLogger.java
+++ b/runelite-client/src/main/java/net/runelite/client/util/CallableExceptionLogger.java
@@ -43,7 +43,7 @@ public class CallableExceptionLogger implements Callable
}
catch (Throwable ex)
{
- log.warn("Uncaught exception in callable {}", callable, ex);
+ log.error("Uncaught exception in callable {}", callable, ex);
throw ex;
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/util/RunnableExceptionLogger.java b/runelite-client/src/main/java/net/runelite/client/util/RunnableExceptionLogger.java
index 58c7247cdd..cc47e7ce28 100644
--- a/runelite-client/src/main/java/net/runelite/client/util/RunnableExceptionLogger.java
+++ b/runelite-client/src/main/java/net/runelite/client/util/RunnableExceptionLogger.java
@@ -42,7 +42,7 @@ public class RunnableExceptionLogger implements Runnable
}
catch (Throwable ex)
{
- log.warn("Uncaught exception in runnable {}", runnable, ex);
+ log.error("Uncaught exception in runnable {}", runnable, ex);
throw ex;
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/util/WorldUtil.java b/runelite-client/src/main/java/net/runelite/client/util/WorldUtil.java
index 9f508676a5..39e5ce8f99 100644
--- a/runelite-client/src/main/java/net/runelite/client/util/WorldUtil.java
+++ b/runelite-client/src/main/java/net/runelite/client/util/WorldUtil.java
@@ -40,11 +40,11 @@ public class WorldUtil
*/
public static EnumSet toWorldTypes(final EnumSet apiTypes)
{
- final EnumSet types = EnumSet.noneOf(net.runelite.api.WorldType.class);
+ final EnumSet types = EnumSet.noneOf(WorldType.class);
for (net.runelite.http.api.worlds.WorldType apiType : apiTypes)
{
- types.add(net.runelite.api.WorldType.valueOf(apiType.name()));
+ types.add(WorldType.valueOf(apiType.name()));
}
return types;