diff options
Diffstat (limited to 'loader/src/main/java')
6 files changed, 89 insertions, 11 deletions
diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java index bdd2c21d..b5d76566 100755 --- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/Main.java @@ -29,10 +29,7 @@ import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiLoadingError; import kr.syeyoung.dungeonsguide.launcher.gui.screen.GuiUnloadingError; import kr.syeyoung.dungeonsguide.launcher.gui.tooltip.Notification; import kr.syeyoung.dungeonsguide.launcher.gui.tooltip.NotificationManager; -import kr.syeyoung.dungeonsguide.launcher.loader.IDGLoader; -import kr.syeyoung.dungeonsguide.launcher.loader.JarLoader; -import kr.syeyoung.dungeonsguide.launcher.loader.LocalLoader; -import kr.syeyoung.dungeonsguide.launcher.loader.RemoteLoader; +import kr.syeyoung.dungeonsguide.launcher.loader.*; import lombok.Getter; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.IReloadableResourceManager; @@ -201,7 +198,7 @@ public class Main NotificationManager.INSTANCE.updateNotification(UUID.randomUUID(), Notification.builder() .title("Dungeons Guide Loaded!") - .description("Successfully Loaded DugneonsGuide!\nLoader: "+currentLoader.loaderName()+"\nVersion: "+currentLoader.version()) + .description("Successfully Loaded Dungeons Guide!\nLoader: "+currentLoader.loaderName()+"\nVersion: "+currentLoader.version()) .titleColor(0xFF00FF00) .build()); @@ -261,7 +258,9 @@ public class Main public IDGLoader obtainLoader(Configuration configuration) throws NoVersionFoundException, NoSuitableLoaderFoundException { String loader = getLoaderName(configuration); - if ("local".equals(loader) || + if ("devenv".equals(loader)) { + return new DevEnvLoader(); + } else if ("local".equals(loader) || (loader.equals("auto") && this.getClass().getResourceAsStream("/kr/syeyoung/dungeonsguide/mod/DungeonsGuide.class") != null)) { return new LocalLoader(); } else if ("jar".equals(loader) || diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/tooltip/NotificationManager.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/tooltip/NotificationManager.java index 661ad93c..d386ac50 100644 --- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/tooltip/NotificationManager.java +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/gui/tooltip/NotificationManager.java @@ -7,6 +7,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.renderer.GlStateManager; import net.minecraftforge.client.event.GuiScreenEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import org.lwjgl.input.Mouse; @@ -37,6 +38,7 @@ public class NotificationManager { int widthX = fr.getStringWidth("X"); GlStateManager.pushMatrix(); + GlStateManager.disableDepth(); GlStateManager.translate(sr.getScaledWidth() - 5, sr.getScaledHeight() -5, 0); int currY = sr.getScaledHeight() - 5; @@ -84,6 +86,7 @@ public class NotificationManager { GlStateManager.translate(0, -5, 0); } + GlStateManager.enableDepth(); GlStateManager.popMatrix(); } @@ -94,6 +97,7 @@ public class NotificationManager { int widthX = fr.getStringWidth("X"); GlStateManager.pushMatrix(); + GlStateManager.disableDepth(); GlStateManager.translate(sr.getScaledWidth() - 5, sr.getScaledHeight() -5, 0); int currY = sr.getScaledHeight() - 5; @@ -146,13 +150,14 @@ public class NotificationManager { GlStateManager.translate(0, -5, 0); } + GlStateManager.enableDepth(); GlStateManager.popMatrix(); } - @SubscribeEvent + @SubscribeEvent(priority = EventPriority.HIGHEST) public void onMouseInput(GuiScreenEvent.MouseInputEvent.Pre mouseInputEvent) { ScaledResolution sr = new ScaledResolution(Minecraft.getMinecraft()); FontRenderer fr = Minecraft.getMinecraft().fontRendererObj; diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DevEnvLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DevEnvLoader.java new file mode 100644 index 00000000..54969438 --- /dev/null +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/DevEnvLoader.java @@ -0,0 +1,78 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.launcher.loader; + +import kr.syeyoung.dungeonsguide.launcher.DGInterface; +import kr.syeyoung.dungeonsguide.launcher.exceptions.DungeonsGuideLoadingException; +import kr.syeyoung.dungeonsguide.launcher.exceptions.DungeonsGuideUnloadingException; +import net.minecraft.launchwrapper.LaunchClassLoader; +import org.apache.commons.io.IOUtils; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.lang.ref.PhantomReference; +import java.lang.ref.Reference; +import java.lang.ref.ReferenceQueue; + +public class DevEnvLoader implements IDGLoader { + private DGInterface dgInterface; + + @Override + public DGInterface loadDungeonsGuide() throws DungeonsGuideLoadingException { + if (dgInterface != null) throw new IllegalStateException("Already loaded"); + + try { + dgInterface = (DGInterface) Class.forName("kr.syeyoung.dungeonsguide.mod.DungeonsGuide").newInstance(); + + return dgInterface; + } catch (Throwable e) { + throw new DungeonsGuideLoadingException(e); + } + } + + @Override + public DGInterface getInstance() { + return dgInterface; + } + + @Override + public void unloadDungeonsGuide() throws DungeonsGuideUnloadingException { + } + + @Override + public boolean isUnloadable() { + return false; + } + + @Override + public boolean isLoaded() { + return dgInterface != null; + } + + @Override + public String loaderName() { + return "devenv"; + } + + @Override + public String version() { + return "unknown"; + } +} diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java index eef478d1..e6d46b7d 100644 --- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/JarLoader.java @@ -39,7 +39,6 @@ public class JarLoader implements IDGLoader { private ReferenceQueue<ClassLoader> refQueue = new ReferenceQueue<>(); private PhantomReference<ClassLoader> phantomReference; - private boolean loaded; public static class JarClassLoader extends DGClassLoader { public JarClassLoader(LaunchClassLoader parent, ZipInputStream zipInputStream) throws IOException { diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java index caf841a8..f1cabf1f 100644 --- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/LocalLoader.java @@ -37,7 +37,6 @@ public class LocalLoader implements IDGLoader { private ReferenceQueue<ClassLoader> refQueue = new ReferenceQueue<>(); private PhantomReference<ClassLoader> phantomReference; - private boolean loaded; public static class LocalClassLoader extends DGClassLoader { public LocalClassLoader(LaunchClassLoader parent) throws IOException { diff --git a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java index 12bb2b71..734e1463 100644 --- a/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java +++ b/loader/src/main/java/kr/syeyoung/dungeonsguide/launcher/loader/RemoteLoader.java @@ -43,8 +43,6 @@ public class RemoteLoader implements IDGLoader { private ReferenceQueue<ClassLoader> refQueue = new ReferenceQueue<>(); private PhantomReference<ClassLoader> phantomReference; - private boolean loaded; - public RemoteLoader(String friendlyBranchName, long branchId, long updateId) { this.friendlyBranchName = friendlyBranchName; this.branchId = branchId; |