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;