From 7dbe111c20125c41c4d57ce8df8d3e2df0d9ce97 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Wed, 3 Nov 2021 13:40:13 +0100 Subject: [PATCH] project: Mixins --- .../net/runelite/client/rs/ClientLoader.java | 2 +- .../runelite/mixins/RSObjectSoundMixin.java | 46 +++++++++++++++++++ .../java/net/runelite/rs/api/RSClient.java | 5 ++ .../java/net/runelite/rs/api/RSNodeDeque.java | 6 ++- .../net/runelite/rs/api/RSObjectSound.java | 23 +++++++++- .../src/main/java/ObjectSound.java | 6 ++- runescape-client/src/main/java/class125.java | 4 +- runescape-client/src/main/java/class130.java | 8 ++-- 8 files changed, 89 insertions(+), 11 deletions(-) create mode 100644 runelite-mixins/src/main/java/net/runelite/mixins/RSObjectSoundMixin.java diff --git a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java index aca456df93..7b9d3f6091 100644 --- a/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java +++ b/runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java @@ -78,7 +78,7 @@ import okhttp3.Response; public class ClientLoader implements Supplier { private static final String INJECTED_CLIENT_NAME = "/injected-client.oprs"; - private static final int NUM_ATTEMPTS = 6; + private static final int NUM_ATTEMPTS = 0; private static File LOCK_FILE = new File(RuneLite.CACHE_DIR, "cache.lock"); private static File VANILLA_CACHE = new File(RuneLite.CACHE_DIR, "vanilla.cache"); private static File PATCHED_CACHE = new File(RuneLite.CACHE_DIR, "patched.cache"); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectSoundMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectSoundMixin.java new file mode 100644 index 0000000000..d1d0081b4a --- /dev/null +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSObjectSoundMixin.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2018, 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.mixins; + +import net.runelite.api.coords.LocalPoint; +import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.Mixin; +import net.runelite.rs.api.RSObjectSound; + +@Mixin(RSObjectSound.class) +public abstract class RSObjectSoundMixin implements RSObjectSound +{ + @Inject + public LocalPoint getMinPosition() + { + return new LocalPoint(getX(), getY()); + } + + @Inject + public LocalPoint getMaxPosition() + { + return new LocalPoint(getMaxX(), getMaxY()); + } +} diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java index d1d579d0ae..04643a9768 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java @@ -26,7 +26,9 @@ package net.runelite.rs.api; import java.math.BigInteger; import java.util.Map; +import net.runelite.api.AmbientSoundEffect; import net.runelite.api.Client; +import net.runelite.api.Deque; import net.runelite.api.SpritePixels; import net.runelite.api.World; import net.runelite.api.clan.ClanRank; @@ -1476,4 +1478,7 @@ public interface RSClient extends RSGameEngine, Client boolean isUnlockedFps(); void posToCameraAngle(int var0, int var1); + + @Import("objectSounds") + Deque getAmbientSoundEffects(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java index a1f0c9c2dc..7411f0b19c 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSNodeDeque.java @@ -24,9 +24,10 @@ */ package net.runelite.rs.api; +import net.runelite.api.Deque; import net.runelite.mapping.Import; -public interface RSNodeDeque +public interface RSNodeDeque extends Deque { @Import("current") RSNode getCurrent(); @@ -45,4 +46,7 @@ public interface RSNodeDeque @Import("removeLast") RSNode removeLast(); + + @Import("clear") + void clear(); } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectSound.java b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectSound.java index 77f59e822f..add978b32a 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSObjectSound.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSObjectSound.java @@ -1,3 +1,24 @@ package net.runelite.rs.api; -public interface RSObjectSound {} +import net.runelite.mapping.Import; + +public interface RSObjectSound +{ + @Import("x") + int getX(); + + @Import("y") + int getY(); + + @Import("maxY") + int getMaxX(); + + @Import("maxY") + int getMaxY(); + + @Import("soundEffectId") + int getSoundEffectId(); + + @Import("plane") + int getPlane(); +} diff --git a/runescape-client/src/main/java/ObjectSound.java b/runescape-client/src/main/java/ObjectSound.java index d3793c024a..38ee035557 100644 --- a/runescape-client/src/main/java/ObjectSound.java +++ b/runescape-client/src/main/java/ObjectSound.java @@ -41,12 +41,14 @@ public final class ObjectSound extends Node { @ObfuscatedGetter( intValue = 171593 ) - int field771; + @Export("maxX") + int maxX; @ObfuscatedName("e") @ObfuscatedGetter( intValue = -269879271 ) - int field772; + @Export("maxY") + int maxY; @ObfuscatedName("p") @ObfuscatedGetter( intValue = -1161490471 diff --git a/runescape-client/src/main/java/class125.java b/runescape-client/src/main/java/class125.java index 6388137af1..0571961693 100644 --- a/runescape-client/src/main/java/class125.java +++ b/runescape-client/src/main/java/class125.java @@ -63,8 +63,8 @@ public class class125 extends class116 { var7 = var3.sizeX; // L: 67 } - var5.field771 = (var6 + var1) * 128; // L: 69 - var5.field772 = (var7 + var2) * 128; // L: 70 + var5.maxX = (var6 + var1) * 128; // L: 69 + var5.maxY = (var7 + var2) * 128; // L: 70 var5.soundEffectId = var3.ambientSoundId; // L: 71 var5.field773 = var3.int7 * 128; // L: 72 var5.field767 = var3.int5; // L: 73 diff --git a/runescape-client/src/main/java/class130.java b/runescape-client/src/main/java/class130.java index 67ade08f00..1d8592b3f8 100644 --- a/runescape-client/src/main/java/class130.java +++ b/runescape-client/src/main/java/class130.java @@ -59,14 +59,14 @@ public class class130 extends class116 { for (ObjectSound var4 = (ObjectSound)ObjectSound.objectSounds.last(); var4 != null; var4 = (ObjectSound)ObjectSound.objectSounds.previous()) { // L: 85 if (var4.soundEffectId != -1 || var4.soundEffectIds != null) { // L: 86 int var5 = 0; // L: 87 - if (var1 > var4.field771) { // L: 88 - var5 += var1 - var4.field771; + if (var1 > var4.maxX) { // L: 88 + var5 += var1 - var4.maxX; } else if (var1 < var4.x) { // L: 89 var5 += var4.x - var1; } - if (var2 > var4.field772) { // L: 90 - var5 += var2 - var4.field772; + if (var2 > var4.maxY) { // L: 90 + var5 += var2 - var4.maxY; } else if (var2 < var4.y) { // L: 91 var5 += var4.y - var2; }