From c984198dd24eb57d8cd30e7a5da789c0f091ff80 Mon Sep 17 00:00:00 2001 From: therealnull Date: Sun, 4 Oct 2020 20:35:58 -0400 Subject: [PATCH 1/2] injectors: add CreateAnnotations --- build.gradle.kts | 4 +- .../java/com/openosrs/injector/Injection.java | 3 + .../injector/injectors/CreateAnnotations.java | 74 +++++++++++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java diff --git a/build.gradle.kts b/build.gradle.kts index c8342f9..f97c53e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,10 +15,10 @@ plugins { id("se.patrikerdes.use-latest-versions") version "0.2.14" } -val oprsver = "3.4.0" +val oprsver = "3.4.5" group = "com.openosrs" -version = "1.1.5" +version = "1.1.6" repositories { mavenCentral() diff --git a/src/main/java/com/openosrs/injector/Injection.java b/src/main/java/com/openosrs/injector/Injection.java index f78bb5c..307697b 100644 --- a/src/main/java/com/openosrs/injector/Injection.java +++ b/src/main/java/com/openosrs/injector/Injection.java @@ -9,6 +9,7 @@ package com.openosrs.injector; import com.openosrs.injector.injection.InjectData; import com.openosrs.injector.injection.InjectTaskHandler; +import com.openosrs.injector.injectors.CreateAnnotations; import com.openosrs.injector.injectors.InjectConstruct; import com.openosrs.injector.injectors.Injector; import com.openosrs.injector.injectors.InterfaceInjector; @@ -50,6 +51,8 @@ public class Injection extends InjectData implements InjectTaskHandler { log.debug("[DEBUG] Starting injection"); + inject(new CreateAnnotations(this)); + inject(new InterfaceInjector(this)); inject(new RasterizerAlpha(this)); diff --git a/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java b/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java new file mode 100644 index 0000000..fd00548 --- /dev/null +++ b/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2019, Lucas + * All rights reserved. + * + * This code is licensed under GPL3, see the complete license in + * the LICENSE file in the root directory of this source tree. + * + * Copyright (c) 2016-2017, 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 com.openosrs.injector.injectors; + +import com.openosrs.injector.injection.InjectData; +import net.runelite.asm.ClassFile; +import net.runelite.asm.Field; +import net.runelite.asm.Method; +import net.runelite.deob.DeobAnnotations; + +/* + * This handles creating "virtual" annotations to clean up rs-client in the main project + */ +public class CreateAnnotations extends AbstractInjector +{ + + public CreateAnnotations(InjectData inject) + { + super(inject); + } + + public void inject() + { + for (final ClassFile deobClass : inject.getDeobfuscated()) + { + injectFields(deobClass); + injectMethods(deobClass); + } + } + + private void injectFields(ClassFile deobClass) + { + for (Field deobField : deobClass.getFields()) + { + deobField.addAnnotation(DeobAnnotations.EXPORT, deobField.getName()); + } + } + + private void injectMethods(ClassFile deobClass) + { + for (Method deobMethod : deobClass.getMethods()) + { + deobMethod.addAnnotation(DeobAnnotations.EXPORT, deobMethod.getName()); + } + } +} From a1c9346233e6ddd43c9687f0a7b8d8ddba89cce0 Mon Sep 17 00:00:00 2001 From: therealnull Date: Sun, 4 Oct 2020 21:07:33 -0400 Subject: [PATCH 2/2] injectors: also handle Implements --- .../com/openosrs/injector/injectors/CreateAnnotations.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java b/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java index fd00548..bfabccd 100644 --- a/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java +++ b/src/main/java/com/openosrs/injector/injectors/CreateAnnotations.java @@ -53,6 +53,11 @@ public class CreateAnnotations extends AbstractInjector { injectFields(deobClass); injectMethods(deobClass); + + if (deobClass.getName().startsWith("class")) + continue; + + deobClass.addAnnotation(DeobAnnotations.IMPLEMENTS, deobClass.getName()); } }