From 1f1cbcfc25b3221792b01c15b1b952f2f2652bc4 Mon Sep 17 00:00:00 2001 From: Broooklyn <54762282+Broooklyn@users.noreply.github.com> Date: Fri, 28 Aug 2020 20:22:38 -0400 Subject: [PATCH 01/25] slayer: fix Tzhaar SlayerUnlock enum typo --- .../src/main/java/net/runelite/api/vars/SlayerUnlock.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/vars/SlayerUnlock.java b/runelite-api/src/main/java/net/runelite/api/vars/SlayerUnlock.java index 4ad46dc060..00b087e846 100644 --- a/runelite-api/src/main/java/net/runelite/api/vars/SlayerUnlock.java +++ b/runelite-api/src/main/java/net/runelite/api/vars/SlayerUnlock.java @@ -53,7 +53,7 @@ public enum SlayerUnlock GREATER_DEMON_EXTEND(15), MITHRIL_DRAGON_UNLOCK(16), AVIANSIES_ENABLE(17), - TZHARR_ENABLE(18), + TZHAAR_ENABLE(18), BOSS_ENABLE(19), BLOODVELD_EXTEND(20), ABERRANT_SPECTRE_EXTEND(21), From ca2416a838f6a8780e150616bac8043c3462c85f Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Wed, 12 Aug 2020 21:24:30 +0100 Subject: [PATCH 02/25] timetracking: add configuration for displaying time in 12 hour format --- .../timetracking/OverviewTabPanel.java | 2 +- .../plugins/timetracking/TabContentPanel.java | 27 ++++++++++-- .../plugins/timetracking/TimeFormatMode.java | 43 +++++++++++++++++++ .../timetracking/TimeTrackingConfig.java | 10 ++--- .../farming/FarmingContractInfoBox.java | 2 +- .../timetracking/farming/FarmingTabPanel.java | 2 +- .../hunter/BirdHouseTabPanel.java | 2 +- 7 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeFormatMode.java diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewTabPanel.java index 432bf3b87c..8ac4c9979e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/OverviewTabPanel.java @@ -146,7 +146,7 @@ class OverviewTabPanel extends TabContentPanel } else { - panel.updateStatus("Ready " + getFormattedEstimate(duration, config.estimateRelative()), Color.GRAY); + panel.updateStatus("Ready " + getFormattedEstimate(duration, config.timeFormatMode()), Color.GRAY); } break; } 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 f10a00594b..243b5a4511 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 @@ -26,6 +26,7 @@ package net.runelite.client.plugins.timetracking; import java.awt.Dimension; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.time.format.TextStyle; import java.time.temporal.ChronoUnit; import java.util.Locale; @@ -33,6 +34,9 @@ import javax.swing.JPanel; public abstract class TabContentPanel extends JPanel { + private static final DateTimeFormatter DATETIME_FORMATTER_24H = DateTimeFormatter.ofPattern("HH:mm"); + private static final DateTimeFormatter DATETIME_FORMATTER_12H = DateTimeFormatter.ofPattern("h:mm a"); + /** * Gets the update interval of this panel, in units of 200 milliseconds * (the plugin panel checks if its contents should be updated every 200 ms; @@ -48,9 +52,11 @@ public abstract class TabContentPanel extends JPanel return super.getPreferredSize(); } - public static String getFormattedEstimate(long remainingSeconds, boolean useRelativeTime) + public static String getFormattedEstimate(long remainingSeconds, TimeFormatMode mode) { - if (useRelativeTime) + DateTimeFormatter formatter = getDateTimeFormatter(mode); + + if (formatter == null) { StringBuilder sb = new StringBuilder("in "); long duration = (remainingSeconds + 59) / 60; @@ -80,8 +86,23 @@ public abstract class TabContentPanel extends JPanel { sb.append(endTime.getDayOfWeek().getDisplayName(TextStyle.FULL, Locale.getDefault())).append(" "); } - sb.append(String.format("at %d:%02d", endTime.getHour(), endTime.getMinute())); + sb.append("at "); + sb.append(formatter.format(endTime)); + return sb.toString(); } } + + private static DateTimeFormatter getDateTimeFormatter(TimeFormatMode mode) + { + switch (mode) + { + case ABSOLUTE_12H: + return DATETIME_FORMATTER_12H; + case ABSOLUTE_24H: + return DATETIME_FORMATTER_24H; + default: + return null; + } + } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeFormatMode.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeFormatMode.java new file mode 100644 index 0000000000..8a0214c287 --- /dev/null +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeFormatMode.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020, Hydrox6 + * 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.timetracking; + +import lombok.AllArgsConstructor; + +@AllArgsConstructor +public enum TimeFormatMode +{ + RELATIVE("Relative"), + ABSOLUTE_12H("12 Hour"), + ABSOLUTE_24H("24 Hour"); + + private final String name; + + @Override + public String toString() + { + return name; + } +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingConfig.java index 0815ae161c..cb24e6b9b3 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingConfig.java @@ -39,14 +39,14 @@ public interface TimeTrackingConfig extends Config String STOPWATCHES = "stopwatches"; @ConfigItem( - keyName = "estimateRelative", - name = "Show relative time", - description = "Show amount of time remaining instead of completion time", + keyName = "timeFormatMode", + name = "Time format", + description = "What format to display times in", position = 1 ) - default boolean estimateRelative() + default TimeFormatMode timeFormatMode() { - return false; + return TimeFormatMode.ABSOLUTE_24H; } @ConfigItem( diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingContractInfoBox.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingContractInfoBox.java index eab628c2c4..c27154da88 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingContractInfoBox.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingContractInfoBox.java @@ -83,7 +83,7 @@ class FarmingContractInfoBox extends InfoBox break; case IN_PROGRESS: contractDescription = "Ready " + TabContentPanel.getFormattedEstimate(manager.getCompletionTime() - Instant.now().getEpochSecond(), - config.estimateRelative()); + config.timeFormatMode()); contractColor = Color.GRAY; break; case EMPTY: diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java index f51bc9af8e..870ca5020f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/farming/FarmingTabPanel.java @@ -168,7 +168,7 @@ public class FarmingTabPanel extends TabContentPanel } else { - panel.getEstimate().setText("Done " + getFormattedEstimate(prediction.getDoneEstimate() - unixNow, config.estimateRelative())); + panel.getEstimate().setText("Done " + getFormattedEstimate(prediction.getDoneEstimate() - unixNow, config.timeFormatMode())); } break; case DISEASED: diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java index c8935b850a..451d21e154 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/hunter/BirdHouseTabPanel.java @@ -136,7 +136,7 @@ public class BirdHouseTabPanel extends TabContentPanel else { panel.getProgress().setValue((int) (BirdHouseTracker.BIRD_HOUSE_DURATION - remainingTime)); - panel.getEstimate().setText("Done " + getFormattedEstimate(remainingTime, config.estimateRelative())); + panel.getEstimate().setText("Done " + getFormattedEstimate(remainingTime, config.timeFormatMode())); } break; default: From 431e09588bd505147f03e2c88786deed9834ff84 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Mon, 24 Aug 2020 09:41:54 -0600 Subject: [PATCH 03/25] specify utf8 encoding this should fix the following known bugs: - putting a U+2019 in the config causes it to become corrupted and ~double in size every launch - scripts become assembled incorrectly and the nbsp after your name in the chatbox becomes incorrect - the feed panel doesn't show emoji --- .../runelite/cache/fs/flat/FlatStorage.java | 5 ++- .../net/runelite/cache/io/OutputStream.java | 13 +------ .../cache/script/assembler/Assembler.java | 4 +- .../cache/script/assembler/AssemblerTest.java | 3 +- .../script/disassembler/DisassemblerTest.java | 3 +- .../net/runelite/cache/util/XteaTest.java | 3 +- .../http/api/account/AccountClient.java | 3 +- .../runelite/http/api/chat/ChatClient.java | 7 ++-- .../http/api/config/ConfigClient.java | 3 +- .../runelite/http/api/feed/FeedClient.java | 3 +- .../runelite/http/api/item/ItemClient.java | 5 ++- .../api/loottracker/LootTrackerClient.java | 3 +- .../runelite/http/api/npc/NpcInfoClient.java | 3 +- .../api/osbuddy/OSBGrandExchangeClient.java | 3 +- .../runelite/http/api/worlds/WorldClient.java | 3 +- .../runelite/http/api/xtea/XteaClient.java | 5 ++- .../http/service/feed/FeedController.java | 3 +- .../service/feed/twitter/TwitterService.java | 7 ++-- .../http/service/item/ItemService.java | 3 +- .../net/runelite/client/SessionClient.java | 3 +- .../client/account/SessionManager.java | 9 +++-- .../runelite/client/config/ConfigManager.java | 5 +-- .../client/game/ItemVariationMapping.java | 3 +- .../runelite/client/plugins/gpu/GLUtil.java | 5 ++- .../client/plugins/gpu/template/Template.java | 15 ++++++-- .../skillcalculator/CacheSkillData.java | 3 +- .../client/plugins/skybox/Skybox.java | 3 +- .../client/plugins/twitch/TwitchPlugin.java | 12 +++++- .../plugins/twitch/irc/TwitchIRCClient.java | 38 ++++++++++++------- .../client/rs/ClientConfigLoader.java | 3 +- .../runelite/client/util/ImageCapture.java | 3 +- .../plugins/discord/DiscordStateTest.java | 3 +- 32 files changed, 117 insertions(+), 70 deletions(-) diff --git a/cache/src/main/java/net/runelite/cache/fs/flat/FlatStorage.java b/cache/src/main/java/net/runelite/cache/fs/flat/FlatStorage.java index 8c5d7e77a7..92a82e26b7 100644 --- a/cache/src/main/java/net/runelite/cache/fs/flat/FlatStorage.java +++ b/cache/src/main/java/net/runelite/cache/fs/flat/FlatStorage.java @@ -33,6 +33,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Base64; import java.util.Comparator; @@ -103,7 +104,7 @@ public class FlatStorage implements Storage for (Index idx : store.getIndexes()) { String file = idx.getId() + EXTENSION; - try (BufferedReader br = new BufferedReader(new InputStreamReader(openReader(file)))) + try (BufferedReader br = new BufferedReader(new InputStreamReader(openReader(file), StandardCharsets.UTF_8))) { int lineNo = 0; Archive archive = null; @@ -213,7 +214,7 @@ public class FlatStorage implements Storage for (Index idx : store.getIndexes()) { String file = idx.getId() + EXTENSION; - try (PrintStream br = new PrintStream(openWriter(file))) + try (PrintStream br = new PrintStream(openWriter(file), false, StandardCharsets.UTF_8.name())) { br.printf("protocol=%d\n", idx.getProtocol()); br.printf("revision=%d\n", idx.getRevision()); diff --git a/cache/src/main/java/net/runelite/cache/io/OutputStream.java b/cache/src/main/java/net/runelite/cache/io/OutputStream.java index 751905f4fb..77853598b5 100644 --- a/cache/src/main/java/net/runelite/cache/io/OutputStream.java +++ b/cache/src/main/java/net/runelite/cache/io/OutputStream.java @@ -26,8 +26,8 @@ package net.runelite.cache.io; import com.google.common.base.Preconditions; import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; public final class OutputStream extends java.io.OutputStream { @@ -181,16 +181,7 @@ public final class OutputStream extends java.io.OutputStream public void writeString(String str) { - byte[] b; - try - { - b = str.getBytes("ISO-8859-1"); - } - catch (UnsupportedEncodingException ex) - { - throw new RuntimeException(ex); - } - writeBytes(b); + writeBytes(str.getBytes(StandardCharsets.ISO_8859_1)); writeByte(0); } diff --git a/cache/src/main/java/net/runelite/cache/script/assembler/Assembler.java b/cache/src/main/java/net/runelite/cache/script/assembler/Assembler.java index 643057911e..73251e5a7c 100644 --- a/cache/src/main/java/net/runelite/cache/script/assembler/Assembler.java +++ b/cache/src/main/java/net/runelite/cache/script/assembler/Assembler.java @@ -26,6 +26,8 @@ package net.runelite.cache.script.assembler; import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import net.runelite.cache.definitions.ScriptDefinition; import net.runelite.cache.script.Instructions; import net.runelite.cache.script.assembler.rs2asmParser.ProgContext; @@ -45,7 +47,7 @@ public class Assembler public ScriptDefinition assemble(InputStream in) throws IOException { // Get our lexer - rs2asmLexer lexer = new rs2asmLexer(new ANTLRInputStream(in)); + rs2asmLexer lexer = new rs2asmLexer(new ANTLRInputStream(new InputStreamReader(in, StandardCharsets.UTF_8))); LexerErrorListener errorListener = new LexerErrorListener(); lexer.addErrorListener(errorListener); diff --git a/cache/src/test/java/net/runelite/cache/script/assembler/AssemblerTest.java b/cache/src/test/java/net/runelite/cache/script/assembler/AssemblerTest.java index 0e5dccd4f1..fd84675784 100644 --- a/cache/src/test/java/net/runelite/cache/script/assembler/AssemblerTest.java +++ b/cache/src/test/java/net/runelite/cache/script/assembler/AssemblerTest.java @@ -25,6 +25,7 @@ package net.runelite.cache.script.assembler; import java.io.InputStream; +import java.nio.charset.StandardCharsets; import net.runelite.cache.definitions.ScriptDefinition; import net.runelite.cache.script.Instructions; import net.runelite.cache.script.disassembler.Disassembler; @@ -76,7 +77,7 @@ public class AssemblerTest in = AssemblerTest.class.getResourceAsStream(this.script); Assert.assertNotNull(in); - String original = new String(IOUtils.toByteArray(in)).replaceAll("\r\n", "\n"); + String original = new String(IOUtils.toByteArray(in), StandardCharsets.UTF_8).replaceAll("\r\n", "\n"); logger.info(original); logger.info("-----------------------"); diff --git a/cache/src/test/java/net/runelite/cache/script/disassembler/DisassemblerTest.java b/cache/src/test/java/net/runelite/cache/script/disassembler/DisassemblerTest.java index a97ca27586..7cdeddae3f 100644 --- a/cache/src/test/java/net/runelite/cache/script/disassembler/DisassemblerTest.java +++ b/cache/src/test/java/net/runelite/cache/script/disassembler/DisassemblerTest.java @@ -27,6 +27,7 @@ package net.runelite.cache.script.disassembler; import com.google.common.io.Files; import java.io.File; import java.io.IOException; +import java.nio.charset.StandardCharsets; import net.runelite.cache.IndexType; import net.runelite.cache.StoreLocation; import net.runelite.cache.definitions.ScriptDefinition; @@ -78,7 +79,7 @@ public class DisassemblerTest Disassembler disassembler = new Disassembler(); String out = disassembler.disassemble(script); - Files.write(out.getBytes(), outFile); + Files.write(out.getBytes(StandardCharsets.UTF_8), outFile); ++count; } diff --git a/cache/src/test/java/net/runelite/cache/util/XteaTest.java b/cache/src/test/java/net/runelite/cache/util/XteaTest.java index 8d6d703989..8884f32b46 100644 --- a/cache/src/test/java/net/runelite/cache/util/XteaTest.java +++ b/cache/src/test/java/net/runelite/cache/util/XteaTest.java @@ -24,6 +24,7 @@ */ package net.runelite.cache.util; +import java.nio.charset.StandardCharsets; import static org.junit.Assert.assertArrayEquals; import org.junit.Test; @@ -32,7 +33,7 @@ public class XteaTest @Test public void test() { - byte[] data = "testtesttest1".getBytes(); + byte[] data = "testtesttest1".getBytes(StandardCharsets.UTF_8); int[] key = new int[] { diff --git a/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java b/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java index 625be00ad0..ff999c6d71 100644 --- a/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java +++ b/http-api/src/main/java/net/runelite/http/api/account/AccountClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -66,7 +67,7 @@ public class AccountClient try (Response response = client.newCall(request).execute()) { InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), OAuthResponse.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), OAuthResponse.class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/chat/ChatClient.java b/http-api/src/main/java/net/runelite/http/api/chat/ChatClient.java index f3a0b41c30..63ca36407a 100644 --- a/http-api/src/main/java/net/runelite/http/api/chat/ChatClient.java +++ b/http-api/src/main/java/net/runelite/http/api/chat/ChatClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import lombok.AllArgsConstructor; import net.runelite.http.api.RuneLiteAPI; import okhttp3.HttpUrl; @@ -170,7 +171,7 @@ public class ChatClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), Task.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), Task.class); } catch (JsonParseException ex) { @@ -307,7 +308,7 @@ public class ChatClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), Duels.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), Duels.class); } catch (JsonParseException ex) { @@ -354,7 +355,7 @@ public class ChatClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), LayoutRoom[].class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), LayoutRoom[].class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/config/ConfigClient.java b/http-api/src/main/java/net/runelite/http/api/config/ConfigClient.java index 62704a8ff1..334660fb85 100644 --- a/http-api/src/main/java/net/runelite/http/api/config/ConfigClient.java +++ b/http-api/src/main/java/net/runelite/http/api/config/ConfigClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.UUID; import java.util.concurrent.CompletableFuture; import lombok.AllArgsConstructor; @@ -67,7 +68,7 @@ public class ConfigClient try (Response response = client.newCall(request).execute()) { InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), Configuration.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), Configuration.class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/feed/FeedClient.java b/http-api/src/main/java/net/runelite/http/api/feed/FeedClient.java index 62cddfa599..a0b628df33 100644 --- a/http-api/src/main/java/net/runelite/http/api/feed/FeedClient.java +++ b/http-api/src/main/java/net/runelite/http/api/feed/FeedClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.runelite.http.api.RuneLiteAPI; @@ -63,7 +64,7 @@ public class FeedClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), FeedResult.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), FeedResult.class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java b/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java index 1b4df52de4..37fb27fc24 100644 --- a/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java +++ b/http-api/src/main/java/net/runelite/http/api/item/ItemClient.java @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.Map; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -68,7 +69,7 @@ public class ItemClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), ItemPrice[].class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), ItemPrice[].class); } catch (JsonParseException ex) { @@ -103,7 +104,7 @@ public class ItemClient final Type typeToken = new TypeToken>() { }.getType(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), typeToken); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), typeToken); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/loottracker/LootTrackerClient.java b/http-api/src/main/java/net/runelite/http/api/loottracker/LootTrackerClient.java index 68d6a2c749..3908ec01c8 100644 --- a/http-api/src/main/java/net/runelite/http/api/loottracker/LootTrackerClient.java +++ b/http-api/src/main/java/net/runelite/http/api/loottracker/LootTrackerClient.java @@ -30,6 +30,7 @@ import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.List; import java.util.UUID; @@ -117,7 +118,7 @@ public class LootTrackerClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken>() + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), new TypeToken>() { }.getType()); } diff --git a/http-api/src/main/java/net/runelite/http/api/npc/NpcInfoClient.java b/http-api/src/main/java/net/runelite/http/api/npc/NpcInfoClient.java index 075b7b186a..d7c4396625 100644 --- a/http-api/src/main/java/net/runelite/http/api/npc/NpcInfoClient.java +++ b/http-api/src/main/java/net/runelite/http/api/npc/NpcInfoClient.java @@ -30,6 +30,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.Map; import lombok.Value; import lombok.extern.slf4j.Slf4j; @@ -71,7 +72,7 @@ public class NpcInfoClient final Type typeToken = new TypeToken>() { }.getType(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), typeToken); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), typeToken); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java b/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java index 3a832c7ccb..7bd1706cf4 100644 --- a/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java +++ b/http-api/src/main/java/net/runelite/http/api/osbuddy/OSBGrandExchangeClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.runelite.http.api.RuneLiteAPI; @@ -64,7 +65,7 @@ public class OSBGrandExchangeClient } final InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), OSBGrandExchangeResult.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), OSBGrandExchangeResult.class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java b/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java index 97063b8c0d..d6e0865f14 100644 --- a/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java +++ b/http-api/src/main/java/net/runelite/http/api/worlds/WorldClient.java @@ -29,6 +29,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import net.runelite.http.api.RuneLiteAPI; @@ -64,7 +65,7 @@ public class WorldClient } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), WorldResult.class); } catch (JsonParseException ex) { diff --git a/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java b/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java index 67a2e866ca..1fdf364047 100644 --- a/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java +++ b/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java @@ -29,6 +29,7 @@ import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.List; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -103,7 +104,7 @@ public class XteaClient { InputStream in = response.body().byteStream(); // CHECKSTYLE:OFF - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken>() { }.getType()); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), new TypeToken>() { }.getType()); // CHECKSTYLE:ON } catch (JsonParseException ex) @@ -126,7 +127,7 @@ public class XteaClient try (Response response = client.newCall(request).execute()) { InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), XteaKey.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), XteaKey.class); } catch (JsonParseException ex) { diff --git a/http-service/src/main/java/net/runelite/http/service/feed/FeedController.java b/http-service/src/main/java/net/runelite/http/service/feed/FeedController.java index a35a582d1e..9c799d9873 100644 --- a/http-service/src/main/java/net/runelite/http/service/feed/FeedController.java +++ b/http-service/src/main/java/net/runelite/http/service/feed/FeedController.java @@ -27,6 +27,7 @@ package net.runelite.http.service.feed; import com.google.common.hash.HashCode; import com.google.common.hash.Hasher; import com.google.common.hash.Hashing; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -66,7 +67,7 @@ public class FeedController Hasher hasher = Hashing.sha256().newHasher(); for (FeedItem itemPrice : feedResult.getItems()) { - hasher.putBytes(itemPrice.getTitle().getBytes()).putBytes(itemPrice.getContent().getBytes()); + hasher.putBytes(itemPrice.getTitle().getBytes(StandardCharsets.UTF_8)).putBytes(itemPrice.getContent().getBytes(StandardCharsets.UTF_8)); } HashCode code = hasher.hash(); hash = code.toString(); diff --git a/http-service/src/main/java/net/runelite/http/service/feed/twitter/TwitterService.java b/http-service/src/main/java/net/runelite/http/service/feed/twitter/TwitterService.java index 9bb9dc8595..5bab4300a3 100644 --- a/http-service/src/main/java/net/runelite/http/service/feed/twitter/TwitterService.java +++ b/http-service/src/main/java/net/runelite/http/service/feed/twitter/TwitterService.java @@ -29,6 +29,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Type; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Base64; import java.util.List; @@ -114,7 +115,7 @@ public class TwitterService { }.getType(); List statusesResponse = RuneLiteAPI.GSON - .fromJson(new InputStreamReader(in), listType); + .fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), listType); List items = new ArrayList<>(); @@ -134,7 +135,7 @@ public class TwitterService private void updateToken() throws IOException { - String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes()); + String encodedCredentials = Base64.getEncoder().encodeToString(credentials.getBytes(StandardCharsets.UTF_8)); Request request = new Request.Builder() .url(AUTH_URL) @@ -151,7 +152,7 @@ public class TwitterService InputStream in = response.body().byteStream(); TwitterOAuth2TokenResponse tokenResponse = RuneLiteAPI.GSON - .fromJson(new InputStreamReader(in), TwitterOAuth2TokenResponse.class); + .fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), TwitterOAuth2TokenResponse.class); if (!tokenResponse.getTokenType().equals("bearer")) { diff --git a/http-service/src/main/java/net/runelite/http/service/item/ItemService.java b/http-service/src/main/java/net/runelite/http/service/item/ItemService.java index 35aaabe94a..bf40d8ec96 100644 --- a/http-service/src/main/java/net/runelite/http/service/item/ItemService.java +++ b/http-service/src/main/java/net/runelite/http/service/item/ItemService.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.ArrayList; import java.util.HashSet; @@ -297,7 +298,7 @@ public class ItemService } InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), clazz); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), clazz); } catch (JsonParseException ex) { diff --git a/runelite-client/src/main/java/net/runelite/client/SessionClient.java b/runelite-client/src/main/java/net/runelite/client/SessionClient.java index 2aa8c7c3e3..ea75fc5f79 100644 --- a/runelite-client/src/main/java/net/runelite/client/SessionClient.java +++ b/runelite-client/src/main/java/net/runelite/client/SessionClient.java @@ -28,6 +28,7 @@ import com.google.gson.JsonParseException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.UUID; import lombok.AllArgsConstructor; import net.runelite.http.api.RuneLiteAPI; @@ -58,7 +59,7 @@ class SessionClient ResponseBody body = response.body(); InputStream in = body.byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), UUID.class); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), UUID.class); } catch (JsonParseException | IllegalArgumentException ex) // UUID.fromString can throw IllegalArgumentException { diff --git a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java index 3f754b5e40..cadf0b4562 100644 --- a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java +++ b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java @@ -27,9 +27,12 @@ package net.runelite.client.account; import com.google.gson.Gson; import java.io.File; import java.io.FileInputStream; -import java.io.FileWriter; +import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.UUID; import javax.inject.Inject; @@ -91,7 +94,7 @@ public class SessionManager try (FileInputStream in = new FileInputStream(sessionFile)) { - session = new Gson().fromJson(new InputStreamReader(in), AccountSession.class); + session = new Gson().fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), AccountSession.class); log.debug("Loaded session for {}", session.getUsername()); } @@ -119,7 +122,7 @@ public class SessionManager return; } - try (FileWriter fw = new FileWriter(sessionFile)) + try (Writer fw = new OutputStreamWriter(new FileOutputStream(sessionFile), StandardCharsets.UTF_8)) { new Gson().toJson(accountSession, fw); diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index 3842fd96a5..af158dfbb8 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -41,7 +41,6 @@ import java.io.OutputStreamWriter; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Proxy; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.AtomicMoveNotSupportedException; import java.nio.file.Files; @@ -224,7 +223,7 @@ public class ConfigManager final Properties properties = new Properties(); try (FileInputStream in = new FileInputStream(propertiesFile)) { - properties.load(new InputStreamReader(in, Charset.forName("UTF-8"))); + properties.load(new InputStreamReader(in, StandardCharsets.UTF_8)); } catch (Exception e) { @@ -295,7 +294,7 @@ public class ConfigManager try (FileInputStream in = new FileInputStream(propertiesFile)) { - properties.load(new InputStreamReader(in, Charset.forName("UTF-8"))); + properties.load(new InputStreamReader(in, StandardCharsets.UTF_8)); } catch (FileNotFoundException ex) { diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java b/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java index a26f844a91..5daec1aee9 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemVariationMapping.java @@ -32,6 +32,7 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.Collections; import java.util.Iterator; @@ -53,7 +54,7 @@ public class ItemVariationMapping }; final InputStream geLimitData = ItemVariationMapping.class.getResourceAsStream("/item_variations.json"); - final Map> itemVariations = gson.fromJson(new InputStreamReader(geLimitData), typeToken.getType()); + final Map> itemVariations = gson.fromJson(new InputStreamReader(geLimitData, StandardCharsets.UTF_8), typeToken.getType()); ImmutableMap.Builder builder = new ImmutableMap.Builder<>(); ImmutableMultimap.Builder invertedBuilder = new ImmutableMultimap.Builder<>(); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GLUtil.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GLUtil.java index 50f65ef233..63c5af1624 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GLUtil.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GLUtil.java @@ -25,6 +25,7 @@ package net.runelite.client.plugins.gpu; import com.jogamp.opengl.GL4; +import java.nio.charset.StandardCharsets; class GLUtil { @@ -63,14 +64,14 @@ class GLUtil { byte[] err = new byte[ERR_LEN]; gl.glGetShaderInfoLog(shader, ERR_LEN, buf, 0, err, 0); - return new String(err, 0, buf[0]); + return new String(err, 0, buf[0], StandardCharsets.UTF_8); } static String glGetProgramInfoLog(GL4 gl, int program) { byte[] err = new byte[ERR_LEN]; gl.glGetProgramInfoLog(program, ERR_LEN, buf, 0, err, 0); - return new String(err, 0, buf[0]); + return new String(err, 0, buf[0], StandardCharsets.UTF_8); } static int glGenVertexArrays(GL4 gl) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/template/Template.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/template/Template.java index 3bf7059382..c2d366a7b8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/template/Template.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/template/Template.java @@ -24,10 +24,13 @@ */ package net.runelite.client.plugins.gpu.template; +import com.google.common.io.CharStreams; +import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import java.util.Scanner; import java.util.function.Function; public class Template @@ -92,7 +95,13 @@ public class Template private static String inputStreamToString(InputStream in) { - Scanner scanner = new Scanner(in).useDelimiter("\\A"); - return scanner.next(); + try + { + return CharStreams.toString(new InputStreamReader(in, StandardCharsets.UTF_8)); + } + catch (IOException e) + { + throw new RuntimeException(e); + } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java index f4f54e0f52..969ac792f5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/CacheSkillData.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.skillcalculator; import com.google.gson.Gson; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; import net.runelite.client.plugins.skillcalculator.beans.SkillData; @@ -43,7 +44,7 @@ class CacheSkillData } InputStream skillDataFile = SkillCalculatorPlugin.class.getResourceAsStream(dataFile); - SkillData skillData = new Gson().fromJson(new InputStreamReader(skillDataFile), SkillData.class); + SkillData skillData = new Gson().fromJson(new InputStreamReader(skillDataFile, StandardCharsets.UTF_8), SkillData.class); cache.put(dataFile, skillData); return skillData; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skybox/Skybox.java b/runelite-client/src/main/java/net/runelite/client/plugins/skybox/Skybox.java index aa770f37f8..ffc6ddd871 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/skybox/Skybox.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/skybox/Skybox.java @@ -31,6 +31,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -88,7 +89,7 @@ class Skybox public Skybox(InputStream is, String filename) throws IOException { - this(new InputStreamReader(is), filename); + this(new InputStreamReader(is, StandardCharsets.UTF_8), filename); } public Skybox(Reader reader, String filename) throws IOException diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java index 74d60056d2..42bc99809f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java @@ -26,6 +26,7 @@ package net.runelite.client.plugins.twitch; import com.google.common.base.Strings; import com.google.inject.Provides; +import java.io.IOException; import java.time.temporal.ChronoUnit; import java.util.Map; import javax.inject.Inject; @@ -218,8 +219,15 @@ public class TwitchPlugin extends Plugin implements TwitchListener, ChatboxInput return true; } - twitchIRCClient.privmsg(message); - addChatMessage(twitchConfig.username(), message); + try + { + twitchIRCClient.privmsg(message); + addChatMessage(twitchConfig.username(), message); + } + catch (IOException e) + { + log.warn("failed to send message", e); + } return true; } 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 f76ddcaa3c..2361dd2e97 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 @@ -27,8 +27,10 @@ package net.runelite.client.plugins.twitch.irc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.io.PrintWriter; +import java.io.OutputStreamWriter; +import java.io.Writer; import java.net.Socket; +import java.nio.charset.StandardCharsets; import javax.net.SocketFactory; import javax.net.ssl.SSLSocketFactory; import lombok.extern.slf4j.Slf4j; @@ -48,7 +50,7 @@ public class TwitchIRCClient extends Thread implements AutoCloseable private Socket socket; private BufferedReader in; - private PrintWriter out; + private Writer out; private long last; private boolean pingSent; @@ -86,8 +88,8 @@ public class TwitchIRCClient extends Thread implements AutoCloseable socket = socketFactory.createSocket(HOST, PORT); socket.setSoTimeout(READ_TIMEOUT); - in = new BufferedReader(new InputStreamReader(socket.getInputStream())); - out = new PrintWriter(socket.getOutputStream()); + in = new BufferedReader(new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8)); + out = new OutputStreamWriter(socket.getOutputStream(), StandardCharsets.UTF_8); } catch (IOException ex) { @@ -95,11 +97,11 @@ public class TwitchIRCClient extends Thread implements AutoCloseable return; } - register(username, password); - join(channel); - try { + register(username, password); + join(channel); + String line; while ((line = read()) != null) @@ -162,8 +164,16 @@ public class TwitchIRCClient extends Thread implements AutoCloseable if (!pingSent && System.currentTimeMillis() - last >= PING_TIMEOUT) { - ping("twitch"); - pingSent = true; + try + { + ping("twitch"); + pingSent = true; + } + catch (IOException e) + { + log.debug("Ping failure, disconnecting.", e); + close(); + } } else if (pingSent) { @@ -172,29 +182,29 @@ public class TwitchIRCClient extends Thread implements AutoCloseable } } - private void register(String username, String oauth) + private void register(String username, String oauth) throws IOException { send("CAP", "REQ", "twitch.tv/commands twitch.tv/tags"); send("PASS", oauth); send("NICK", username); } - private void join(String channel) + private void join(String channel) throws IOException { send("JOIN", channel); } - private void ping(String destination) + private void ping(String destination) throws IOException { send("PING", destination); } - public void privmsg(String message) + public void privmsg(String message) throws IOException { send("PRIVMSG", channel, message); } - private void send(String command, String... args) + private void send(String command, String... args) throws IOException { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(command); diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientConfigLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientConfigLoader.java index 0dbf77b87e..2f9be1db5c 100644 --- a/runelite-client/src/main/java/net/runelite/client/rs/ClientConfigLoader.java +++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientConfigLoader.java @@ -28,6 +28,7 @@ package net.runelite.client.rs; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import lombok.AllArgsConstructor; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; @@ -55,7 +56,7 @@ class ClientConfigLoader } String str; - final BufferedReader in = new BufferedReader(new InputStreamReader(response.body().byteStream())); + final BufferedReader in = new BufferedReader(new InputStreamReader(response.body().byteStream(), StandardCharsets.UTF_8)); while ((str = in.readLine()) != null) { int idx = str.indexOf('='); diff --git a/runelite-client/src/main/java/net/runelite/client/util/ImageCapture.java b/runelite-client/src/main/java/net/runelite/client/util/ImageCapture.java index 1823ca734c..ab9f660781 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/ImageCapture.java +++ b/runelite-client/src/main/java/net/runelite/client/util/ImageCapture.java @@ -35,6 +35,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -215,7 +216,7 @@ public class ImageCapture try (InputStream in = response.body().byteStream()) { ImageUploadResponse imageUploadResponse = RuneLiteAPI.GSON - .fromJson(new InputStreamReader(in), ImageUploadResponse.class); + .fromJson(new InputStreamReader(in, StandardCharsets.UTF_8), ImageUploadResponse.class); if (imageUploadResponse.isSuccess()) { diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java index 1631a84979..81c6e36dc8 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/discord/DiscordStateTest.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.discord; import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; +import java.nio.charset.StandardCharsets; import java.util.List; import java.util.UUID; import javax.inject.Inject; @@ -72,7 +73,7 @@ public class DiscordStateTest public void before() { Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); - when(partyService.getLocalPartyId()).thenReturn(UUID.nameUUIDFromBytes("test".getBytes())); + when(partyService.getLocalPartyId()).thenReturn(UUID.nameUUIDFromBytes("test".getBytes(StandardCharsets.UTF_8))); } @Test From 5316b49d16918f534bd1a7d0b305a75002158785 Mon Sep 17 00:00:00 2001 From: Arman Rafian Date: Sun, 30 Aug 2020 08:48:03 -0700 Subject: [PATCH 04/25] grounditems: fix despawn timer for KBD/NMZ instances --- .../grounditems/GroundItemsOverlay.java | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) 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 b5149ab2d2..932f755f21 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 @@ -78,6 +78,7 @@ public class GroundItemsOverlay extends Overlay private static final Duration DESPAWN_TIME_LOOT = Duration.ofMinutes(2); private static final Duration DESPAWN_TIME_DROP = Duration.ofMinutes(3); private static final int KRAKEN_REGION = 9116; + private static final int KBD_NMZ_REGION = 9033; private final Client client; private final GroundItemsPlugin plugin; @@ -391,8 +392,39 @@ public class GroundItemsOverlay extends Overlay { return; } + else if (isInKBDorNMZ()) + { + // NMZ and the KBD lair uses the same region ID but NMZ uses planes 1-3 and KBD uses plane 0 + if (client.getLocalPlayer().getWorldLocation().getPlane() == 0) + { + // Items in the KBD instance use the standard despawn timer + if (groundItem.getLootType() == LootType.DROPPED) + { + despawnTime = spawnTime.plus(DESPAWN_TIME_DROP); + } + else + { + despawnTime = spawnTime.plus(DESPAWN_TIME_LOOT); + } + } + else + { + // Dropped items in the NMZ instance appear to never despawn? + if (groundItem.getLootType() == LootType.DROPPED) + { + return; + } + else + { + despawnTime = spawnTime.plus(DESPAWN_TIME_LOOT); + } + } + } + else + { + despawnTime = spawnTime.plus(DESPAWN_TIME_INSTANCE); + } - despawnTime = spawnTime.plus(DESPAWN_TIME_INSTANCE); fillColor = PRIVATE_TIMER_COLOR; } else @@ -478,4 +510,8 @@ public class GroundItemsOverlay extends Overlay return ArrayUtils.contains(client.getMapRegions(), KRAKEN_REGION); } + private boolean isInKBDorNMZ() + { + return ArrayUtils.contains(client.getMapRegions(), KBD_NMZ_REGION); + } } From d1a765091ae45e56cb94a50a3d47d199603937c6 Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Fri, 14 Aug 2020 17:32:02 -0700 Subject: [PATCH 05/25] screenshot: Fix BA high gamble toggle Because both level up dialogs and BA high gambles use the same widget interface, commit 40f032bede826714ad431f912889f6a527fcd0c9 caused BA high gambles and some level up dialogs to trigger screenshots if either config was enabled in the config, as that would set a flag to capture a screenshot on the next game tick based on the widget text. This commit adds config checks to the DIALOG_SPRITE_TEXT branch to ensure the appropriate config flag must be set for a screenshot to be captured. --- .../plugins/screenshot/ScreenshotPlugin.java | 14 +++++-- .../screenshot/ScreenshotPluginTest.java | 42 ++++++++++++++++++- 2 files changed, 51 insertions(+), 5 deletions(-) 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 ad721b0160..e6f17c1572 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 @@ -242,13 +242,19 @@ public class ScreenshotPlugin extends Plugin String text = client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT).getText(); if (Text.removeTags(text).contains("High level gamble")) { - fileName = parseBAHighGambleWidget(text); - screenshotSubDir = "BA High Gambles"; + if (config.screenshotHighGamble()) + { + fileName = parseBAHighGambleWidget(text); + screenshotSubDir = "BA High Gambles"; + } } else { - fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT); - screenshotSubDir = "Levels"; + if (config.screenshotLevels()) + { + fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT); + screenshotSubDir = "Levels"; + } } } else if (client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT) != null) diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java index d77ae1d17c..1aaaa3e23f 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java @@ -53,6 +53,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import org.mockito.Mock; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.mockito.junit.MockitoJUnitRunner; @@ -67,6 +68,7 @@ public class ScreenshotPluginTest private static final String VALUABLE_DROP = "Valuable drop: 6 x Bronze arrow (42 coins)"; private static final String UNTRADEABLE_DROP = "Untradeable drop: Rusty sword"; private static final String BA_HIGH_GAMBLE_REWARD = "Raw shark (x 300)!
High level gamble count: 100"; + private static final String HUNTER_LEVEL_2_TEXT = "Congratulations, you've just advanced a Hunter level.

Your Hunter level is now 2."; @Mock @Bind @@ -233,7 +235,7 @@ public class ScreenshotPluginTest Widget levelChild = mock(Widget.class); when(client.getWidget(eq(DIALOG_SPRITE_TEXT))).thenReturn(levelChild); - when(levelChild.getText()).thenReturn("Congratulations, you've just advanced a Hunter level.

Your Hunter level is now 2."); + when(levelChild.getText()).thenReturn(HUNTER_LEVEL_2_TEXT); assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(DIALOG_SPRITE_TEXT)); @@ -265,4 +267,42 @@ public class ScreenshotPluginTest { assertEquals("High Gamble(100)", ScreenshotPlugin.parseBAHighGambleWidget(BA_HIGH_GAMBLE_REWARD)); } + + @Test + public void testLevelUpScreenshotsDisabled() + { + // Level up dialogs use the same widget interface as BA high gamble results + when(screenshotConfig.screenshotLevels()).thenReturn(false); + when(screenshotConfig.screenshotHighGamble()).thenReturn(true); + Widget dialogChild = mock(Widget.class); + when(dialogChild.getText()).thenReturn(HUNTER_LEVEL_2_TEXT); + when(client.getWidget(DIALOG_SPRITE_TEXT)).thenReturn(dialogChild); + + WidgetLoaded event = new WidgetLoaded(); + event.setGroupId(DIALOG_SPRITE_GROUP_ID); + screenshotPlugin.onWidgetLoaded(event); + + screenshotPlugin.onGameTick(new GameTick()); + + verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class)); + } + + @Test + public void testBAHighGambleScreenshotsDisabled() + { + // BA high gamble results use the same widget interface as level up dialogs + when(screenshotConfig.screenshotLevels()).thenReturn(true); + when(screenshotConfig.screenshotHighGamble()).thenReturn(false); + Widget dialogChild = mock(Widget.class); + when(dialogChild.getText()).thenReturn(BA_HIGH_GAMBLE_REWARD); + when(client.getWidget(DIALOG_SPRITE_TEXT)).thenReturn(dialogChild); + + WidgetLoaded event = new WidgetLoaded(); + event.setGroupId(DIALOG_SPRITE_GROUP_ID); + screenshotPlugin.onWidgetLoaded(event); + + screenshotPlugin.onGameTick(new GameTick()); + + verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class)); + } } From b8f6920ebb9a00a6b17f8e06156b09329cf66c0f Mon Sep 17 00:00:00 2001 From: emiljensen2 <55587410+emiljensen2@users.noreply.github.com> Date: Sun, 30 Aug 2020 21:14:49 +0200 Subject: [PATCH 06/25] antidrag: add deposit box for bank drag --- .../client/plugins/antidrag/AntiDragPlugin.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java index a74895ce12..a885de198f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/antidrag/AntiDragPlugin.java @@ -201,7 +201,7 @@ public class AntiDragPlugin extends Plugin implements KeyListener @Subscribe public void onWidgetLoaded(WidgetLoaded widgetLoaded) { - if (widgetLoaded.getGroupId() == WidgetID.BANK_GROUP_ID && (!config.onShiftOnly() || shiftHeld) && !ctrlHeld) + if ((widgetLoaded.getGroupId() == WidgetID.BANK_GROUP_ID || widgetLoaded.getGroupId() == WidgetID.DEPOSIT_BOX_GROUP_ID) && (!config.onShiftOnly() || shiftHeld) && !ctrlHeld) { setBankDragDelay(config.dragDelay()); } @@ -211,6 +211,7 @@ public class AntiDragPlugin extends Plugin implements KeyListener { final Widget bankItemContainer = client.getWidget(WidgetInfo.BANK_ITEM_CONTAINER); final Widget bankInventoryItemsContainer = client.getWidget(WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER); + final Widget bankDepositContainer = client.getWidget(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER); if (bankItemContainer != null) { Widget[] items = bankItemContainer.getDynamicChildren(); @@ -227,6 +228,14 @@ public class AntiDragPlugin extends Plugin implements KeyListener item.setDragDeadTime(delay); } } + if (bankDepositContainer != null) + { + Widget[] items = bankDepositContainer.getDynamicChildren(); + for (Widget item : items) + { + item.setDragDeadTime(delay); + } + } } private void setDragDelay() From 8bbd3b9365efba2faee4912e766c0c3cf05daa15 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 30 Aug 2020 15:15:49 -0400 Subject: [PATCH 07/25] itemstats: correct typo in Better (Some capped) description --- .../net/runelite/client/plugins/itemstats/ItemStatConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatConfig.java index 8eaf997053..5d62df7abb 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatConfig.java @@ -136,7 +136,7 @@ public interface ItemStatConfig extends Config @ConfigItem( keyName = "colorBetterSomecapped", name = "Better (Some capped)", - description = "Color to show when some stat changes are capped, but some ar not", + description = "Color to show when some stat changes are capped, but some are not", position = 11 ) default Color colorBetterSomeCapped() From c79c8f55e0a12c4839ed68ed5516eabb4ac0812c Mon Sep 17 00:00:00 2001 From: honeyhoney Date: Sun, 30 Aug 2020 20:21:29 +0100 Subject: [PATCH 08/25] color picker: resize color slider to fit knob at max rgba values --- .../client/ui/components/colorpicker/ColorValueSlider.java | 2 +- .../client/ui/components/colorpicker/RuneliteColorPicker.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/ColorValueSlider.java b/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/ColorValueSlider.java index 12b5fb7cc5..05d74684ec 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/ColorValueSlider.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/ColorValueSlider.java @@ -98,7 +98,7 @@ public class ColorValueSlider extends JPanel super.paint(g); g.setColor(TRACK_COLOR); - g.fillRect(0, this.getHeight() / 2 - 2, this.getWidth() - KNOB_WIDTH, 5); + g.fillRect(0, this.getHeight() / 2 - 2, ColorUtil.MAX_RGB_VALUE + KNOB_WIDTH * 2, 5); g.setColor(KNOB_COLOR); g.fillRect(value - KNOB_WIDTH / 2, this.getHeight() / 2 - KNOB_HEIGHT / 2, KNOB_WIDTH, KNOB_HEIGHT); diff --git a/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/RuneliteColorPicker.java b/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/RuneliteColorPicker.java index aff803450e..c32274e9ed 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/RuneliteColorPicker.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/components/colorpicker/RuneliteColorPicker.java @@ -65,7 +65,7 @@ public class RuneliteColorPicker extends JDialog { static final String CONFIG_GROUP = "colorpicker"; - private final static int FRAME_WIDTH = 400; + private final static int FRAME_WIDTH = 410; private final static int FRAME_HEIGHT = 380; private final static int TONE_PANEL_SIZE = 160; From 45bbf31fe9c99930ff42eccf17ec4a9b55774047 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 30 Aug 2020 18:02:43 -0400 Subject: [PATCH 09/25] gpu: error when shader creation fails --- .../main/java/net/runelite/client/plugins/gpu/Shader.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.java index 1146fd3332..759db67cb6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/Shader.java @@ -71,6 +71,11 @@ public class Shader { Unit unit = units.get(i); int shader = gl.glCreateShader(unit.type); + if (shader == 0) + { + throw new ShaderException("Unable to create shader of type " + unit.type); + } + String source = template.load(unit.filename); gl.glShaderSource(shader, 1, new String[]{source}, null); gl.glCompileShader(shader); From 46b297ce09410ab9a2dc7b82393b7aef17efb7ca Mon Sep 17 00:00:00 2001 From: Hexagon Date: Sun, 30 Aug 2020 21:12:36 -0300 Subject: [PATCH 10/25] zalcano-plugin: Fix lingering graphicsobject highlighting --- .../client/plugins/zalcano/ZalcanoPlugin.java | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 ece699afd9..b1a606156c 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 @@ -30,6 +30,7 @@ import javax.inject.Inject; import lombok.Getter; import net.runelite.api.Client; import net.runelite.api.GameObject; +import net.runelite.api.GameState; import static net.runelite.api.GraphicID.GRAPHICS_OBJECT_ROCKFALL; import net.runelite.api.GraphicsObject; import net.runelite.api.NPC; @@ -41,6 +42,7 @@ import static net.runelite.api.ProjectileID.ZALCANO_PROJECTILE_FIREBALL; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.GameObjectSpawned; +import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GraphicsObjectCreated; import net.runelite.api.events.NpcChanged; import net.runelite.api.events.NpcDespawned; @@ -102,6 +104,15 @@ public class ZalcanoPlugin extends Plugin } } + @Subscribe + public void onGameStateChanged(GameStateChanged event) + { + if (event.getGameState() != GameState.LOGGED_IN) + { + rocks.clear(); + } + } + @Subscribe public void onNpcSpawned(NpcSpawned event) { From d8ddbe2cfa4095ef69334c2c4a05bedd682bab4b Mon Sep 17 00:00:00 2001 From: Matthew C Date: Mon, 31 Aug 2020 22:51:03 +0900 Subject: [PATCH 11/25] grounditems: fix notifications for highlighted drops Fix notifications for highlighted drops occuring when a non highlighted drop is assigned a value tier with the same color as highlighted drops. Check the highlightedItems list directly instead of doing a color comparison. --- .../client/plugins/grounditems/GroundItemsPlugin.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 4fb07c3b50..a141aa4123 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 @@ -615,10 +615,7 @@ public class GroundItemsPlugin extends Plugin private void notifyHighlightedItem(GroundItem item) { final boolean shouldNotifyHighlighted = config.notifyHighlightedDrops() && - config.highlightedColor().equals(getHighlighted( - new NamedQuantity(item), - item.getGePrice(), - item.getHaPrice())); + TRUE.equals(highlightedItems.getUnchecked(new NamedQuantity(item))); final boolean shouldNotifyTier = config.notifyTier() != HighlightTier.OFF && getValueByMode(item.getGePrice(), item.getHaPrice()) > config.notifyTier().getValueFromTier(config) && From d7cb489eafcded7d8071adcd083608013db81de2 Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 31 Aug 2020 12:11:16 -0400 Subject: [PATCH 12/25] grounditems: fix showing Lots! for stack size in notifications The value cannot be more than MAX_VALUE so the previous condition was never met. Additionally use MAX_QUANTITY constant instead of abusing char max value which is completely unrelated. --- .../client/plugins/grounditems/GroundItemsOverlay.java | 4 +--- .../client/plugins/grounditems/GroundItemsPlugin.java | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) 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 932f755f21..d38eb6a4bd 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 @@ -46,6 +46,7 @@ import net.runelite.api.Player; import net.runelite.api.Point; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; +import static net.runelite.client.plugins.grounditems.GroundItemsPlugin.MAX_QUANTITY; import static net.runelite.client.plugins.grounditems.config.ItemHighlightMode.MENU; import net.runelite.client.plugins.grounditems.config.PriceDisplayMode; import net.runelite.client.ui.overlay.Overlay; @@ -64,9 +65,6 @@ public class GroundItemsOverlay extends Overlay // We must offset the text on the z-axis such that // it doesn't obscure the ground items below it. private static final int OFFSET_Z = 20; - // The game won't send anything higher than this value to the plugin - - // so we replace any item quantity higher with "Lots" instead. - private static final int MAX_QUANTITY = 65535; // The 15 pixel gap between each drawn ground item. private static final int STRING_GAP = 15; // Size of the hidden/highlight boxes 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 a141aa4123..962cbe432f 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 @@ -105,6 +105,9 @@ public class GroundItemsPlugin extends Plugin private final Color color; } + // The game won't send anything higher than this value to the plugin - + // so we replace any item quantity higher with "Lots" instead. + static final int MAX_QUANTITY = 65535; // ItemID for coins private static final int COINS = ItemID.COINS_995; // Ground item menu options @@ -646,7 +649,7 @@ public class GroundItemsPlugin extends Plugin if (item.getQuantity() > 1) { - if (item.getQuantity() > (int) Character.MAX_VALUE) + if (item.getQuantity() >= MAX_QUANTITY) { notificationStringBuilder.append(" (Lots!)"); } From 2021b4c1ff3eaad3eaf48e1d825ce1a27e8fba7c Mon Sep 17 00:00:00 2001 From: Adam Date: Mon, 31 Aug 2020 10:56:14 -0400 Subject: [PATCH 13/25] grounditems: add test for notify on highlight --- .../runelite/client/input/MouseManager.java | 7 +- .../grounditems/GroundItemsPlugin.java | 2 +- .../grounditems/GroundItemsPluginTest.java | 154 ++++++++++++++++++ 3 files changed, 161 insertions(+), 2 deletions(-) create mode 100644 runelite-client/src/test/java/net/runelite/client/plugins/grounditems/GroundItemsPluginTest.java diff --git a/runelite-client/src/main/java/net/runelite/client/input/MouseManager.java b/runelite-client/src/main/java/net/runelite/client/input/MouseManager.java index d5b876c7d7..07b3abb0d3 100644 --- a/runelite-client/src/main/java/net/runelite/client/input/MouseManager.java +++ b/runelite-client/src/main/java/net/runelite/client/input/MouseManager.java @@ -41,8 +41,13 @@ public class MouseManager private final List mouseListeners = new CopyOnWriteArrayList<>(); private final List mouseWheelListeners = new CopyOnWriteArrayList<>(); + private final RuneLiteConfig runeLiteConfig; + @Inject - private RuneLiteConfig runeLiteConfig; + private MouseManager(RuneLiteConfig runeLiteConfig) + { + this.runeLiteConfig = runeLiteConfig; + } public void registerMouseListener(MouseListener mouseListener) { 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 962cbe432f..5c1b8553cf 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 @@ -197,7 +197,7 @@ public class GroundItemsPlugin extends Plugin } @Override - protected void shutDown() throws Exception + protected void shutDown() { overlayManager.remove(overlay); mouseManager.unregisterMouseListener(inputListener); diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/grounditems/GroundItemsPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/grounditems/GroundItemsPluginTest.java new file mode 100644 index 0000000000..bc9c2536a1 --- /dev/null +++ b/runelite-client/src/test/java/net/runelite/client/plugins/grounditems/GroundItemsPluginTest.java @@ -0,0 +1,154 @@ +/* + * Copyright (c) 2020, Adam + * 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.grounditems; + +import com.google.inject.Guice; +import com.google.inject.testing.fieldbinder.Bind; +import com.google.inject.testing.fieldbinder.BoundFieldModule; +import java.util.concurrent.ScheduledExecutorService; +import javax.inject.Inject; +import net.runelite.api.Client; +import net.runelite.api.ItemComposition; +import net.runelite.api.ItemID; +import net.runelite.api.ItemLayer; +import net.runelite.api.Player; +import net.runelite.api.Tile; +import net.runelite.api.TileItem; +import net.runelite.api.coords.WorldPoint; +import net.runelite.api.events.ItemSpawned; +import net.runelite.client.Notifier; +import net.runelite.client.events.ConfigChanged; +import net.runelite.client.game.ItemManager; +import net.runelite.client.input.KeyManager; +import net.runelite.client.input.MouseManager; +import net.runelite.client.plugins.grounditems.config.HighlightTier; +import net.runelite.client.ui.overlay.OverlayManager; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import static org.mockito.ArgumentMatchers.any; +import org.mockito.Mock; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class GroundItemsPluginTest +{ + @Inject + private GroundItemsPlugin groundItemsPlugin; + + @Mock + @Bind + private MouseManager mouseManager; + + @Mock + @Bind + private KeyManager keyManager; + + @Mock + @Bind + private Client client; + + @Mock + @Bind + private ItemManager itemManager; + + @Mock + @Bind + private OverlayManager overlayManager; + + @Mock + @Bind + private GroundItemsConfig config; + + @Mock + @Bind + private GroundItemsOverlay overlay; + + @Mock + @Bind + private Notifier notifier; + + @Mock + @Bind + private ScheduledExecutorService executor; + + @Before + public void setUp() + { + Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this); + + doAnswer(a -> + { + a.getArgument(0).run(); + return null; + }).when(executor).execute(any(Runnable.class)); + + when(client.getLocalPlayer()).then(a -> + { + Player player = mock(Player.class); + when(player.getName()).thenReturn("Adam"); + return player; + }); + + when(config.getHiddenItems()).thenReturn(""); + } + + @Test + public void testNotifyHighlightedItem() + { + when(config.getHighlightItems()).thenReturn("abyssal whip"); + when(config.notifyTier()).thenReturn(HighlightTier.OFF); + when(config.notifyHighlightedDrops()).thenReturn(true); + + when(itemManager.getItemComposition(ItemID.ABYSSAL_WHIP)).thenAnswer(a -> + { + ItemComposition itemComposition = mock(ItemComposition.class); + when(itemComposition.getName()).thenReturn("Abyssal whip"); + return itemComposition; + }); + + // trigger reload of highlighted items list + ConfigChanged configChanged = new ConfigChanged(); + configChanged.setGroup("grounditems"); + groundItemsPlugin.onConfigChanged(configChanged); + + // spawn whip + Tile tile = mock(Tile.class); + when(tile.getItemLayer()).thenReturn(mock(ItemLayer.class)); + when(tile.getWorldLocation()).thenReturn(new WorldPoint(0, 0, 0)); + + TileItem tileItem = mock(TileItem.class); + when(tileItem.getId()).thenReturn(ItemID.ABYSSAL_WHIP); + when(tileItem.getQuantity()).thenReturn(1); + + groundItemsPlugin.onItemSpawned(new ItemSpawned(tile, tileItem)); + + verify(notifier).notify("[Adam] received a highlighted drop: Abyssal whip"); + } +} \ No newline at end of file From de31b01b464ed53701773aeddffc796095c460f9 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Wed, 2 Sep 2020 11:10:15 +0000 Subject: [PATCH 14/25] Update Item IDs to 2020-09-02-rev191 --- .../main/java/net/runelite/api/ItemID.java | 206 +----------------- .../java/net/runelite/api/NullItemID.java | 190 ++++++++++++++++ 2 files changed, 198 insertions(+), 198 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index 765cd87d45..4602e547ab 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -3726,7 +3726,7 @@ public final class ItemID public static final int FISHLIKE_THING_6206 = 6206; public static final int SMALL_FISHING_NET_6209 = 6209; public static final int TEAK_PYRE_LOGS = 6211; - public static final int MAHOGANY_PYRE_LOG = 6213; + public static final int MAHOGANY_PYRE_LOGS = 6213; public static final int BROODOO_SHIELD_10 = 6215; public static final int BROODOO_SHIELD_9 = 6217; public static final int BROODOO_SHIELD_8 = 6219; @@ -5651,7 +5651,7 @@ public final class ItemID public static final int PURPLE_TRICORN_HAT = 8964; public static final int GREY_TRICORN_HAT = 8965; public static final int CUTTHROAT_FLAG = 8966; - public static final int GUILDED_SMILE_FLAG = 8967; + public static final int GILDED_SMILE_FLAG = 8967; public static final int BRONZE_FIST_FLAG = 8968; public static final int LUCKY_SHOT_FLAG = 8969; public static final int TREASURE_FLAG = 8970; @@ -6110,8 +6110,6 @@ public final class ItemID public static final int FARMING_HOOD = 9812; public static final int QUEST_POINT_CAPE = 9813; public static final int QUEST_POINT_HOOD = 9814; - public static final int BOBBLE_HAT_9815 = 9815; - public static final int BOBBLE_SCARF_9816 = 9816; public static final int OAK_CAPE_RACK = 9817; public static final int TEAK_CAPE_RACK = 9818; public static final int MAHOGANY_CAPE_RACK = 9819; @@ -6333,8 +6331,6 @@ public final class ItemID public static final int HUNTERS_CROSSBOW = 10156; public static final int KEBBIT_BOLTS = 10158; public static final int LONG_KEBBIT_BOLTS = 10159; - public static final int MORE = 10165; - public static final int BACK = 10166; public static final int EAGLE_FEATHER = 10167; public static final int EAGLE_CAPE = 10171; public static final int FAKE_BEAK = 10172; @@ -6640,177 +6636,6 @@ public final class ItemID public static final int MISSION_REPORT_10598 = 10598; public static final int MISSION_REPORT_10599 = 10599; public static final int KGP_ID_CARD = 10600; - public static final int MYSTIC_HAT_10601 = 10601; - public static final int MYSTIC_HAT_DARK_10602 = 10602; - public static final int MYSTIC_HAT_LIGHT_10603 = 10603; - public static final int SKELETAL_HELM_10604 = 10604; - public static final int INFINITY_TOP_10605 = 10605; - public static final int SPLITBARK_HELM_10606 = 10606; - public static final int GHOSTLY_BOOTS_10607 = 10607; - public static final int MOONCLAN_HAT_10608 = 10608; - public static final int LUNAR_HELM_10609 = 10609; - public static final int DECORATIVE_ARMOUR_10610 = 10610; - public static final int VOID_KNIGHT_TOP_10611 = 10611; - public static final int ROGUE_MASK_10612 = 10612; - public static final int ROCKSHELL_HELM_10613 = 10613; - public static final int SPINED_HELM_10614 = 10614; - public static final int TRIBAL_MASK_10615 = 10615; - public static final int TRIBAL_MASK_10616 = 10616; - public static final int TRIBAL_MASK_10617 = 10617; - public static final int WHITE_PLATEBODY_10618 = 10618; - public static final int INITIATE_HAUBERK_10619 = 10619; - public static final int PROSELYTE_HAUBERK_10620 = 10620; - public static final int MOURNER_TOP_10621 = 10621; - public static final int KYATT_TOP_10622 = 10622; - public static final int LARUPIA_TOP_10623 = 10623; - public static final int GRAAHK_TOP_10624 = 10624; - public static final int WOOD_CAMO_TOP_10625 = 10625; - public static final int JUNGLE_CAMO_TOP_10626 = 10626; - public static final int DESERT_CAMO_TOP_10627 = 10627; - public static final int POLAR_CAMO_TOP_10628 = 10628; - public static final int MIME_MASK_10629 = 10629; - public static final int PRINCESS_BLOUSE_10630 = 10630; - public static final int ZOMBIE_SHIRT_10631 = 10631; - public static final int CAMO_TOP_10632 = 10632; - public static final int LEDERHOSEN_TOP_10633 = 10633; - public static final int SHADE_ROBE_10634 = 10634; - public static final int CAPE_OF_LEGENDS_10635 = 10635; - public static final int OBSIDIAN_CAPE_10636 = 10636; - public static final int FIRE_CAPE_10637 = 10637; - public static final int TEAM1_CAPE_10638 = 10638; - public static final int ATTACK_CAPE_10639 = 10639; - public static final int STRENGTH_CAPE_10640 = 10640; - public static final int DEFENCE_CAPE_10641 = 10641; - public static final int RANGING_CAPE_10642 = 10642; - public static final int PRAYER_CAPE_10643 = 10643; - public static final int MAGIC_CAPE_10644 = 10644; - public static final int RUNECRAFT_CAPE_10645 = 10645; - public static final int HUNTER_CAPE_10646 = 10646; - public static final int HITPOINTS_CAPE_10647 = 10647; - public static final int AGILITY_CAPE_10648 = 10648; - public static final int HERBLORE_CAPE_10649 = 10649; - public static final int THIEVING_CAPE_10650 = 10650; - public static final int CRAFTING_CAPE_10651 = 10651; - public static final int FLETCHING_CAPE_10652 = 10652; - public static final int SLAYER_CAPE_10653 = 10653; - public static final int CONSTRUCT_CAPE_10654 = 10654; - public static final int MINING_CAPE_10655 = 10655; - public static final int SMITHING_CAPE_10656 = 10656; - public static final int FISHING_CAPE_10657 = 10657; - public static final int COOKING_CAPE_10658 = 10658; - public static final int FIREMAKING_CAPE_10659 = 10659; - public static final int WOODCUTTING_CAPE_10660 = 10660; - public static final int FARMING_CAPE_10661 = 10661; - public static final int QUEST_POINT_CAPE_10662 = 10662; - public static final int SPOTTED_CAPE_10663 = 10663; - public static final int SPOTTIER_CAPE_10664 = 10664; - public static final int BLACK_SHIELD_H1_10665 = 10665; - public static final int ADAMANT_SHIELD_H1_10666 = 10666; - public static final int RUNE_SHIELD_H1_10667 = 10667; - public static final int BLACK_SHIELD_H2_10668 = 10668; - public static final int ADAMANT_SHIELD_H2_10669 = 10669; - public static final int RUNE_SHIELD_H2_10670 = 10670; - public static final int BLACK_SHIELD_H3_10671 = 10671; - public static final int ADAMANT_SHIELD_H3_10672 = 10672; - public static final int RUNE_SHIELD_H3_10673 = 10673; - public static final int BLACK_SHIELD_H4_10674 = 10674; - public static final int ADAMANT_SHIELD_H4_10675 = 10675; - public static final int RUNE_SHIELD_H4_10676 = 10676; - public static final int BLACK_SHIELD_H5_10677 = 10677; - public static final int ADAMANT_SHIELD_H5_10678 = 10678; - public static final int RUNE_SHIELD_H5_10679 = 10679; - public static final int STUDDED_BODY_G_10680 = 10680; - public static final int STUDDED_BODY_T_10681 = 10681; - public static final int DHIDE_BODY_G = 10682; - public static final int DHIDE_BODY_T = 10683; - public static final int DHIDE_BODY_G_10684 = 10684; - public static final int DHIDE_BODY_T_10685 = 10685; - public static final int WIZARD_ROBE_G = 10686; - public static final int WIZARD_ROBE_T = 10687; - public static final int ENCHANTED_TOP_10688 = 10688; - public static final int WIZARD_BOOTS_10689 = 10689; - public static final int BLACK_PLATEBODY_T_10690 = 10690; - public static final int BLACK_PLATEBODY_G_10691 = 10691; - public static final int HIGHWAYMAN_MASK_10692 = 10692; - public static final int BLUE_BERET_10693 = 10693; - public static final int BLACK_BERET_10694 = 10694; - public static final int WHITE_BERET_10695 = 10695; - public static final int RANGER_BOOTS_10696 = 10696; - public static final int ADAMANT_PLATEBODY_T_10697 = 10697; - public static final int ADAMANT_PLATEBODY_G_10698 = 10698; - public static final int BLACK_HELM_H1_10699 = 10699; - public static final int BLACK_HELM_H2_10700 = 10700; - public static final int BLACK_HELM_H3_10701 = 10701; - public static final int BLACK_HELM_H4_10702 = 10702; - public static final int BLACK_HELM_H5_10703 = 10703; - public static final int RUNE_HELM_H1_10704 = 10704; - public static final int RUNE_HELM_H2_10705 = 10705; - public static final int RUNE_HELM_H3_10706 = 10706; - public static final int RUNE_HELM_H4_10707 = 10707; - public static final int RUNE_HELM_H5_10708 = 10708; - public static final int ADAMANT_HELM_H1_10709 = 10709; - public static final int ADAMANT_HELM_H2_10710 = 10710; - public static final int ADAMANT_HELM_H3_10711 = 10711; - public static final int ADAMANT_HELM_H4_10712 = 10712; - public static final int ADAMANT_HELM_H5_10713 = 10713; - public static final int BOBS_RED_SHIRT_10714 = 10714; - public static final int BOBS_BLUE_SHIRT_10715 = 10715; - public static final int BOBS_GREEN_SHIRT_10716 = 10716; - public static final int BOBS_BLACK_SHIRT_10717 = 10717; - public static final int BOBS_PURPLE_SHIRT_10718 = 10718; - public static final int AMULET_OF_GLORY_T_10719 = 10719; - public static final int GUTHIX_CAPE_10720 = 10720; - public static final int FROG_MASK_10721 = 10721; - public static final int REINDEER_HAT_10722 = 10722; - public static final int JACK_LANTERN_MASK_10723 = 10723; - public static final int SKELETON_BOOTS_10724 = 10724; - public static final int SKELETON_GLOVES_10725 = 10725; - public static final int SKELETON_LEGGINGS_10726 = 10726; - public static final int SKELETON_SHIRT_10727 = 10727; - public static final int SKELETON_MASK_10728 = 10728; - public static final int EASTER_RING_10729 = 10729; - public static final int BLUE_MARIONETTE_10730 = 10730; - public static final int ZOMBIE_HEAD_10731 = 10731; - public static final int RUBBER_CHICKEN_10732 = 10732; - public static final int YOYO_10733 = 10733; - public static final int BUNNY_EARS_10734 = 10734; - public static final int SCYTHE_10735 = 10735; - public static final int STRENGTH_AMULET_T_10736 = 10736; - public static final int AMULET_OF_MAGIC_T_10738 = 10738; - public static final int A_POWDERED_WIG_10740 = 10740; - public static final int FLARED_TROUSERS_10742 = 10742; - public static final int PANTALOONS_10744 = 10744; - public static final int SLEEPING_CAP_10746 = 10746; - public static final int BLACK_ELEGANT_SHIRT_10748 = 10748; - public static final int RED_ELEGANT_SHIRT_10750 = 10750; - public static final int BLUE_ELEGANT_SHIRT_10752 = 10752; - public static final int GREEN_ELEGANT_SHIRT_10754 = 10754; - public static final int PURPLE_ELEGANT_SHIRT_10756 = 10756; - public static final int RED_BOATER_10758 = 10758; - public static final int ORANGE_BOATER_10760 = 10760; - public static final int GREEN_BOATER_10762 = 10762; - public static final int BLUE_BOATER_10764 = 10764; - public static final int BLACK_BOATER_10766 = 10766; - public static final int RED_HEADBAND_10768 = 10768; - public static final int BLACK_HEADBAND_10770 = 10770; - public static final int BROWN_HEADBAND_10772 = 10772; - public static final int PIRATES_HAT_10774 = 10774; - public static final int ZAMORAK_PLATEBODY_10776 = 10776; - public static final int SARADOMIN_PLATE = 10778; - public static final int GUTHIX_PLATEBODY_10780 = 10780; - public static final int GILDED_PLATEBODY_10782 = 10782; - public static final int SARADOMIN_ROBE_TOP_10784 = 10784; - public static final int ZAMORAK_ROBE_TOP_10786 = 10786; - public static final int GUTHIX_ROBE_TOP_10788 = 10788; - public static final int ZAMORAK_DHIDE_BODY_10790 = 10790; - public static final int SARADOMIN_DHIDE_BODY_10792 = 10792; - public static final int GUTHIX_DRAGONHIDE = 10794; - public static final int ROBIN_HOOD_HAT_10796 = 10796; - public static final int RUNE_PLATEBODY_G_10798 = 10798; - public static final int RUNE_PLATEBODY_T_10800 = 10800; - public static final int TAN_CAVALIER_10802 = 10802; - public static final int DARK_CAVALIER_10804 = 10804; - public static final int BLACK_CAVALIER_10806 = 10806; public static final int ARCTIC_PYRE_LOGS = 10808; public static final int ARCTIC_PINE_LOGS = 10810; public static final int SPLIT_LOG = 10812; @@ -6870,7 +6695,6 @@ public final class ItemID public static final int BLACK_SATCHEL = 10880; public static final int GOLD_SATCHEL = 10881; public static final int RUNE_SATCHEL = 10882; - public static final int HARD_HAT_10883 = 10883; public static final int FUSE_10884 = 10884; public static final int KEG = 10885; public static final int PRAYER_BOOK = 10886; @@ -6910,7 +6734,6 @@ public final class ItemID public static final int REWARD_TOKEN_10942 = 10942; public static final int REWARD_TOKEN_10943 = 10943; public static final int REWARD_TOKEN_10944 = 10944; - public static final int LUMBERJACK_TOP_10945 = 10945; public static final int PUSHUP = 10946; public static final int RUN = 10947; public static final int SITUP = 10948; @@ -6970,14 +6793,10 @@ public final class ItemID public static final int WAND = 11012; public static final int INFUSED_WAND = 11013; public static final int BEACON_RING = 11014; - public static final int CHICKEN_HEAD = 11015; - public static final int CHICKEN_FEET = 11016; - public static final int CHICKEN_WINGS = 11017; - public static final int CHICKEN_LEGS = 11018; - public static final int CHICKEN_FEET_11019 = 11019; - public static final int CHICKEN_WINGS_11020 = 11020; - public static final int CHICKEN_HEAD_11021 = 11021; - public static final int CHICKEN_LEGS_11022 = 11022; + public static final int CHICKEN_FEET = 11019; + public static final int CHICKEN_WINGS = 11020; + public static final int CHICKEN_HEAD = 11021; + public static final int CHICKEN_LEGS = 11022; public static final int MAGIC_EGG = 11023; public static final int RABBIT_MOULD = 11024; public static final int CHOCOLATE_CHUNKS = 11025; @@ -7055,7 +6874,6 @@ public final class ItemID public static final int ONYX_BRACELET = 11130; public static final int ONYX_BRACELET_11132 = 11132; public static final int REGEN_BRACELET = 11133; - public static final int BOMBER_JACKET_11135 = 11135; public static final int KARAMJA_GLOVES_1 = 11136; public static final int ANTIQUE_LAMP_11137 = 11137; public static final int KARAMJA_GLOVES_2 = 11138; @@ -7144,12 +6962,9 @@ public final class ItemID public static final int DUMMY_11269 = 11269; public static final int DUMMY_11271 = 11271; public static final int IMPLING_SCROLL = 11273; - public static final int HAM_SHIRT_11274 = 11274; - public static final int CAVALIER_MASK = 11277; - public static final int BERET_MASK = 11278; public static final int ELVARGS_HEAD = 11279; - public static final int CAVALIER_MASK_11280 = 11280; - public static final int BERET_MASK_11282 = 11282; + public static final int CAVALIER_MASK = 11280; + public static final int BERET_MASK = 11282; public static final int DRAGONFIRE_SHIELD = 11283; public static final int DRAGONFIRE_SHIELD_11284 = 11284; public static final int DRACONIC_VISAGE = 11286; @@ -7285,9 +7100,6 @@ public final class ItemID public static final int VOID_SEAL3 = 11671; public static final int VOID_SEAL2 = 11672; public static final int VOID_SEAL1 = 11673; - public static final int VOID_MAGE_HELM_11674 = 11674; - public static final int VOID_RANGER_HELM_11675 = 11675; - public static final int VOID_MELEE_HELM_11676 = 11676; public static final int EXPLORERS_NOTES = 11677; public static final int BLACK_KNIGHT_HELM = 11678; public static final int ANTIQUE_LAMP_11679 = 11679; @@ -8409,7 +8221,6 @@ public final class ItemID public static final int MUSIC_CAPE = 13221; public static final int MUSIC_CAPET = 13222; public static final int MUSIC_HOOD = 13223; - public static final int MUSIC_CAPE_13224 = 13224; public static final int TZREKJAD = 13225; public static final int HERB_SACK = 13226; public static final int ETERNAL_CRYSTAL = 13227; @@ -8449,7 +8260,6 @@ public final class ItemID public static final int OVERSEERS_BOOK = 13279; public static final int MAX_CAPE = 13280; public static final int MAX_HOOD = 13281; - public static final int MAX_CAPE_13282 = 13282; public static final int GRAVEDIGGER_MASK = 13283; public static final int GRAVEDIGGER_TOP = 13284; public static final int GRAVEDIGGER_LEGGINGS = 13285; diff --git a/runelite-api/src/main/java/net/runelite/api/NullItemID.java b/runelite-api/src/main/java/net/runelite/api/NullItemID.java index 66eab79412..1588dfd749 100644 --- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java @@ -3590,6 +3590,8 @@ public final class NullItemID public static final int NULL_9742 = 9742; public static final int NULL_9744 = 9744; public static final int NULL_9746 = 9746; + public static final int NULL_9815 = 9815; + public static final int NULL_9816 = 9816; public static final int NULL_9868 = 9868; public static final int NULL_9869 = 9869; public static final int NULL_9870 = 9870; @@ -3717,6 +3719,8 @@ public final class NullItemID public static final int NULL_10162 = 10162; public static final int NULL_10163 = 10163; public static final int NULL_10164 = 10164; + public static final int NULL_10165 = 10165; + public static final int NULL_10166 = 10166; public static final int NULL_10168 = 10168; public static final int NULL_10169 = 10169; public static final int NULL_10170 = 10170; @@ -3846,41 +3850,212 @@ public final class NullItemID public static final int NULL_10579 = 10579; public static final int NULL_10580 = 10580; public static final int NULL_10590 = 10590; + public static final int NULL_10601 = 10601; + public static final int NULL_10602 = 10602; + public static final int NULL_10603 = 10603; + public static final int NULL_10604 = 10604; + public static final int NULL_10605 = 10605; + public static final int NULL_10606 = 10606; + public static final int NULL_10607 = 10607; + public static final int NULL_10608 = 10608; + public static final int NULL_10609 = 10609; + public static final int NULL_10610 = 10610; + public static final int NULL_10611 = 10611; + public static final int NULL_10612 = 10612; + public static final int NULL_10613 = 10613; + public static final int NULL_10614 = 10614; + public static final int NULL_10615 = 10615; + public static final int NULL_10616 = 10616; + public static final int NULL_10617 = 10617; + public static final int NULL_10618 = 10618; + public static final int NULL_10619 = 10619; + public static final int NULL_10620 = 10620; + public static final int NULL_10621 = 10621; + public static final int NULL_10622 = 10622; + public static final int NULL_10623 = 10623; + public static final int NULL_10624 = 10624; + public static final int NULL_10625 = 10625; + public static final int NULL_10626 = 10626; + public static final int NULL_10627 = 10627; + public static final int NULL_10628 = 10628; + public static final int NULL_10629 = 10629; + public static final int NULL_10630 = 10630; + public static final int NULL_10631 = 10631; + public static final int NULL_10632 = 10632; + public static final int NULL_10633 = 10633; + public static final int NULL_10634 = 10634; + public static final int NULL_10635 = 10635; + public static final int NULL_10636 = 10636; + public static final int NULL_10637 = 10637; + public static final int NULL_10638 = 10638; + public static final int NULL_10639 = 10639; + public static final int NULL_10640 = 10640; + public static final int NULL_10641 = 10641; + public static final int NULL_10642 = 10642; + public static final int NULL_10643 = 10643; + public static final int NULL_10644 = 10644; + public static final int NULL_10645 = 10645; + public static final int NULL_10646 = 10646; + public static final int NULL_10647 = 10647; + public static final int NULL_10648 = 10648; + public static final int NULL_10649 = 10649; + public static final int NULL_10650 = 10650; + public static final int NULL_10651 = 10651; + public static final int NULL_10652 = 10652; + public static final int NULL_10653 = 10653; + public static final int NULL_10654 = 10654; + public static final int NULL_10655 = 10655; + public static final int NULL_10656 = 10656; + public static final int NULL_10657 = 10657; + public static final int NULL_10658 = 10658; + public static final int NULL_10659 = 10659; + public static final int NULL_10660 = 10660; + public static final int NULL_10661 = 10661; + public static final int NULL_10662 = 10662; + public static final int NULL_10663 = 10663; + public static final int NULL_10664 = 10664; + public static final int NULL_10665 = 10665; + public static final int NULL_10666 = 10666; + public static final int NULL_10667 = 10667; + public static final int NULL_10668 = 10668; + public static final int NULL_10669 = 10669; + public static final int NULL_10670 = 10670; + public static final int NULL_10671 = 10671; + public static final int NULL_10672 = 10672; + public static final int NULL_10673 = 10673; + public static final int NULL_10674 = 10674; + public static final int NULL_10675 = 10675; + public static final int NULL_10676 = 10676; + public static final int NULL_10677 = 10677; + public static final int NULL_10678 = 10678; + public static final int NULL_10679 = 10679; + public static final int NULL_10680 = 10680; + public static final int NULL_10681 = 10681; + public static final int NULL_10682 = 10682; + public static final int NULL_10683 = 10683; + public static final int NULL_10684 = 10684; + public static final int NULL_10685 = 10685; + public static final int NULL_10686 = 10686; + public static final int NULL_10687 = 10687; + public static final int NULL_10688 = 10688; + public static final int NULL_10689 = 10689; + public static final int NULL_10690 = 10690; + public static final int NULL_10691 = 10691; + public static final int NULL_10692 = 10692; + public static final int NULL_10693 = 10693; + public static final int NULL_10694 = 10694; + public static final int NULL_10695 = 10695; + public static final int NULL_10696 = 10696; + public static final int NULL_10697 = 10697; + public static final int NULL_10698 = 10698; + public static final int NULL_10699 = 10699; + public static final int NULL_10700 = 10700; + public static final int NULL_10701 = 10701; + public static final int NULL_10702 = 10702; + public static final int NULL_10703 = 10703; + public static final int NULL_10704 = 10704; + public static final int NULL_10705 = 10705; + public static final int NULL_10706 = 10706; + public static final int NULL_10707 = 10707; + public static final int NULL_10708 = 10708; + public static final int NULL_10709 = 10709; + public static final int NULL_10710 = 10710; + public static final int NULL_10711 = 10711; + public static final int NULL_10712 = 10712; + public static final int NULL_10713 = 10713; + public static final int NULL_10714 = 10714; + public static final int NULL_10715 = 10715; + public static final int NULL_10716 = 10716; + public static final int NULL_10717 = 10717; + public static final int NULL_10718 = 10718; + public static final int NULL_10719 = 10719; + public static final int NULL_10720 = 10720; + public static final int NULL_10721 = 10721; + public static final int NULL_10722 = 10722; + public static final int NULL_10723 = 10723; + public static final int NULL_10724 = 10724; + public static final int NULL_10725 = 10725; + public static final int NULL_10726 = 10726; + public static final int NULL_10727 = 10727; + public static final int NULL_10728 = 10728; + public static final int NULL_10729 = 10729; + public static final int NULL_10730 = 10730; + public static final int NULL_10731 = 10731; + public static final int NULL_10732 = 10732; + public static final int NULL_10733 = 10733; + public static final int NULL_10734 = 10734; + public static final int NULL_10735 = 10735; + public static final int NULL_10736 = 10736; public static final int NULL_10737 = 10737; + public static final int NULL_10738 = 10738; public static final int NULL_10739 = 10739; + public static final int NULL_10740 = 10740; public static final int NULL_10741 = 10741; + public static final int NULL_10742 = 10742; public static final int NULL_10743 = 10743; + public static final int NULL_10744 = 10744; public static final int NULL_10745 = 10745; + public static final int NULL_10746 = 10746; public static final int NULL_10747 = 10747; + public static final int NULL_10748 = 10748; public static final int NULL_10749 = 10749; + public static final int NULL_10750 = 10750; public static final int NULL_10751 = 10751; + public static final int NULL_10752 = 10752; public static final int NULL_10753 = 10753; + public static final int NULL_10754 = 10754; public static final int NULL_10755 = 10755; + public static final int NULL_10756 = 10756; public static final int NULL_10757 = 10757; + public static final int NULL_10758 = 10758; public static final int NULL_10759 = 10759; + public static final int NULL_10760 = 10760; public static final int NULL_10761 = 10761; + public static final int NULL_10762 = 10762; public static final int NULL_10763 = 10763; + public static final int NULL_10764 = 10764; public static final int NULL_10765 = 10765; + public static final int NULL_10766 = 10766; public static final int NULL_10767 = 10767; + public static final int NULL_10768 = 10768; public static final int NULL_10769 = 10769; + public static final int NULL_10770 = 10770; public static final int NULL_10771 = 10771; + public static final int NULL_10772 = 10772; public static final int NULL_10773 = 10773; + public static final int NULL_10774 = 10774; public static final int NULL_10775 = 10775; + public static final int NULL_10776 = 10776; public static final int NULL_10777 = 10777; + public static final int NULL_10778 = 10778; public static final int NULL_10779 = 10779; + public static final int NULL_10780 = 10780; public static final int NULL_10781 = 10781; + public static final int NULL_10782 = 10782; public static final int NULL_10783 = 10783; + public static final int NULL_10784 = 10784; public static final int NULL_10785 = 10785; + public static final int NULL_10786 = 10786; public static final int NULL_10787 = 10787; + public static final int NULL_10788 = 10788; public static final int NULL_10789 = 10789; + public static final int NULL_10790 = 10790; public static final int NULL_10791 = 10791; + public static final int NULL_10792 = 10792; public static final int NULL_10793 = 10793; + public static final int NULL_10794 = 10794; public static final int NULL_10795 = 10795; + public static final int NULL_10796 = 10796; public static final int NULL_10797 = 10797; + public static final int NULL_10798 = 10798; public static final int NULL_10799 = 10799; + public static final int NULL_10800 = 10800; public static final int NULL_10801 = 10801; + public static final int NULL_10802 = 10802; public static final int NULL_10803 = 10803; + public static final int NULL_10804 = 10804; public static final int NULL_10805 = 10805; + public static final int NULL_10806 = 10806; public static final int NULL_10807 = 10807; public static final int NULL_10809 = 10809; public static final int NULL_10811 = 10811; @@ -3898,6 +4073,7 @@ public final class NullItemID public static final int NULL_10867 = 10867; public static final int NULL_10868 = 10868; public static final int NULL_10869 = 10869; + public static final int NULL_10883 = 10883; public static final int NULL_10892 = 10892; public static final int NULL_10900 = 10900; public static final int NULL_10901 = 10901; @@ -3920,6 +4096,7 @@ public final class NullItemID public static final int NULL_10930 = 10930; public static final int NULL_10932 = 10932; public static final int NULL_10938 = 10938; + public static final int NULL_10945 = 10945; public static final int NULL_10953 = 10953; public static final int NULL_10955 = 10955; public static final int NULL_10957 = 10957; @@ -3930,6 +4107,10 @@ public final class NullItemID public static final int NULL_11000 = 11000; public static final int NULL_11004 = 11004; public static final int NULL_11005 = 11005; + public static final int NULL_11015 = 11015; + public static final int NULL_11016 = 11016; + public static final int NULL_11017 = 11017; + public static final int NULL_11018 = 11018; public static final int NULL_11038 = 11038; public static final int NULL_11063 = 11063; public static final int NULL_11064 = 11064; @@ -3965,6 +4146,7 @@ public final class NullItemID public static final int NULL_11129 = 11129; public static final int NULL_11131 = 11131; public static final int NULL_11134 = 11134; + public static final int NULL_11135 = 11135; public static final int NULL_11142 = 11142; public static final int NULL_11143 = 11143; public static final int NULL_11144 = 11144; @@ -4015,8 +4197,11 @@ public final class NullItemID public static final int NULL_11265 = 11265; public static final int NULL_11270 = 11270; public static final int NULL_11272 = 11272; + public static final int NULL_11274 = 11274; public static final int NULL_11275 = 11275; public static final int NULL_11276 = 11276; + public static final int NULL_11277 = 11277; + public static final int NULL_11278 = 11278; public static final int NULL_11281 = 11281; public static final int NULL_11285 = 11285; public static final int NULL_11287 = 11287; @@ -4274,6 +4459,9 @@ public final class NullItemID public static final int NULL_11660 = 11660; public static final int NULL_11661 = 11661; public static final int NULL_11662 = 11662; + public static final int NULL_11674 = 11674; + public static final int NULL_11675 = 11675; + public static final int NULL_11676 = 11676; public static final int NULL_11683 = 11683; public static final int NULL_11684 = 11684; public static final int NULL_11685 = 11685; @@ -4700,6 +4888,7 @@ public final class NullItemID public static final int NULL_13214 = 13214; public static final int NULL_13219 = 13219; public static final int NULL_13220 = 13220; + public static final int NULL_13224 = 13224; public static final int NULL_13228 = 13228; public static final int NULL_13230 = 13230; public static final int NULL_13232 = 13232; @@ -4718,6 +4907,7 @@ public final class NullItemID public static final int NULL_13270 = 13270; public static final int NULL_13272 = 13272; public static final int NULL_13278 = 13278; + public static final int NULL_13282 = 13282; public static final int NULL_13289 = 13289; public static final int NULL_13290 = 13290; public static final int NULL_13291 = 13291; From 6325285fb62455bb15b1e6d5c13f0042e3ef05e3 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Wed, 2 Sep 2020 11:10:15 +0000 Subject: [PATCH 15/25] Update Item variations to 2020-09-02-rev191 --- .../src/main/resources/item_variations.json | 535 ++---------------- 1 file changed, 36 insertions(+), 499 deletions(-) diff --git a/runelite-client/src/main/resources/item_variations.json b/runelite-client/src/main/resources/item_variations.json index ab10c5e0fc..0adad5f44c 100644 --- a/runelite-client/src/main/resources/item_variations.json +++ b/runelite-client/src/main/resources/item_variations.json @@ -559,10 +559,6 @@ 20199, 23303 ], - "shade robe": [ - 548, - 10634 - ], "ghostspeak amulet": [ 552, 4250 @@ -1666,18 +1662,13 @@ 12445, 12447 ], - "bunny ears": [ - 1037, - 10734 - ], "blue partyhat": [ 1042, 2422 ], "cape of legends": [ 1052, - 8284, - 10635 + 8284 ], "leather boots": [ 1061, @@ -1793,8 +1784,6 @@ 1123, 2599, 2607, - 10697, - 10698, 20415, 23392, 23395, @@ -1806,8 +1795,6 @@ 1125, 2583, 2591, - 10690, - 10691, 23366, 23369, 23372, @@ -1818,8 +1805,6 @@ 1127, 2615, 2623, - 10798, - 10800, 20421, 23209, 23212, @@ -1834,9 +1819,7 @@ "studded body": [ 1133, 7362, - 7364, - 10680, - 10681 + 7364 ], "green dhide body": [ 1135, @@ -1880,11 +1863,6 @@ 10300, 10302, 10304, - 10709, - 10710, - 10711, - 10712, - 10713, 20561 ], "rune helm": [ @@ -1895,12 +1873,7 @@ 10288, 10290, 10292, - 10294, - 10704, - 10705, - 10706, - 10707, - 10708 + 10294 ], "black helm": [ 1165, @@ -1910,12 +1883,7 @@ 10308, 10310, 10312, - 10314, - 10699, - 10700, - 10701, - 10702, - 10703 + 10314 ], "wooden shield": [ 1171, @@ -2144,10 +2112,6 @@ 1410, 12658 ], - "scythe": [ - 1419, - 10735 - ], "amulet of accuracy": [ 1478, 20584 @@ -2252,7 +2216,6 @@ 10358, 10360, 10362, - 10719, 11964, 11966, 11976, @@ -2269,8 +2232,7 @@ ], "amulet of magic": [ 1727, - 10366, - 10738 + 10366 ], "amulet of defence": [ 1729, @@ -2718,10 +2680,6 @@ 3718, 5604 ], - "guthix cape": [ - 2413, - 10720 - ], "bronze key": [ 2418, 5585, @@ -2845,70 +2803,6 @@ 20789, 20790 ], - "ranger boots": [ - 2577, - 10696 - ], - "wizard boots": [ - 2579, - 10689 - ], - "robin hood hat": [ - 2581, - 10796 - ], - "highwayman mask": [ - 2631, - 10692 - ], - "blue beret": [ - 2633, - 10693 - ], - "black beret": [ - 2635, - 10694 - ], - "white beret": [ - 2637, - 10695 - ], - "tan cavalier": [ - 2639, - 10802 - ], - "dark cavalier": [ - 2641, - 10804 - ], - "black cavalier": [ - 2643, - 10806 - ], - "red headband": [ - 2645, - 10768 - ], - "black headband": [ - 2647, - 10770 - ], - "brown headband": [ - 2649, - 10772 - ], - "pirates hat": [ - 2651, - 10774 - ], - "zamorak platebody": [ - 2653, - 10776 - ], - "guthix platebody": [ - 2669, - 10780 - ], "puzzle box": [ 2795, 2798, @@ -3121,10 +3015,6 @@ 3054, 21200 ], - "mime mask": [ - 3057, - 10629 - ], "black dart": [ 3093, 3094, @@ -3240,7 +3130,6 @@ ], "splitbark helm": [ 3385, - 10606, 20568 ], "unfinished potion": [ @@ -3270,10 +3159,6 @@ 3434, 3436 ], - "gilded platebody": [ - 3481, - 10782 - ], "shoe": [ 3680, 3681, @@ -3477,7 +3362,6 @@ 4505, 4509, 4510, - 10610, 11893, 11894, 11895, @@ -3520,10 +3404,6 @@ 20491, 24161 ], - "yoyo": [ - 4079, - 10733 - ], "salve amulet": [ 4081, 10588, @@ -3544,9 +3424,6 @@ 4089, 4099, 4109, - 10601, - 10602, - 10603, 20562, 23047 ], @@ -3728,10 +3605,6 @@ 4284, 4285 ], - "ham shirt": [ - 4298, - 11274 - ], "teamcape": [ 4315, 4317, @@ -3782,8 +3655,7 @@ 4407, 4409, 4411, - 4413, - 10638 + 4413 ], "guthix rest": [ 4417, @@ -3870,7 +3742,6 @@ ], "rubber chicken": [ 4566, - 10732, 22666 ], "book page": [ @@ -4444,10 +4315,6 @@ 5518, 5519 ], - "rogue mask": [ - 5554, - 10612 - ], "gear": [ 5562, 5563, @@ -4468,10 +4335,6 @@ 13135, 13136 ], - "initiate hauberk": [ - 5575, - 10619 - ], "metal spade": [ 5586, 5587 @@ -4612,10 +4475,6 @@ 6063, 20635 ], - "mourner top": [ - 6065, - 10621 - ], "teleport crystal": [ 6099, 6100, @@ -4624,10 +4483,6 @@ 13102, 23904 ], - "ghostly boots": [ - 6106, - 10607 - ], "ghostly robe": [ 6107, 6108 @@ -4636,35 +4491,11 @@ 6119, 6120 ], - "rockshell helm": [ - 6128, - 10613 - ], - "spined helm": [ - 6131, - 10614 - ], - "skeletal helm": [ - 6137, - 10604 - ], "raw pheasant": [ 6178, 6179, 11704 ], - "lederhosen top": [ - 6180, - 10633 - ], - "princess blouse": [ - 6186, - 10630 - ], - "frog mask": [ - 6188, - 10721 - ], "raw fishlike thing": [ 6200, 6204 @@ -4728,10 +4559,7 @@ "tribal mask": [ 6335, 6337, - 6339, - 10615, - 10616, - 10617 + 6339 ], "tribal top": [ 6341, @@ -4842,13 +4670,11 @@ ], "obsidian cape": [ 6568, - 10636, 20050 ], "fire cape": [ 6570, 10566, - 10637, 20445, 24223 ], @@ -4867,10 +4693,6 @@ 6595, 6597 ], - "white platebody": [ - 6617, - 10618 - ], "hand mirror": [ 6639, 23775 @@ -4912,8 +4734,7 @@ ], "camo top": [ 6654, - 6657, - 10632 + 6657 ], "camo bottoms": [ 6655, @@ -4962,7 +4783,6 @@ ], "zombie head": [ 6722, - 10731, 19912 ], "seers ring": [ @@ -5063,22 +4883,13 @@ 6853, 6855 ], - "bobble hat": [ - 6856, - 9815 - ], - "bobble scarf": [ - 6857, - 9816 - ], "blue marionette": [ 6865, 6868, 6875, 6876, 6877, - 6878, - 10730 + 6878 ], "green marionette": [ 6866, @@ -5125,7 +4936,6 @@ ], "infinity top": [ 6916, - 10605, 20574 ], "infinity bottoms": [ @@ -5231,65 +5041,26 @@ 7218, 7220 ], - "red boater": [ - 7319, - 10758 - ], - "orange boater": [ - 7321, - 10760 - ], - "green boater": [ - 7323, - 10762 - ], - "blue boater": [ - 7325, - 10764 - ], - "black boater": [ - 7327, - 10766 - ], "black shield": [ 7332, 7338, 7344, 7350, - 7356, - 10665, - 10668, - 10671, - 10674, - 10677 + 7356 ], "adamant shield": [ 7334, 7340, 7346, 7352, - 7358, - 10666, - 10669, - 10672, - 10675, - 10678 + 7358 ], "rune shield": [ 7336, 7342, 7348, 7354, - 7360, - 10667, - 10670, - 10673, - 10676, - 10679 - ], - "enchanted top": [ - 7399, - 10688 + 7360 ], "magic secateurs": [ 7409, @@ -5398,10 +5169,6 @@ 7590, 7591 ], - "zombie shirt": [ - 7592, - 10631 - ], "item": [ 7597, 7598, @@ -5721,10 +5488,6 @@ 7914, 7916 ], - "easter ring": [ - 7927, - 10729 - ], "fresh monkfish": [ 7942, 7943 @@ -6260,7 +6023,6 @@ ], "void knight top": [ 8839, - 10611, 20465, 24177 ], @@ -6403,10 +6165,6 @@ 9065, 20722 ], - "moonclan hat": [ - 9069, - 10608 - ], "astral rune": [ 9075, 11699 @@ -6415,10 +6173,6 @@ 9094, 20799 ], - "lunar helm": [ - 9096, - 10609 - ], "blurite bolts": [ 9139, 9286, @@ -6588,7 +6342,6 @@ ], "proselyte hauberk": [ 9674, - 10620, 20564 ], "proselyte cuisse": [ @@ -6617,118 +6370,92 @@ ], "attack cape": [ 9747, - 9748, - 10639 + 9748 ], "strength cape": [ 9750, - 9751, - 10640 + 9751 ], "defence cape": [ 9753, - 9754, - 10641 + 9754 ], "ranging cape": [ 9756, - 9757, - 10642 + 9757 ], "prayer cape": [ 9759, - 9760, - 10643 + 9760 ], "magic cape": [ 9762, - 9763, - 10644 + 9763 ], "runecraft cape": [ 9765, - 9766, - 10645 + 9766 ], "hitpoints cape": [ 9768, - 9769, - 10647 + 9769 ], "agility cape": [ 9771, 9772, - 10648, 13340, 13341 ], "herblore cape": [ 9774, - 9775, - 10649 + 9775 ], "thieving cape": [ 9777, - 9778, - 10650 + 9778 ], "crafting cape": [ 9780, - 9781, - 10651 + 9781 ], "fletching cape": [ 9783, - 9784, - 10652 + 9784 ], "slayer cape": [ 9786, - 9787, - 10653 + 9787 ], "construct cape": [ 9789, - 9790, - 10654 + 9790 ], "mining cape": [ 9792, - 9793, - 10655 + 9793 ], "smithing cape": [ 9795, - 9796, - 10656 + 9796 ], "fishing cape": [ 9798, - 9799, - 10657 + 9799 ], "cooking cape": [ 9801, - 9802, - 10658 + 9802 ], "firemaking cape": [ 9804, - 9805, - 10659 - ], - "woodcutting cape": [ - 9807, - 10660 + 9805 ], "farming cape": [ 9810, - 9811, - 10661 + 9811 ], "quest point cape": [ 9813, - 10662, 13068 ], "oak cape rack": [ @@ -6792,38 +6519,9 @@ 9911, 9912 ], - "jack lantern mask": [ - 9920, - 10723 - ], - "skeleton boots": [ - 9921, - 10724 - ], - "skeleton gloves": [ - 9922, - 10725 - ], - "skeleton leggings": [ - 9923, - 10726 - ], - "skeleton shirt": [ - 9924, - 10727 - ], - "skeleton mask": [ - 9925, - 10728 - ], - "bomber jacket": [ - 9944, - 11135 - ], "hunter cape": [ 9948, - 9949, - 10646 + 9949 ], "kebbit": [ 9953, @@ -6867,63 +6565,13 @@ 10027, 10028 ], - "kyatt top": [ - 10037, - 10622 - ], - "larupia top": [ - 10043, - 10623 - ], - "graahk top": [ - 10049, - 10624 - ], - "wood camo top": [ - 10053, - 10625 - ], - "jungle camo top": [ - 10057, - 10626 - ], - "desert camo top": [ - 10061, - 10627 - ], - "polar camo top": [ - 10065, - 10628 - ], "spotted cape": [ 10069, - 10073, - 10663 + 10073 ], "spottier cape": [ 10071, - 10074, - 10664 - ], - "bobs red shirt": [ - 10316, - 10714 - ], - "bobs blue shirt": [ - 10318, - 10715 - ], - "bobs green shirt": [ - 10320, - 10716 - ], - "bobs black shirt": [ - 10322, - 10717 - ], - "bobs purple shirt": [ - 10324, - 10718 + 10074 ], "3rd age robe top": [ 10338, @@ -6933,74 +6581,10 @@ 10340, 20577 ], - "strength amulet": [ - 10364, - 10736 - ], - "zamorak dhide body": [ - 10370, - 10790 - ], - "saradomin dhide body": [ - 10386, - 10792 - ], - "a powdered wig": [ - 10392, - 10740 - ], - "flared trousers": [ - 10394, - 10742 - ], - "pantaloons": [ - 10396, - 10744 - ], - "sleeping cap": [ - 10398, - 10746 - ], - "black elegant shirt": [ - 10400, - 10748 - ], - "red elegant shirt": [ - 10404, - 10750 - ], - "blue elegant shirt": [ - 10408, - 10752 - ], - "green elegant shirt": [ - 10412, - 10754 - ], - "purple elegant shirt": [ - 10416, - 10756 - ], - "saradomin robe top": [ - 10458, - 10784 - ], - "zamorak robe top": [ - 10460, - 10786 - ], - "guthix robe top": [ - 10462, - 10788 - ], "avas accumulator": [ 10499, 23609 ], - "reindeer hat": [ - 10507, - 10722 - ], "fremennik sea boots": [ 10510, 13129, @@ -7161,16 +6745,6 @@ 10598, 10599 ], - "dhide body": [ - 10682, - 10683, - 10684, - 10685 - ], - "wizard robe": [ - 10686, - 10687 - ], "yakhide armour": [ 10822, 10824 @@ -7183,10 +6757,6 @@ 10857, 24792 ], - "hard hat": [ - 10862, - 10883 - ], "keg": [ 10885, 10898 @@ -7219,10 +6789,6 @@ 23563, 23565 ], - "lumberjack top": [ - 10939, - 10945 - ], "skull staples": [ 10950, 10951 @@ -7243,22 +6809,6 @@ 10993, 10994 ], - "chicken head": [ - 11015, - 11021 - ], - "chicken feet": [ - 11016, - 11019 - ], - "chicken wings": [ - 11017, - 11020 - ], - "chicken legs": [ - 11018, - 11022 - ], "rotten barrel": [ 11044, 11045 @@ -7374,14 +6924,6 @@ 12768, 20408 ], - "cavalier mask": [ - 11277, - 11280 - ], - "beret mask": [ - 11278, - 11282 - ], "dragonfire shield": [ 11283, 11284 @@ -7566,19 +7108,16 @@ ], "void mage helm": [ 11663, - 11674, 20477, 24183 ], "void ranger helm": [ 11664, - 11675, 20479, 24184 ], "void melee helm": [ 11665, - 11676, 20481, 24185 ], @@ -8312,8 +7851,7 @@ ], "music cape": [ 13221, - 13222, - 13224 + 13222 ], "herb sack": [ 13226, @@ -8339,7 +7877,6 @@ ], "max cape": [ 13280, - 13282, 13342 ], "bank key": [ From 118968253402ac10178058adb10cdeca89747680 Mon Sep 17 00:00:00 2001 From: RuneLite Cache-Code Autoupdater Date: Wed, 2 Sep 2020 11:10:21 +0000 Subject: [PATCH 16/25] Update Scripts to 2020-09-02-rev191 --- .../src/main/scripts/PrivateMessage.hash | 2 +- .../src/main/scripts/PrivateMessage.rs2asm | 241 +++++++++--------- .../src/main/scripts/ResetChatboxInput.hash | 2 +- .../src/main/scripts/ResetChatboxInput.rs2asm | 20 +- 4 files changed, 136 insertions(+), 129 deletions(-) diff --git a/runelite-client/src/main/scripts/PrivateMessage.hash b/runelite-client/src/main/scripts/PrivateMessage.hash index 883f7d3747..2153464d80 100644 --- a/runelite-client/src/main/scripts/PrivateMessage.hash +++ b/runelite-client/src/main/scripts/PrivateMessage.hash @@ -1 +1 @@ -BDBD51EF867D393E41B723CD28720A91E2ED34FAFF581AC69B37C648EAC7B714 \ No newline at end of file +12B91B740FE760F73A23EF34E1D4F53EA00F829EF7FC33E648F6FF5EA17417A0 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/PrivateMessage.rs2asm b/runelite-client/src/main/scripts/PrivateMessage.rs2asm index 3d9d8901f6..c69081cf40 100644 --- a/runelite-client/src/main/scripts/PrivateMessage.rs2asm +++ b/runelite-client/src/main/scripts/PrivateMessage.rs2asm @@ -5,13 +5,16 @@ .string_var_count 1 get_varc_int 5 iconst 14 - if_icmpeq LABEL4 - jump LABEL7 -LABEL4: + if_icmpeq LABEL7 + get_varc_int 5 + iconst 17 + if_icmpeq LABEL7 + jump LABEL10 +LABEL7: iconst 1 set_varc_int 66 return -LABEL7: +LABEL10: iconst -1 istore 0 sconst "" @@ -21,108 +24,108 @@ LABEL7: istore 1 iload 1 iconst 0 - if_icmpgt LABEL18 - jump LABEL184 -LABEL18: + if_icmpgt LABEL21 + jump LABEL187 +LABEL21: get_varc_int 5 switch - 1: LABEL21 - 2: LABEL44 - 3: LABEL44 - 4: LABEL23 - 5: LABEL23 - 6: LABEL44 - 7: LABEL107 - 8: LABEL111 - 9: LABEL117 - 10: LABEL120 - 11: LABEL176 - 12: LABEL136 - 13: LABEL154 - 15: LABEL117 - 16: LABEL181 - jump LABEL183 -LABEL21: + 1: LABEL24 + 2: LABEL47 + 3: LABEL47 + 4: LABEL26 + 5: LABEL26 + 6: LABEL47 + 7: LABEL110 + 8: LABEL114 + 9: LABEL120 + 10: LABEL123 + 11: LABEL179 + 12: LABEL139 + 13: LABEL157 + 15: LABEL120 + 16: LABEL184 + jump LABEL186 +LABEL24: return - jump LABEL183 -LABEL23: + jump LABEL186 +LABEL26: ignore_count iconst 0 - if_icmplt LABEL27 - jump LABEL30 -LABEL27: + if_icmplt LABEL30 + jump LABEL33 +LABEL30: sconst "Unable to update ignore list - system busy." mes - jump LABEL43 -LABEL30: + jump LABEL46 +LABEL33: get_varc_int 5 iconst 4 - if_icmpeq LABEL34 - jump LABEL37 -LABEL34: + if_icmpeq LABEL37 + jump LABEL40 +LABEL37: get_varc_string 359 ignore_add - jump LABEL43 -LABEL37: + jump LABEL46 +LABEL40: get_varc_int 5 iconst 5 - if_icmpeq LABEL41 - jump LABEL43 -LABEL41: + if_icmpeq LABEL44 + jump LABEL46 +LABEL44: get_varc_string 359 ignore_del -LABEL43: - jump LABEL183 -LABEL44: +LABEL46: + jump LABEL186 +LABEL47: friend_count iconst 0 - if_icmplt LABEL48 - jump LABEL51 -LABEL48: + if_icmplt LABEL51 + jump LABEL54 +LABEL51: sconst "Unable to complete action - system busy." mes - jump LABEL106 -LABEL51: + jump LABEL109 +LABEL54: get_varc_int 5 iconst 2 - if_icmpeq LABEL55 - jump LABEL58 -LABEL55: + if_icmpeq LABEL58 + jump LABEL61 +LABEL58: get_varc_string 359 friend_add - jump LABEL106 -LABEL58: + jump LABEL109 +LABEL61: get_varc_int 5 iconst 3 - if_icmpeq LABEL62 - jump LABEL65 -LABEL62: + if_icmpeq LABEL65 + jump LABEL68 +LABEL65: get_varc_string 359 friend_del - jump LABEL106 -LABEL65: + jump LABEL109 +LABEL68: get_varc_int 5 iconst 6 - if_icmpeq LABEL69 - jump LABEL106 -LABEL69: + if_icmpeq LABEL72 + jump LABEL109 +LABEL72: get_varbit 8119 iconst 0 - if_icmpeq LABEL73 - jump LABEL79 -LABEL73: + if_icmpeq LABEL76 + jump LABEL82 +LABEL76: iconst 1 iconst 1 invoke 299 sconst "You must set a name before you can chat." mes return -LABEL79: +LABEL82: chat_getfilter_private iconst 2 - if_icmpeq LABEL83 - jump LABEL94 -LABEL83: + if_icmpeq LABEL86 + jump LABEL97 +LABEL86: chat_getfilter_public iconst 1 chat_getfilter_trade @@ -134,16 +137,16 @@ LABEL83: invoke 84 iload 0 invoke 89 -LABEL94: +LABEL97: get_varbit 4394 iconst 1 - if_icmpeq LABEL98 - jump LABEL101 -LABEL98: - get_varc_string 360 - friend_del + if_icmpeq LABEL101 jump LABEL104 LABEL101: + get_varc_string 360 + friend_del + jump LABEL107 +LABEL104: get_varc_string 360 get_varc_string 359 sconst "privateMessage" ; load event name @@ -152,81 +155,81 @@ LABEL101: iconst 1 if_icmpeq LABEL104 ; if skipped, do not message chat_sendprivate -LABEL104: +LABEL107: clientclock set_varc_int 61 -LABEL106: - jump LABEL183 -LABEL107: +LABEL109: + jump LABEL186 +LABEL110: get_varc_string 359 invoke 212 resume_countdialog - jump LABEL183 -LABEL111: + jump LABEL186 +LABEL114: get_varc_string 359 removetags set_varc_string 361 get_varc_string 359 resume_namedialog - jump LABEL183 -LABEL117: + jump LABEL186 +LABEL120: get_varc_string 359 resume_stringdialog - jump LABEL183 -LABEL120: + jump LABEL186 +LABEL123: get_varbit 8119 iconst 0 - if_icmpeq LABEL124 - jump LABEL130 -LABEL124: + if_icmpeq LABEL127 + jump LABEL133 +LABEL127: iconst 1 iconst 1 invoke 299 sconst "You must set a name before you can chat." mes return -LABEL130: +LABEL133: get_varc_string 359 removetags set_varc_string 362 get_varc_string 359 clan_joinchat - jump LABEL183 -LABEL136: + jump LABEL186 +LABEL139: iload 1 iconst 10 - if_icmpgt LABEL140 - jump LABEL146 -LABEL140: + if_icmpgt LABEL143 + jump LABEL149 +LABEL143: get_varc_string 359 iconst 0 iconst 9 substring sstore 0 - jump LABEL148 -LABEL146: + jump LABEL151 +LABEL149: get_varc_string 359 sstore 0 -LABEL148: +LABEL151: sload 0 lowercase chat_setmessagefilter invoke 553 invoke 84 - jump LABEL183 -LABEL154: + jump LABEL186 +LABEL157: get_varbit 8119 iconst 0 - if_icmpeq LABEL158 - jump LABEL164 -LABEL158: + if_icmpeq LABEL161 + jump LABEL167 +LABEL161: iconst 1 iconst 1 invoke 299 sconst "You must set a name before you can chat." mes return -LABEL164: +LABEL167: get_varc_string 359 iconst 0 set_varc_int 62 @@ -238,33 +241,33 @@ LABEL164: sconst "I1" iconst 10616845 if_setontimer - jump LABEL183 -LABEL176: + jump LABEL186 +LABEL179: iconst 0 iconst 1 invoke 299 return - jump LABEL183 -LABEL181: + jump LABEL186 +LABEL184: get_varc_string 359 invoke 2061 -LABEL183: - jump LABEL190 -LABEL184: +LABEL186: + jump LABEL193 +LABEL187: get_varc_int 5 switch - 16: LABEL189 - 7: LABEL187 - 8: LABEL187 - 9: LABEL187 - 15: LABEL187 - jump LABEL190 -LABEL187: - return - jump LABEL190 -LABEL189: - return + 16: LABEL192 + 7: LABEL190 + 8: LABEL190 + 9: LABEL190 + 15: LABEL190 + jump LABEL193 LABEL190: + return + jump LABEL193 +LABEL192: + return +LABEL193: iconst 1 iconst 1 invoke 299 diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.hash b/runelite-client/src/main/scripts/ResetChatboxInput.hash index 4f9d1c15c9..6f2b789612 100644 --- a/runelite-client/src/main/scripts/ResetChatboxInput.hash +++ b/runelite-client/src/main/scripts/ResetChatboxInput.hash @@ -1 +1 @@ -55CFDE9983A73FA698E2F3CF4F79C0E62F40BF154E34A4F01112041928B01CB7 \ No newline at end of file +A9577B60999F586BCC424D2312B2D4A5D033DB0A3228719B9BA1DFD9742B92E7 \ No newline at end of file diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm b/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm index ba3cb5d788..899616d7fa 100644 --- a/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm +++ b/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm @@ -88,6 +88,10 @@ LABEL40: iconst 1 iconst 10616887 if_sethide + iconst 0 + iconst 0 + iconst 10616885 + if_setscrollpos iconst 10616885 cc_deleteall iconst 10616886 @@ -225,19 +229,19 @@ LABEL40: if_setonclick get_varc_int 41 iconst 1337 - if_icmpeq LABEL215 - jump LABEL219 -LABEL215: + if_icmpeq LABEL219 + jump LABEL223 +LABEL219: invoke 2526 pop_int clientclock set_varc_int 384 -LABEL219: +LABEL223: invoke 1972 iconst 1 - if_icmpeq LABEL223 - jump LABEL224 -LABEL223: + if_icmpeq LABEL227 + jump LABEL228 +LABEL227: invoke 2581 -LABEL224: +LABEL228: return From 47f3a965b7b83ab7d423939e4235f759fc429c28 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Wed, 2 Sep 2020 05:30:51 -0600 Subject: [PATCH 17/25] runelite-client: remove removed items --- .../src/main/java/net/runelite/client/game/ItemMapping.java | 2 +- .../client/plugins/cluescrolls/ClueScrollOverlay.java | 2 -- .../client/plugins/cluescrolls/clues/SkillChallengeClue.java | 2 +- .../client/plugins/itemstats/potions/PrayerPotion.java | 4 ---- .../net/runelite/client/plugins/prayer/PrayerRestoreType.java | 2 +- 5 files changed, 3 insertions(+), 9 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java b/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java index 2bed8ca212..1a1653de76 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemMapping.java @@ -192,7 +192,7 @@ public enum ItemMapping ITEM_RING_OF_ENDURANCE(RING_OF_ENDURANCE_UNCHARGED_24844, RING_OF_ENDURANCE), // Infinity colour kits - ITEM_INFINITY_TOP(INFINITY_TOP, INFINITY_TOP_10605, INFINITY_TOP_20574, DARK_INFINITY_TOP, LIGHT_INFINITY_TOP), + ITEM_INFINITY_TOP(INFINITY_TOP, INFINITY_TOP_20574, DARK_INFINITY_TOP, LIGHT_INFINITY_TOP), ITEM_INFINITY_TOP_LIGHT_COLOUR_KIT(LIGHT_INFINITY_COLOUR_KIT, LIGHT_INFINITY_TOP), ITEM_INFINITY_TOP_DARK_COLOUR_KIT(DARK_INFINITY_COLOUR_KIT, DARK_INFINITY_TOP), ITEM_INFINITY_BOTTOMS(INFINITY_BOTTOMS, INFINITY_BOTTOMS_20575, DARK_INFINITY_BOTTOMS, LIGHT_INFINITY_BOTTOMS), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java index 3f860946b1..382f77aa52 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollOverlay.java @@ -63,7 +63,6 @@ public class ClueScrollOverlay extends OverlayPanel item(EMERALD_LANTERN_9065), item(MINING_HELMET), item(FIREMAKING_CAPE), - item(FIREMAKING_CAPE_10659), item(FIREMAKING_CAPET), item(KANDARIN_HEADGEAR_1), item(KANDARIN_HEADGEAR_2), @@ -71,7 +70,6 @@ public class ClueScrollOverlay extends OverlayPanel item(KANDARIN_HEADGEAR_4), item(BRUMA_TORCH), item(MAX_CAPE), - item(MAX_CAPE_13282), item(MAX_CAPE_13342)); public static final Color TITLED_CONTENT_COLOR = new Color(190, 190, 190); diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java index a58cfb9942..144c07ce27 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/SkillChallengeClue.java @@ -163,7 +163,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll, Nam new SkillChallengeClue("Complete a lap of Rellekka's Rooftop Agility Course", "complete a lap of the rellekka rooftop agility course whilst sporting the finest amount of grace.", true, all("A full Graceful set", any("", item(ItemID.GRACEFUL_HOOD), item(ItemID.GRACEFUL_HOOD_11851), item(ItemID.GRACEFUL_HOOD_13579), item(ItemID.GRACEFUL_HOOD_13580), item(ItemID.GRACEFUL_HOOD_13591), item(ItemID.GRACEFUL_HOOD_13592), item(ItemID.GRACEFUL_HOOD_13603), item(ItemID.GRACEFUL_HOOD_13604), item(ItemID.GRACEFUL_HOOD_13615), item(ItemID.GRACEFUL_HOOD_13616), item(ItemID.GRACEFUL_HOOD_13627), item(ItemID.GRACEFUL_HOOD_13628), item(ItemID.GRACEFUL_HOOD_13667), item(ItemID.GRACEFUL_HOOD_13668), item(ItemID.GRACEFUL_HOOD_21061), item(ItemID.GRACEFUL_HOOD_21063), item(ItemID.GRACEFUL_HOOD_24743), item(ItemID.GRACEFUL_HOOD_24745)), - any("", item(ItemID.GRACEFUL_CAPE), item(ItemID.GRACEFUL_CAPE_11853), item(ItemID.GRACEFUL_CAPE_13581), item(ItemID.GRACEFUL_CAPE_13582), item(ItemID.GRACEFUL_CAPE_13593), item(ItemID.GRACEFUL_CAPE_13594), item(ItemID.GRACEFUL_CAPE_13605), item(ItemID.GRACEFUL_CAPE_13606), item(ItemID.GRACEFUL_CAPE_13617), item(ItemID.GRACEFUL_CAPE_13618), item(ItemID.GRACEFUL_CAPE_13629), item(ItemID.GRACEFUL_CAPE_13630), item(ItemID.GRACEFUL_CAPE_13669), item(ItemID.GRACEFUL_CAPE_13670), item(ItemID.GRACEFUL_CAPE_21064), item(ItemID.GRACEFUL_CAPE_21066), item(ItemID.GRACEFUL_CAPE_24746), item(ItemID.GRACEFUL_CAPE_24748), item(ItemID.AGILITY_CAPE), item (ItemID.AGILITY_CAPE_10648), item(ItemID.AGILITY_CAPE_13340), item(ItemID.AGILITY_CAPET), item(ItemID.AGILITY_CAPET_13341), item(ItemID.MAX_CAPE), item(ItemID.MAX_CAPE_13282), item(ItemID.MAX_CAPE_13342)), + any("", item(ItemID.GRACEFUL_CAPE), item(ItemID.GRACEFUL_CAPE_11853), item(ItemID.GRACEFUL_CAPE_13581), item(ItemID.GRACEFUL_CAPE_13582), item(ItemID.GRACEFUL_CAPE_13593), item(ItemID.GRACEFUL_CAPE_13594), item(ItemID.GRACEFUL_CAPE_13605), item(ItemID.GRACEFUL_CAPE_13606), item(ItemID.GRACEFUL_CAPE_13617), item(ItemID.GRACEFUL_CAPE_13618), item(ItemID.GRACEFUL_CAPE_13629), item(ItemID.GRACEFUL_CAPE_13630), item(ItemID.GRACEFUL_CAPE_13669), item(ItemID.GRACEFUL_CAPE_13670), item(ItemID.GRACEFUL_CAPE_21064), item(ItemID.GRACEFUL_CAPE_21066), item(ItemID.GRACEFUL_CAPE_24746), item(ItemID.GRACEFUL_CAPE_24748), item(ItemID.AGILITY_CAPE), item(ItemID.AGILITY_CAPE_13340), item(ItemID.AGILITY_CAPET), item(ItemID.AGILITY_CAPET_13341), item(ItemID.MAX_CAPE), item(ItemID.MAX_CAPE_13342)), any("", item(ItemID.GRACEFUL_TOP), item(ItemID.GRACEFUL_TOP_11855), item(ItemID.GRACEFUL_TOP_13583), item(ItemID.GRACEFUL_TOP_13584), item(ItemID.GRACEFUL_TOP_13595), item(ItemID.GRACEFUL_TOP_13596), item(ItemID.GRACEFUL_TOP_13607), item(ItemID.GRACEFUL_TOP_13608), item(ItemID.GRACEFUL_TOP_13619), item(ItemID.GRACEFUL_TOP_13620), item(ItemID.GRACEFUL_TOP_13631), item(ItemID.GRACEFUL_TOP_13632), item(ItemID.GRACEFUL_TOP_13671), item(ItemID.GRACEFUL_TOP_13672), item(ItemID.GRACEFUL_TOP_21067), item(ItemID.GRACEFUL_TOP_21069), item(ItemID.GRACEFUL_TOP_24749), item(ItemID.GRACEFUL_TOP_24751)), any("", item(ItemID.GRACEFUL_LEGS), item(ItemID.GRACEFUL_LEGS_11857), item(ItemID.GRACEFUL_LEGS_13585), item(ItemID.GRACEFUL_LEGS_13586), item(ItemID.GRACEFUL_LEGS_13597), item(ItemID.GRACEFUL_LEGS_13598), item(ItemID.GRACEFUL_LEGS_13609), item(ItemID.GRACEFUL_LEGS_13610), item(ItemID.GRACEFUL_LEGS_13621), item(ItemID.GRACEFUL_LEGS_13622), item(ItemID.GRACEFUL_LEGS_13633), item(ItemID.GRACEFUL_LEGS_13634), item(ItemID.GRACEFUL_LEGS_13673), item(ItemID.GRACEFUL_LEGS_13674), item(ItemID.GRACEFUL_LEGS_21070), item(ItemID.GRACEFUL_LEGS_21072), item(ItemID.GRACEFUL_LEGS_24752), item(ItemID.GRACEFUL_LEGS_24754)), any("", item(ItemID.GRACEFUL_GLOVES), item(ItemID.GRACEFUL_GLOVES_11859), item(ItemID.GRACEFUL_GLOVES_13587), item(ItemID.GRACEFUL_GLOVES_13588), item(ItemID.GRACEFUL_GLOVES_13599), item(ItemID.GRACEFUL_GLOVES_13600), item(ItemID.GRACEFUL_GLOVES_13611), item(ItemID.GRACEFUL_GLOVES_13612), item(ItemID.GRACEFUL_GLOVES_13623), item(ItemID.GRACEFUL_GLOVES_13624), item(ItemID.GRACEFUL_GLOVES_13635), item(ItemID.GRACEFUL_GLOVES_13636), item(ItemID.GRACEFUL_GLOVES_13675), item(ItemID.GRACEFUL_GLOVES_13676), item(ItemID.GRACEFUL_GLOVES_21073), item(ItemID.GRACEFUL_GLOVES_21075), item(ItemID.GRACEFUL_GLOVES_24755), item(ItemID.GRACEFUL_GLOVES_24757)), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java index 6611b8ac35..2bddfc4100 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/potions/PrayerPotion.java @@ -71,9 +71,7 @@ public class PrayerPotion extends StatBoost int capeId = cape.getId(); hasHolyWrench |= capeId == ItemID.PRAYER_CAPE; hasHolyWrench |= capeId == ItemID.PRAYER_CAPET; - hasHolyWrench |= capeId == ItemID.PRAYER_CAPE_10643; // No idea what this is hasHolyWrench |= capeId == ItemID.MAX_CAPE; - hasHolyWrench |= capeId == ItemID.MAX_CAPE_13282; // Or these hasHolyWrench |= capeId == ItemID.MAX_CAPE_13342; } } @@ -88,9 +86,7 @@ public class PrayerPotion extends StatBoost hasHolyWrench = item == ItemID.HOLY_WRENCH; hasHolyWrench |= item == ItemID.PRAYER_CAPE; hasHolyWrench |= item == ItemID.PRAYER_CAPET; - hasHolyWrench |= item == ItemID.PRAYER_CAPE_10643; hasHolyWrench |= item == ItemID.MAX_CAPE; - hasHolyWrench |= item == ItemID.MAX_CAPE_13282; hasHolyWrench |= item == ItemID.MAX_CAPE_13342; if (hasHolyWrench) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java index d30b790a9e..f9afa6869f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerRestoreType.java @@ -33,7 +33,7 @@ enum PrayerRestoreType RESTOREPOT(ItemID.SUPER_RESTORE4, ItemID.SUPER_RESTORE3, ItemID.SUPER_RESTORE2, ItemID.SUPER_RESTORE1), PRAYERPOT(ItemID.PRAYER_POTION4, ItemID.PRAYER_POTION3, ItemID.PRAYER_POTION2, ItemID.PRAYER_POTION1), SANFEWPOT(ItemID.SANFEW_SERUM4, ItemID.SANFEW_SERUM3, ItemID.SANFEW_SERUM2, ItemID.SANFEW_SERUM1), - HOLYWRENCH(ItemID.PRAYER_CAPE, ItemID.PRAYER_CAPET, ItemID.PRAYER_CAPE_10643, ItemID.MAX_CAPE, ItemID.MAX_CAPE_13282, + HOLYWRENCH(ItemID.PRAYER_CAPE, ItemID.PRAYER_CAPET, ItemID.MAX_CAPE, ItemID.MAX_CAPE_13342, ItemID.HOLY_WRENCH, ItemID.RING_OF_THE_GODS_I); private static final Map prayerRestores; From 581ca2fdd544491d178670a17cc0c4d840a202e7 Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Wed, 2 Sep 2020 11:36:33 +0000 Subject: [PATCH 18/25] Release 1.6.26 --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- http-api/pom.xml | 2 +- http-service/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index 9f02a21020..b88c0bd3dd 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index b83d8d0de0..bee977959f 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index fe864318f1..a21ea50c57 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 cache diff --git a/http-api/pom.xml b/http-api/pom.xml index 7661fc8966..e3ca6cdf5f 100644 --- a/http-api/pom.xml +++ b/http-api/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 Web API diff --git a/http-service/pom.xml b/http-service/pom.xml index 6eb73e6a2d..eba611f0e1 100644 --- a/http-service/pom.xml +++ b/http-service/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 Web Service diff --git a/pom.xml b/pom.xml index f844eac421..798979523b 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 pom RuneLite @@ -61,7 +61,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - HEAD + runelite-parent-1.6.26 diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index 38c9808d6a..a42a37cbfa 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index a3191f09b0..8ecaa00030 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 client diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index 79180bc698..a606739d40 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26-SNAPSHOT + 1.6.26 script-assembler-plugin From b83c97ed1c5a4c842bb663f1dd704cdf8258283d Mon Sep 17 00:00:00 2001 From: Runelite auto updater Date: Wed, 2 Sep 2020 11:36:42 +0000 Subject: [PATCH 19/25] Bump for 1.6.27-SNAPSHOT --- cache-client/pom.xml | 2 +- cache-updater/pom.xml | 2 +- cache/pom.xml | 2 +- http-api/pom.xml | 2 +- http-service/pom.xml | 2 +- pom.xml | 4 ++-- runelite-api/pom.xml | 2 +- runelite-client/pom.xml | 2 +- runelite-script-assembler-plugin/pom.xml | 2 +- 9 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cache-client/pom.xml b/cache-client/pom.xml index b88c0bd3dd..1bdc63df09 100644 --- a/cache-client/pom.xml +++ b/cache-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT cache-client diff --git a/cache-updater/pom.xml b/cache-updater/pom.xml index bee977959f..0148fcf1b7 100644 --- a/cache-updater/pom.xml +++ b/cache-updater/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT Cache Updater diff --git a/cache/pom.xml b/cache/pom.xml index a21ea50c57..c51b54cc0f 100644 --- a/cache/pom.xml +++ b/cache/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT cache diff --git a/http-api/pom.xml b/http-api/pom.xml index e3ca6cdf5f..50fa7422a8 100644 --- a/http-api/pom.xml +++ b/http-api/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT Web API diff --git a/http-service/pom.xml b/http-service/pom.xml index eba611f0e1..10f644e7a2 100644 --- a/http-service/pom.xml +++ b/http-service/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT Web Service diff --git a/pom.xml b/pom.xml index 798979523b..f7c8661aaf 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT pom RuneLite @@ -61,7 +61,7 @@ https://github.com/runelite/runelite scm:git:git://github.com/runelite/runelite scm:git:git@github.com:runelite/runelite - runelite-parent-1.6.26 + HEAD diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml index a42a37cbfa..8b02e31a98 100644 --- a/runelite-api/pom.xml +++ b/runelite-api/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT runelite-api diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml index 8ecaa00030..389986206a 100644 --- a/runelite-client/pom.xml +++ b/runelite-client/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT client diff --git a/runelite-script-assembler-plugin/pom.xml b/runelite-script-assembler-plugin/pom.xml index a606739d40..9fa24c0a36 100644 --- a/runelite-script-assembler-plugin/pom.xml +++ b/runelite-script-assembler-plugin/pom.xml @@ -29,7 +29,7 @@ net.runelite runelite-parent - 1.6.26 + 1.6.27-SNAPSHOT script-assembler-plugin From b9b505acc40dd537453db359d531e9c0ffc9c05f Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 2 Sep 2020 10:25:21 -0400 Subject: [PATCH 20/25] scripts: fix privateMessage message skipping This was incorrectly looping if the message was to be skipped --- runelite-client/src/main/scripts/PrivateMessage.rs2asm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/scripts/PrivateMessage.rs2asm b/runelite-client/src/main/scripts/PrivateMessage.rs2asm index c69081cf40..79ca64e02c 100644 --- a/runelite-client/src/main/scripts/PrivateMessage.rs2asm +++ b/runelite-client/src/main/scripts/PrivateMessage.rs2asm @@ -153,7 +153,7 @@ LABEL104: iconst 0 ; whether or not to skip runelite_callback ; invoke callback iconst 1 - if_icmpeq LABEL104 ; if skipped, do not message + if_icmpeq LABEL107 ; if skipped, do not message chat_sendprivate LABEL107: clientclock From 9beec30b3f021841c987ef65bc5613f761e8902b Mon Sep 17 00:00:00 2001 From: Matt Davenport Date: Wed, 2 Sep 2020 17:40:16 -0400 Subject: [PATCH 21/25] cluescrolls: add fairy ring codes to emote clues --- .../runelite/client/plugins/cluescrolls/clues/EmoteClue.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java index 947961a52f..a62be4683f 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java @@ -76,7 +76,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Jig at Jiggig. Beware of double agents! Equip a Rune spear, rune platelegs and any rune heraldic helm.", "Jiggig", IN_THE_MIDDLE_OF_JIGGIG, new WorldPoint(2477, 3047, 0), DOUBLE_AGENT_108, JIG, range("Any rune heraldic helm", RUNE_HELM_H1, RUNE_HELM_H5), item(RUNE_SPEAR), item(RUNE_PLATELEGS)), new EmoteClue("Cheer at the games room. Have nothing equipped at all when you do.", "Games room", null, new WorldPoint(2207, 4952, 0), CHEER, emptySlot("Nothing at all", HEAD, CAPE, AMULET, WEAPON, BODY, SHIELD, LEGS, GLOVES, BOOTS, RING, AMMO)), new EmoteClue("Panic on the pier where you catch the Fishing trawler. Have nothing equipped at all when you do.", "Fishing trawler", null, new WorldPoint(2676, 3169, 0), PANIC, emptySlot("Nothing at all", HEAD, CAPE, AMULET, WEAPON, BODY, SHIELD, LEGS, GLOVES, BOOTS, RING, AMMO)), - new EmoteClue("Panic in the heart of the Haunted Woods. Beware of double agents! Have no items equipped when you do.", "Haunted Woods", null, new WorldPoint(3611, 3492, 0), DOUBLE_AGENT_108, PANIC, emptySlot("Nothing at all", HEAD, CAPE, AMULET, WEAPON, BODY, SHIELD, LEGS, GLOVES, BOOTS, RING, AMMO)), + new EmoteClue("Panic in the heart of the Haunted Woods. Beware of double agents! Have no items equipped when you do.", "Haunted Woods (ALQ)", null, new WorldPoint(3611, 3492, 0), DOUBLE_AGENT_108, PANIC, emptySlot("Nothing at all", HEAD, CAPE, AMULET, WEAPON, BODY, SHIELD, LEGS, GLOVES, BOOTS, RING, AMMO)), new EmoteClue("Show your anger towards the Statue of Saradomin in Ellamaria's garden. Beware of double agents! Equip a zamorak godsword.", "Varrock Castle", BY_THE_BEAR_CAGE_IN_VARROCK_PALACE_GARDENS, new WorldPoint(3230, 3478, 0), DOUBLE_AGENT_141, ANGRY, any("Zamorak godsword", item(ZAMORAK_GODSWORD), item(ZAMORAK_GODSWORD_OR))), new EmoteClue("Show your anger at the Wise old man. Beware of double agents! Equip an abyssal whip, a legend's cape and some spined chaps.", "Draynor Village", BEHIND_MISS_SCHISM_IN_DRAYNOR_VILLAGE, new WorldPoint(3088, 3254, 0), DOUBLE_AGENT_141, ANGRY, any("Abyssal whip", item(ABYSSAL_WHIP), item(VOLCANIC_ABYSSAL_WHIP), item(FROZEN_ABYSSAL_WHIP)), item(CAPE_OF_LEGENDS), item(SPINED_CHAPS)), new EmoteClue("Beckon by a collection of crystalline maple trees. Beware of double agents! Equip Bryophyta's staff and a nature tiara.", "North of Prifddinas", CRYSTALLINE_MAPLE_TREES, new WorldPoint(2211, 3427, 0), DOUBLE_AGENT_141, BECKON, range("Bryophyta's staff", BRYOPHYTAS_STAFF_UNCHARGED, BRYOPHYTAS_STAFF), item(NATURE_TIARA)), @@ -158,7 +158,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Spin in the Varrock Castle courtyard. Equip a black axe, a coif and a ruby ring.", "Varrock Castle", OUTSIDE_VARROCK_PALACE_COURTYARD, new WorldPoint(3213, 3463, 0), SPIN, item(BLACK_AXE), item(COIF), item(RUBY_RING)), new EmoteClue("Spin in West Ardougne Church. Equip a dragon spear and red dragonhide chaps.", "West Ardougne Church", CHAPEL_IN_WEST_ARDOUGNE, new WorldPoint(2530, 3290, 0), SPIN, item(DRAGON_SPEAR), item(RED_DHIDE_CHAPS)), new EmoteClue("Spin on the bridge by the Barbarian Village. Salute before you talk to me. Equip purple gloves, a steel kiteshield and a mithril full helmet.", "Barbarian Village", EAST_OF_THE_BARBARIAN_VILLAGE_BRIDGE, new WorldPoint(3105, 3420, 0), SPIN, SALUTE, item(PURPLE_GLOVES), item(STEEL_KITESHIELD), item(MITHRIL_FULL_HELM)), - new EmoteClue("Stamp in the Enchanted valley west of the waterfall. Beware of double agents! Equip a dragon axe.", "Enchanted Valley", NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY, new WorldPoint(3030, 4522, 0), DOUBLE_AGENT_141, STAMP, any("Dragon or Crystal axe", item(DRAGON_AXE), item(CRYSTAL_AXE), item(CRYSTAL_AXE_INACTIVE), item(INFERNAL_AXE), item(INFERNAL_AXE_UNCHARGED))), + new EmoteClue("Stamp in the Enchanted valley west of the waterfall. Beware of double agents! Equip a dragon axe.", "Enchanted Valley (BKQ)", NORTHWESTERN_CORNER_OF_THE_ENCHANTED_VALLEY, new WorldPoint(3030, 4522, 0), DOUBLE_AGENT_141, STAMP, any("Dragon or Crystal axe", item(DRAGON_AXE), item(CRYSTAL_AXE), item(CRYSTAL_AXE_INACTIVE), item(INFERNAL_AXE), item(INFERNAL_AXE_UNCHARGED))), new EmoteClue("Think in middle of the wheat field by the Lumbridge mill. Equip a blue gnome robetop, a turquoise gnome robe bottom and an oak shortbow.", "Lumbridge mill", WHEAT_FIELD_NEAR_THE_LUMBRIDGE_WINDMILL, new WorldPoint(3159, 3298, 0), THINK, item(BLUE_ROBE_TOP), item(TURQUOISE_ROBE_BOTTOMS), item(OAK_SHORTBOW)), new EmoteClue("Think in the centre of the Observatory. Spin before you talk to me. Equip a mithril chain body, green dragonhide chaps and a ruby amulet.", "Observatory", OBSERVATORY, new WorldPoint(2439, 3161, 0), THINK, SPIN, item(MITHRIL_CHAINBODY), item(GREEN_DHIDE_CHAPS), item(RUBY_AMULET)), new EmoteClue("Wave along the south fence of the Lumber Yard. Equip a hard leather body, leather chaps and a bronze axe.", "Lumber Yard", NEAR_THE_SAWMILL_OPERATORS_BOOTH, new WorldPoint(3307, 3491, 0), WAVE, item(HARDLEATHER_BODY), item(LEATHER_CHAPS), item(BRONZE_AXE)), From 1db0f66a981378187c6fc522a9c9554293f9a9c0 Mon Sep 17 00:00:00 2001 From: Broooklyn <54762282+Broooklyn@users.noreply.github.com> Date: Fri, 4 Sep 2020 03:04:02 -0400 Subject: [PATCH 22/25] clues: Fix Watchtower master emote step coordinates (#12429) --- .../runelite/client/plugins/cluescrolls/clues/EmoteClue.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java index a62be4683f..85ffdd5c00 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/EmoteClue.java @@ -172,7 +172,7 @@ public class EmoteClue extends ClueScroll implements TextClueScroll, LocationClu new EmoteClue("Yawn in the rogues' general store. Beware of double agents! Equip an adamant square shield, blue dragon vambraces and a rune pickaxe.", "Rogues general store", NOTERAZZOS_SHOP_IN_THE_WILDERNESS, new WorldPoint(3026, 3701, 0), DOUBLE_AGENT_65, YAWN, item(ADAMANT_SQ_SHIELD), item(BLUE_DHIDE_VAMBRACES), item(RUNE_PICKAXE)), new EmoteClue("Yawn at the top of Trollheim. Equip a lava battlestaff, black dragonhide vambraces and a mind shield.", "Trollheim Mountain", ON_TOP_OF_TROLLHEIM_MOUNTAIN, new WorldPoint(2887, 3676, 0), YAWN, any("Lava battlestaff", item(LAVA_BATTLESTAFF), item(LAVA_BATTLESTAFF_21198)), item(BLACK_DHIDE_VAMBRACES), item(MIND_SHIELD)), new EmoteClue("Yawn in the centre of Arceuus library. Nod your head before you talk to me. Equip blue dragonhide vambraces, adamant boots and an adamant dagger.", "Arceuus library", ENTRANCE_OF_THE_ARCEUUS_LIBRARY, new WorldPoint(1632, 3807, 0), YAWN, YES, item(BLUE_DHIDE_VAMBRACES), item(ADAMANT_BOOTS), item(ADAMANT_DAGGER)), - new EmoteClue("Swing a bullroarer at the top of the watchtower. Beware of double agents! Equip a dragon plateskirt, climbing boots and a dragon chainbody.", "Yanille watchtower", TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER, new WorldPoint(2932, 4712, 0), DOUBLE_AGENT_141, BULL_ROARER, any("Dragon plateskirt", item(DRAGON_PLATESKIRT), item(DRAGON_PLATESKIRT_G)), item(CLIMBING_BOOTS), any("Dragon chainbody", item(DRAGON_CHAINBODY_3140), item(DRAGON_CHAINBODY_G)), item(ItemID.BULL_ROARER)), + new EmoteClue("Swing a bullroarer at the top of the Watchtower. Beware of double agents! Equip a dragon plateskirt, climbing boots and a dragon chainbody.", "Yanille Watchtower", TOP_FLOOR_OF_THE_YANILLE_WATCHTOWER, new WorldPoint(2930, 4717, 2), DOUBLE_AGENT_141, BULL_ROARER, any("Dragon plateskirt", item(DRAGON_PLATESKIRT), item(DRAGON_PLATESKIRT_G)), item(CLIMBING_BOOTS), any("Dragon chainbody", item(DRAGON_CHAINBODY_3140), item(DRAGON_CHAINBODY_G)), item(ItemID.BULL_ROARER)), new EmoteClue("Blow a raspberry at Gypsy Aris in her tent. Equip a gold ring and a gold necklace.", "Varrock", GYPSY_TENT_ENTRANCE, new WorldPoint(3203, 3424, 0), RASPBERRY, item(GOLD_RING), item(GOLD_NECKLACE)), new EmoteClue("Bow to Brugsen Bursen at the Grand Exchange.", "Grand Exchange", null, new WorldPoint(3164, 3477, 0), BOW), new EmoteClue("Cheer at Iffie Nitter. Equip a chef hat and a red cape.", "Varrock", FINE_CLOTHES_ENTRANCE, new WorldPoint(3205, 3416, 0), CHEER, item(CHEFS_HAT), item(RED_CAPE)), From 0a4cb9bf5a486f4eeb0b9c9087631b606adedf35 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 4 Sep 2020 09:23:12 +0200 Subject: [PATCH 23/25] menuentryswapper: Add Island of Stone quick travel (#12422) --- .../client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java index 8ecbb0de79..652c7846c5 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java @@ -203,6 +203,7 @@ public class MenuEntrySwapperPlugin extends Plugin swap("talk-to", "ungael", config::swapTravel); swap("talk-to", "pirate's cove", config::swapTravel); swap("talk-to", "waterbirth island", config::swapTravel); + swap("talk-to", "island of stone", config::swapTravel); swap("talk-to", "miscellania", config::swapTravel); swap("talk-to", "follow", config::swapTravel); swap("talk-to", "transport", config::swapTravel); From e388f5a0f7242711d44ef3726e38d7181fb9dea6 Mon Sep 17 00:00:00 2001 From: Michael Archer Date: Fri, 4 Sep 2020 00:28:59 -0700 Subject: [PATCH 24/25] timers: Update stunned Abyssal Sire ID (#12410) A recent game update changed the NPC IDs used for sire's stunned state, causing the stun timer to become applied and removed at the wrong time. --- .../java/net/runelite/client/plugins/timers/TimersPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java index 973d21e936..caefdac45e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java @@ -823,7 +823,7 @@ public class TimersPlugin extends Plugin switch (npcId) { // Show the countdown when the Sire enters the stunned state. - case NpcID.ABYSSAL_SIRE_5887: + case NpcID.ABYSSAL_SIRE_5888: createGameTimer(ABYSSAL_SIRE_STUN); break; @@ -831,7 +831,7 @@ public class TimersPlugin extends Plugin // This is necessary because the Sire leaves the stunned // state early once all all four respiratory systems are killed. case NpcID.ABYSSAL_SIRE: - case NpcID.ABYSSAL_SIRE_5888: + case NpcID.ABYSSAL_SIRE_5887: case NpcID.ABYSSAL_SIRE_5889: case NpcID.ABYSSAL_SIRE_5890: case NpcID.ABYSSAL_SIRE_5891: From 00fc1314f7493e17210bb3460a2ce6ec71ee1be5 Mon Sep 17 00:00:00 2001 From: arthur798 <54174184+arthur798@users.noreply.github.com> Date: Fri, 4 Sep 2020 08:30:43 +0100 Subject: [PATCH 25/25] skillcalculator: Add Carpenter's outfit set bonus (#12412) --- .../client/plugins/skillcalculator/skill_construction.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json index 39a098677f..32897151de 100644 --- a/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json +++ b/runelite-client/src/main/resources/net/runelite/client/plugins/skillcalculator/skill_construction.json @@ -1,4 +1,10 @@ { + "bonuses": [ + { + "name": "Carpenter's Outfit (+2.5%)", + "value": 0.025 + } + ], "actions": [ { "level": 1,