From e5a74473fd487da69f129a46550fffcdedb9bcc9 Mon Sep 17 00:00:00 2001 From: ImNoOSRS <69985903+ImNoOSRS@users.noreply.github.com> Date: Thu, 24 Sep 2020 13:41:12 +0200 Subject: [PATCH] api: Add support for verbose inventory quantities (#2814) * - - * Add VerboseInventoryQuantitiesMixin with changes. * Fix checkstyle and add copyright header. * Remove unused imports * Checkstyle hotfix * Checkstyle * Checkstyle2 * Change Internal name to itemQuantitiesVerbose --- .../main/java/net/runelite/api/Client.java | 7 +++ .../VerboseInventoryQuantitiesMixin.java | 57 +++++++++++++++++++ .../src/main/java/ChatChannel.java | 2 +- runescape-client/src/main/java/class194.java | 4 +- 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/VerboseInventoryQuantitiesMixin.java diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index a2d918d729..dbef169a68 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1704,6 +1704,13 @@ public interface Client extends GameShell */ void setCompass(Sprite Sprite); + /** + * Sets whether inventory quantity is verbose. + * + * @param state verbose state + */ + void setItemQuantitiesVerbose(boolean state); + /** * Returns widget sprite cache, to be used with {@link Client#getSpriteOverrides()} * diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/VerboseInventoryQuantitiesMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/VerboseInventoryQuantitiesMixin.java new file mode 100644 index 0000000000..6c6a509212 --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/VerboseInventoryQuantitiesMixin.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2020, ImNoOSRS + * 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.mixins; + +import net.runelite.api.mixins.Copy; +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.Mixin; +import net.runelite.api.mixins.Replace; +import net.runelite.rs.api.RSClient; + +@Mixin(RSClient.class) +public abstract class VerboseInventoryQuantitiesMixin implements RSClient +{ + @Inject + private static boolean itemQuantitiesVerbose; + + @Inject + @Override + public void setItemQuantitiesVerbose(boolean state) + { + itemQuantitiesVerbose = state; + } + + @Copy("inventoryQuantityFormat") + @Replace("inventoryQuantityFormat") + public static String getInventoryQuantityFormat(int n) + { + if (itemQuantitiesVerbose) + { + return String.valueOf(n); + } + + return getInventoryQuantityFormat(n); + } +} \ No newline at end of file diff --git a/runescape-client/src/main/java/ChatChannel.java b/runescape-client/src/main/java/ChatChannel.java index 358689af4b..583832f9f5 100644 --- a/runescape-client/src/main/java/ChatChannel.java +++ b/runescape-client/src/main/java/ChatChannel.java @@ -188,7 +188,7 @@ public class ChatChannel { } if (var4 == 1 || var4 == 2 && var9.isStackable == 1) { // L: 409 - ScriptEvent.ItemDefinition_fontPlain11.draw(class194.method3712(var1), 0, 9, 16776960, 1); // L: 410 + ScriptEvent.ItemDefinition_fontPlain11.draw(class194.inventoryQuantityFormat(var1), 0, 9, 16776960, 1); // L: 410 } if (!var5) { // L: 412 diff --git a/runescape-client/src/main/java/class194.java b/runescape-client/src/main/java/class194.java index ea2a3eb459..d2fbf83c66 100644 --- a/runescape-client/src/main/java/class194.java +++ b/runescape-client/src/main/java/class194.java @@ -1,3 +1,4 @@ +import net.runelite.mapping.Export; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; @@ -79,7 +80,8 @@ public class class194 { descriptor = "(IS)Ljava/lang/String;", garbageValue = "4096" ) - static final String method3712(int var0) { + @Export("inventoryQuantityFormat") + static final String inventoryQuantityFormat(int var0) { if (var0 < 100000) { // L: 421 return "" + var0 + ""; } else {