diff options
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuideMain.java')
-rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuideMain.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuideMain.java b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuideMain.java new file mode 100644 index 00000000..1c35524d --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuideMain.java @@ -0,0 +1,133 @@ +package kr.syeyoung.dungeonsguide; + +import com.mojang.authlib.exceptions.AuthenticationException; +import lombok.Getter; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiErrorScreen; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.util.IChatComponent; +import net.minecraftforge.fml.client.CustomModLoadingErrorDisplayException; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.event.FMLInitializationEvent; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; + +import java.io.*; +import java.security.NoSuchAlgorithmException; + +@Mod(modid = DungeonsGuideMain.MODID, version = DungeonsGuideMain.VERSION) +public class DungeonsGuideMain +{ + public static final String MODID = "skyblock_dungeons_guide"; + public static final String VERSION = "0.1"; + + private static DungeonsGuideMain DungeonsGuideMain; + + private DungeonsGuideInterface dungeonsGuideInterface; + + @EventHandler + public void init(FMLInitializationEvent event) + { + + DungeonsGuideMain = this; + + dungeonsGuideInterface.init(event); + } + + @Getter + private Authenticator authenticator; + private NetworkClassLoader classLoader; + @EventHandler + public void pre(FMLPreInitializationEvent event) { + authenticator = new Authenticator(); + String token = null; + try { + token = authenticator.authenticate(); + System.out.println(token); + if (token != null) { + classLoader = new NetworkClassLoader(authenticator, DungeonsGuide.class.getClassLoader()); + + Class skyblockStatusCls = null; + try { + skyblockStatusCls = classLoader.findClass("kr.syeyoung.dungeonsguide.DungeonsGuide"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + + error(new String[]{ + "Couldn't load Dungeons Guide", + "Please contact developer if this problem persists after restart" + }); + return; + } + try { + dungeonsGuideInterface = (DungeonsGuideInterface) skyblockStatusCls.newInstance(); + dungeonsGuideInterface.pre(event); + } catch (InstantiationException e) { + e.printStackTrace(); + + error(new String[]{ + "Couldn't load Dungeons Guide", + "Please contact developer if this problem persists after restart" + }); + } catch (IllegalAccessException e) { + e.printStackTrace(); + + error(new String[]{ + "Couldn't load Dungeons Guide", + "Please contact developer if this problem persists after restart" + }); + } + return; + } + } catch (IOException e) { + e.printStackTrace(); + } catch (AuthenticationException e) { + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + + error(new String[]{ + "Can't validate current installation of Dungeons Guide", + "Please contact mod author if you purchased this mod and getting this error", + "And if you haven't purchased the mod, please consider doing so" + }); + } + + public void error(final String[] s_msg) { + final GuiScreen errorGui = new GuiErrorScreen(null, null) { + + @Override + public void handleMouseInput() { + } + + @Override + public void handleKeyboardInput() { + } + + @Override + public void drawScreen(int par1, int par2, float par3) { + drawDefaultBackground(); + for (int i = 0; i < s_msg.length; ++i) { + drawCenteredString(fontRendererObj, s_msg[i], width / 2, height / 3 + 12 * i, 0xFFFFFFFF); + } + } + }; + @SuppressWarnings("serial") CustomModLoadingErrorDisplayException e = new CustomModLoadingErrorDisplayException() { + + @Override + public void initGui(GuiErrorScreen errorScreen, FontRenderer fontRenderer) { + Minecraft.getMinecraft().displayGuiScreen(errorGui); + } + + @Override + public void drawScreen(GuiErrorScreen errorScreen, FontRenderer fontRenderer, int mouseRelX, int mouseRelY, float tickTime) { + } + }; + throw e; + } + public static DungeonsGuideMain getDungeonsGuideMain() { + return DungeonsGuideMain; + } +} |