From e7b2aba046e858370883170718bd0c9f57263659 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Jun 2022 17:39:41 +0200 Subject: [PATCH 1/5] Deactivate reflection and register manually --- build.gradle | 4 -- .../base/command/UCCommandHandler.java | 12 ++--- .../base/event/UCEventHandler.java | 14 ++--- .../base/module/UCModuleHandler.java | 14 ++--- .../base/reflection/ReflectionUtils.java | 51 +++++++++++++++++++ 5 files changed, 60 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/rettichlp/UnicacityAddon/base/reflection/ReflectionUtils.java diff --git a/build.gradle b/build.gradle index c9096a8..bb0dab0 100644 --- a/build.gradle +++ b/build.gradle @@ -94,7 +94,6 @@ dependencies { compile("net.minecraft:launchwrapper:1.12") { transitive = false } implementation 'org.jetbrains:annotations:23.0.0' - implementation 'org.reflections:reflections:0.10.2' } jar { @@ -112,7 +111,4 @@ task downloadAPI(type: Download) { src "https://dl.labymod.net/latest/api/files/lm_api_mc1.16.5.jar" dest 'libs/' - - // src "https://github.com/ronmamo/reflections/releases/download/0.10.2/reflections-0.10.2.jar" - // dest 'libs/' } \ No newline at end of file diff --git a/src/main/java/com/rettichlp/UnicacityAddon/base/command/UCCommandHandler.java b/src/main/java/com/rettichlp/UnicacityAddon/base/command/UCCommandHandler.java index 7995c5a..9c3ee32 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/base/command/UCCommandHandler.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/base/command/UCCommandHandler.java @@ -1,14 +1,12 @@ package com.rettichlp.UnicacityAddon.base.command; -import com.rettichlp.UnicacityAddon.UnicacityAddon; import com.rettichlp.UnicacityAddon.base.abstraction.AbstractionLayer; import com.rettichlp.UnicacityAddon.base.event.UCEvent; +import com.rettichlp.UnicacityAddon.base.reflection.ReflectionUtils; import com.rettichlp.UnicacityAddon.base.text.ColorCode; import com.rettichlp.UnicacityAddon.base.text.Message; import net.labymod.api.event.Subscribe; import net.labymod.api.event.events.client.chat.MessageSendEvent; -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -18,8 +16,6 @@ import java.util.List; import java.util.Map; -import static org.reflections.scanners.Scanners.MethodsAnnotated; - /** * @author RettichLP */ @@ -67,11 +63,9 @@ public void onMessageSend(MessageSendEvent e) { private Map getCommandMap() { Map commandMap = new HashMap<>(); - Reflections reflections = new Reflections(UnicacityAddon.class.getPackage().getName(), Scanners.values()); - reflections.get(MethodsAnnotated.with(UCCommand.class).as(Method.class)).forEach(method -> { + ReflectionUtils reflectionUtils = new ReflectionUtils("com.rettichlp.UnicacityAddon.commands"); + reflectionUtils.getMethodsAnnotatedWith(UCCommand.class).forEach(method -> { UCCommand ucCommand = method.getAnnotation(UCCommand.class); - System.out.println(Arrays.toString(ucCommand.value())); - for (int i = 0; i < ucCommand.value().length; i++) { commandMap.put(ucCommand.value()[i], method); } diff --git a/src/main/java/com/rettichlp/UnicacityAddon/base/event/UCEventHandler.java b/src/main/java/com/rettichlp/UnicacityAddon/base/event/UCEventHandler.java index 09a2aa7..dae6577 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/base/event/UCEventHandler.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/base/event/UCEventHandler.java @@ -1,13 +1,7 @@ package com.rettichlp.UnicacityAddon.base.event; -import com.rettichlp.UnicacityAddon.UnicacityAddon; import com.rettichlp.UnicacityAddon.base.abstraction.AbstractionLayer; -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; - -import java.util.Set; - -import static org.reflections.scanners.Scanners.TypesAnnotated; +import com.rettichlp.UnicacityAddon.base.reflection.ReflectionUtils; /** * @author RettichLP @@ -15,10 +9,8 @@ public class UCEventHandler { public static void registerEvents() { - Reflections reflections = new Reflections(UnicacityAddon.class.getPackage().getName(), Scanners.values()); - Set> events = reflections.get(TypesAnnotated.with(UCEvent.class).asClass()); - - events.forEach(clazz -> { + ReflectionUtils reflectionUtils = new ReflectionUtils("com.rettichlp.UnicacityAddon.events"); + reflectionUtils.getClassesAnnotatedWith(UCEvent.class).forEach(clazz -> { try { AbstractionLayer.getLabymod().getEventService().registerListener(clazz.newInstance()); } catch (InstantiationException | IllegalAccessException e) { diff --git a/src/main/java/com/rettichlp/UnicacityAddon/base/module/UCModuleHandler.java b/src/main/java/com/rettichlp/UnicacityAddon/base/module/UCModuleHandler.java index dca30b3..598b664 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/base/module/UCModuleHandler.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/base/module/UCModuleHandler.java @@ -1,17 +1,11 @@ package com.rettichlp.UnicacityAddon.base.module; -import com.rettichlp.UnicacityAddon.UnicacityAddon; import com.rettichlp.UnicacityAddon.base.abstraction.AbstractionLayer; +import com.rettichlp.UnicacityAddon.base.reflection.ReflectionUtils; import net.labymod.ingamegui.Module; import net.labymod.ingamegui.ModuleCategory; import net.labymod.settings.elements.ControlElement; import net.labymod.utils.Material; -import org.reflections.Reflections; -import org.reflections.scanners.Scanners; - -import java.util.Set; - -import static org.reflections.scanners.Scanners.TypesAnnotated; /** * @author RettichLP @@ -21,10 +15,8 @@ public class UCModuleHandler { public static final ModuleCategory UNICACITY = new ModuleCategory("Unicacity", true, new ControlElement.IconData(Material.DIAMOND)); public static void registerModules() { - Reflections reflections = new Reflections(UnicacityAddon.class.getPackage().getName(), Scanners.values()); - Set> events = reflections.get(TypesAnnotated.with(UCModule.class).asClass()); - - events.forEach(clazz -> { + ReflectionUtils reflectionUtils = new ReflectionUtils("com.rettichlp.UnicacityAddon.modules"); + reflectionUtils.getClassesAnnotatedWith(UCModule.class).forEach(clazz -> { try { AbstractionLayer.getLabymod().getApi().registerModule((Module) clazz.newInstance()); } catch (InstantiationException | IllegalAccessException e) { diff --git a/src/main/java/com/rettichlp/UnicacityAddon/base/reflection/ReflectionUtils.java b/src/main/java/com/rettichlp/UnicacityAddon/base/reflection/ReflectionUtils.java new file mode 100644 index 0000000..b001a77 --- /dev/null +++ b/src/main/java/com/rettichlp/UnicacityAddon/base/reflection/ReflectionUtils.java @@ -0,0 +1,51 @@ +package com.rettichlp.UnicacityAddon.base.reflection; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class ReflectionUtils { + + private String inPackage; + + public ReflectionUtils(String inPackage) { + this.inPackage = inPackage; + } + + public List getClassesAnnotatedWith(Class annotation) { + return getAllClasses().stream().filter(aClass -> { + Arrays.stream(aClass.getAnnotations()).filter(annotation1 -> annotation1.annotationType().equals(annotation)); + return true; + }).collect(Collectors.toList()); + } + + public List getMethodsAnnotatedWith(Class annotation) { + List methods = new ArrayList<>(); + getAllClasses().forEach(clazz -> Arrays.asList(clazz.getMethods()).forEach(method -> { + if (Arrays.asList(method.getAnnotations()).contains(annotation)) + methods.add(method); + })); + return methods; + } + + private Set getAllClasses() { + InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream(inPackage.replaceAll("[.]", "/")); + BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); + return reader.lines().filter(line -> line.endsWith(".class")).map(line -> getClass(line, inPackage)).collect(Collectors.toSet()); + } + + private Class getClass(String className, String packageName) { + try { + return Class.forName(packageName + "." + className.substring(0, className.lastIndexOf('.'))); + } catch (ClassNotFoundException e) { + e.getCause().printStackTrace(); + } + return null; + } +} From 92b1145aaffa0d263aa0d114ae8da26b3edb5048 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Jun 2022 17:40:37 +0200 Subject: [PATCH 2/5] Split BombTimerModule in BombTimerModule and BombTimerEventHandler --- .../UnicacityAddon/UnicacityAddon.java | 21 +++++--- .../events/BombTimerEventHandler.java | 42 ++++++++++++++++ .../modules/BombTimerModule.java | 48 +++---------------- 3 files changed, 63 insertions(+), 48 deletions(-) create mode 100644 src/main/java/com/rettichlp/UnicacityAddon/events/BombTimerEventHandler.java diff --git a/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java b/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java index f160b2e..caeecf3 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java @@ -1,9 +1,14 @@ package com.rettichlp.UnicacityAddon; +import com.rettichlp.UnicacityAddon.base.abstraction.AbstractionLayer; +import com.rettichlp.UnicacityAddon.base.command.UCCommandHandler; import com.rettichlp.UnicacityAddon.base.config.ConfigSettings; -import com.rettichlp.UnicacityAddon.base.event.UCEventHandler; import com.rettichlp.UnicacityAddon.base.faction.FactionHandler; import com.rettichlp.UnicacityAddon.base.module.UCModuleHandler; +import com.rettichlp.UnicacityAddon.events.ATMInfoEventHandler; +import com.rettichlp.UnicacityAddon.events.BombTimerEventHandler; +import com.rettichlp.UnicacityAddon.events.NameTagEventHandler; +import com.rettichlp.UnicacityAddon.modules.BombTimerModule; import net.labymod.api.LabyModAddon; import net.labymod.ingamegui.ModuleCategoryRegistry; import net.labymod.settings.elements.SettingsElement; @@ -22,17 +27,21 @@ public class UnicacityAddon extends LabyModAddon { public void onEnable() { ADDON = this; - UCEventHandler.registerEvents(); - UCModuleHandler.registerModules(); - - FactionHandler.getPlayerFactionMap(); - FactionHandler.getPlayerRankMap(); + // UCEventHandler.registerEvents(); + AbstractionLayer.getLabymod().getEventService().registerListener(new UCCommandHandler()); + AbstractionLayer.getLabymod().getEventService().registerListener(new ATMInfoEventHandler()); + AbstractionLayer.getLabymod().getEventService().registerListener(new BombTimerEventHandler()); + AbstractionLayer.getLabymod().getEventService().registerListener(new NameTagEventHandler()); + //UCModuleHandler.registerModules(); ModuleCategoryRegistry.loadCategory(UCModuleHandler.UNICACITY); + AbstractionLayer.getLabymod().getApi().registerModule(new BombTimerModule()); } @Override public void loadConfig() { + FactionHandler.getPlayerFactionMap(); + FactionHandler.getPlayerRankMap(); } @Override diff --git a/src/main/java/com/rettichlp/UnicacityAddon/events/BombTimerEventHandler.java b/src/main/java/com/rettichlp/UnicacityAddon/events/BombTimerEventHandler.java new file mode 100644 index 0000000..05a45dc --- /dev/null +++ b/src/main/java/com/rettichlp/UnicacityAddon/events/BombTimerEventHandler.java @@ -0,0 +1,42 @@ +package com.rettichlp.UnicacityAddon.events; + +import com.rettichlp.UnicacityAddon.base.event.UCEvent; +import com.rettichlp.UnicacityAddon.base.text.ColorCode; +import com.rettichlp.UnicacityAddon.base.text.PatternHandler; +import com.rettichlp.UnicacityAddon.modules.BombTimerModule; +import net.labymod.api.event.Subscribe; +import net.labymod.api.event.events.client.TickEvent; +import net.labymod.api.event.events.client.chat.MessageReceiveEvent; +import net.labymod.utils.ModUtils; + +@UCEvent +public class BombTimerEventHandler { + + @Subscribe + public void onTick(TickEvent event) { + if (event.getPhase() != TickEvent.Phase.POST) return; + + if (!BombTimerModule.isBomb || ++BombTimerModule.currentTick != 20) return; + BombTimerModule.currentTick = 0; + + if (BombTimerModule.currentCount++ >= 780) BombTimerModule.timer = ColorCode.RED.getCode() + ModUtils.parseTimer(BombTimerModule.currentCount); + else BombTimerModule.timer = ModUtils.parseTimer(BombTimerModule.currentCount); + } + + @Subscribe + public void onMesageReceive(MessageReceiveEvent e) { + String msg = e.getComponent().getString(); + + if (PatternHandler.BOMB_PLACED_PATTERN.matcher(msg).find()) { + BombTimerModule.isBomb = true; + BombTimerModule.timer = "00:00"; + return; + } + + if (PatternHandler.BOMB_REMOVED_PATTERN.matcher(msg).find()) { + BombTimerModule.isBomb = false; + BombTimerModule.currentCount = 0; + BombTimerModule.timer = ""; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/rettichlp/UnicacityAddon/modules/BombTimerModule.java b/src/main/java/com/rettichlp/UnicacityAddon/modules/BombTimerModule.java index 010f63f..86d2198 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/modules/BombTimerModule.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/modules/BombTimerModule.java @@ -1,28 +1,20 @@ package com.rettichlp.UnicacityAddon.modules; import com.rettichlp.UnicacityAddon.base.abstraction.AbstractionLayer; -import com.rettichlp.UnicacityAddon.base.event.UCEvent; import com.rettichlp.UnicacityAddon.base.module.UCModule; import com.rettichlp.UnicacityAddon.base.module.UCModuleHandler; -import com.rettichlp.UnicacityAddon.base.text.ColorCode; -import com.rettichlp.UnicacityAddon.base.text.PatternHandler; -import net.labymod.api.event.Subscribe; -import net.labymod.api.event.events.client.TickEvent; -import net.labymod.api.event.events.client.chat.MessageReceiveEvent; import net.labymod.ingamegui.ModuleCategory; import net.labymod.ingamegui.moduletypes.SimpleModule; import net.labymod.settings.elements.ControlElement; import net.labymod.utils.Material; -import net.labymod.utils.ModUtils; @UCModule -@UCEvent public class BombTimerModule extends SimpleModule { - private int currentCount = 0; - private int currentTick = 0; - private static boolean isBomb = false; - private String timer = ""; + public static int currentCount = 0; + public static int currentTick = 0; + public static boolean isBomb = false; + public static String timer = ""; public BombTimerModule() { AbstractionLayer.getLabymod().getEventService().registerListener(this); @@ -41,7 +33,7 @@ public BombTimerModule() { } @Override public String getDisplayValue() { - return this.timer; + return timer; } @Override public String getDefaultValue() { @@ -61,7 +53,7 @@ public BombTimerModule() { } @Override public boolean isShown() { - return !this.timer.isEmpty(); + return !timer.isEmpty(); } @Override public int getSortingId() { @@ -70,32 +62,4 @@ public BombTimerModule() { @Override public void loadSettings() { } - - @Subscribe - public void onTick(TickEvent event) { - if (event.getPhase() != TickEvent.Phase.POST) return; - - if (!isBomb || ++this.currentTick != 20) return; - this.currentTick = 0; - - if (this.currentCount++ >= 780) this.timer = ColorCode.RED.getCode() + ModUtils.parseTimer(this.currentCount); - else this.timer = ModUtils.parseTimer(this.currentCount); - } - - @Subscribe - public void onMesageReceive(MessageReceiveEvent e) { - String msg = e.getComponent().getString(); - - if (PatternHandler.BOMB_PLACED_PATTERN.matcher(msg).find()) { - isBomb = true; - this.timer = "00:00"; - return; - } - - if (PatternHandler.BOMB_REMOVED_PATTERN.matcher(msg).find()) { - isBomb = false; - this.currentCount = 0; - this.timer = ""; - } - } } \ No newline at end of file From dfd10e081bad85869d8fe5b69a7e3c618731a7b5 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Jun 2022 17:42:08 +0200 Subject: [PATCH 3/5] Update release github action to only listen on push --- .github/workflows/release.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 10a3c08..6e6f5a6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,12 +1,9 @@ -name: Gradle release +name: Release on: push: branches: - main - pull_request: - branches: - - main jobs: build: From f2f2a92fc7ddfa2b2161d1c23bcb8ae8e46bbb56 Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Jun 2022 17:48:03 +0200 Subject: [PATCH 4/5] Update version and picture --- build.gradle | 2 +- src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java | 2 +- src/main/resources/addon.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index bb0dab0..1fbe7c6 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'maven-publish' apply plugin: 'org.spongepowered.mixin' apply plugin: 'com.github.johnrengelman.shadow' -version = '1.0.0' +version = '1.0.0-beta.2' group = 'com.rettichlp.UnicacityAddon' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'UnicacityAddon' diff --git a/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java b/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java index caeecf3..a28f6ad 100644 --- a/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java +++ b/src/main/java/com/rettichlp/UnicacityAddon/UnicacityAddon.java @@ -20,7 +20,7 @@ */ public class UnicacityAddon extends LabyModAddon { - public static final String VERSION = "1.0.0-beta"; + public static final String VERSION = "1.0.0-beta.2"; public static UnicacityAddon ADDON; @Override diff --git a/src/main/resources/addon.json b/src/main/resources/addon.json index f96c003..1d30929 100644 --- a/src/main/resources/addon.json +++ b/src/main/resources/addon.json @@ -7,5 +7,5 @@ "version": 1, "author": "RettichLP", "category": 3, - "icon": "https://i.imgur.com/kvc4Tpd.png" + "icon": "https://i.imgur.com/GT5bHRz.jpg" } \ No newline at end of file From 27e851d1bae546789149508a36340a12b01c2b2d Mon Sep 17 00:00:00 2001 From: rettichlp Date: Tue, 14 Jun 2022 17:54:23 +0200 Subject: [PATCH 5/5] Update release.yml --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6e6f5a6..f6d7d49 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,7 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew downloadAPI shadowJar + run: ./gradlew downloadAPI build - name: Upload jar uses: actions/upload-artifact@v1 with: