diff --git a/src/main/java/com/legacy/aether/AetherConfig.java b/src/main/java/com/legacy/aether/AetherConfig.java index 1713ec5..77877bf 100644 --- a/src/main/java/com/legacy/aether/AetherConfig.java +++ b/src/main/java/com/legacy/aether/AetherConfig.java @@ -7,6 +7,8 @@ import net.minecraftforge.common.config.Configuration; public class AetherConfig { + public static Configuration config; + private static int max_life_shards; private static boolean christmas_content, tallgrass; @@ -21,6 +23,8 @@ public class AetherConfig { private static int travel_dimension; + private static boolean menu_enabled, menu_button; + public static void init(File location) { File newFile = new File(location + "/aether" + "/AetherI.cfg"); @@ -30,7 +34,7 @@ public class AetherConfig { } - Configuration config = new Configuration(newFile); + config = new Configuration(newFile); config.load(); @@ -51,6 +55,9 @@ public class AetherConfig { max_life_shards = config.get("Gameplay", "Max Life Shards", 10).getInt(10); + menu_enabled = config.get("Misc", "Enables the Aether Menu", false).getBoolean(false); + menu_button = config.get("Misc", "Enables the Aether Menu toggle button", true).getBoolean(true); + config.save(); } @@ -99,4 +106,13 @@ public class AetherConfig { return AetherConfig.valkyrie_cape; } + public static boolean menuEnabled() + { + return AetherConfig.menu_enabled; + } + + public static boolean menuButtonEnabled() + { + return AetherConfig.menu_button; + } } \ No newline at end of file diff --git a/src/main/java/com/legacy/aether/client/AetherClientEvents.java b/src/main/java/com/legacy/aether/client/AetherClientEvents.java index 3716ecb..dc0daf5 100644 --- a/src/main/java/com/legacy/aether/client/AetherClientEvents.java +++ b/src/main/java/com/legacy/aether/client/AetherClientEvents.java @@ -3,10 +3,13 @@ package com.legacy.aether.client; import java.util.List; import com.legacy.aether.client.gui.GuiEnterAether; +import com.legacy.aether.client.gui.menu.AetherMainMenu; +import com.legacy.aether.client.gui.menu.GuiMenuToggleButton; import cpw.mods.fml.client.FMLClientHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiDownloadTerrain; +import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.gui.inventory.GuiContainerCreative; @@ -188,6 +191,8 @@ public class AetherClientEvents { private static final GuiAccessoryButton ACCESSORY_BUTTON = new GuiAccessoryButton(0, 0); + private static final GuiMenuToggleButton MAIN_MENU_BUTTON = new GuiMenuToggleButton(0, 0); + private static int previousSelectedTabIndex = -1; @SubscribeEvent @@ -211,6 +216,16 @@ public class AetherClientEvents { event.buttonList.add(ACCESSORY_BUTTON.setPosition(guiLeft + 26, guiTop + 65)); } } + + if (AetherConfig.config.get("Misc", "Enables the Aether Menu toggle button", false).getBoolean() && event.gui instanceof GuiMainMenu) + { + event.buttonList.add(MAIN_MENU_BUTTON.setPosition(event.gui.width - 24, 4)); + } + + if (AetherConfig.config.get("Misc", "Enables the Aether Menu", false).getBoolean() && event.gui.getClass() == GuiMainMenu.class) + { + Minecraft.getMinecraft().displayGuiScreen(new AetherMainMenu()); + } } @SubscribeEvent @@ -235,6 +250,15 @@ public class AetherClientEvents { } } + @SubscribeEvent + public void onDrawGui(GuiScreenEvent.DrawScreenEvent.Pre event) + { + if (!AetherConfig.config.get("Misc", "Enables the Aether Menu", false).getBoolean() && event.gui.getClass() == AetherMainMenu.class) + { + Minecraft.getMinecraft().displayGuiScreen(new GuiMainMenu()); + } + } + @SubscribeEvent public void onButtonPressed(GuiScreenEvent.ActionPerformedEvent.Pre event) { Class clazz = event.gui.getClass(); diff --git a/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenu.java b/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenu.java new file mode 100644 index 0000000..90a115d --- /dev/null +++ b/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenu.java @@ -0,0 +1,544 @@ +package com.legacy.aether.client.gui.menu; + +import com.google.common.base.Strings; +import com.google.common.collect.Lists; +import cpw.mods.fml.client.GuiModList; +import cpw.mods.fml.common.FMLCommonHandler; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.*; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.resources.I18n; +import net.minecraft.realms.RealmsBridge; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.demo.DemoWorldServer; +import net.minecraft.world.storage.ISaveFormat; +import net.minecraft.world.storage.WorldInfo; +import net.minecraftforge.client.ForgeHooksClient; +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.common.MinecraftForge; +import org.apache.commons.io.Charsets; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GLContext; +import org.lwjgl.util.glu.Project; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URI; +import java.util.*; + +public class AetherMainMenu extends GuiMainMenu +{ + private static final Logger logger = LogManager.getLogger(); + private static final Random rand = new Random(); + private String splashText; + private GuiButton buttonResetDemo; + private int panoramaTimer; + private DynamicTexture viewportTexture; + private final Object field_104025_t = new Object(); + private String field_92025_p; + private String field_146972_A; + private String field_104024_v; + private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt"); + private static final ResourceLocation aetherTitleTextures = new ResourceLocation("aether_legacy", "textures/gui/menu/aether.png"); + private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] {new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_0.png"), new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_1.png"), new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_2.png"), new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_3.png"), new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_4.png"), new ResourceLocation("aether_legacy", "textures/gui/menu/panorama/panorama_5.png")}; + public static final String field_96138_a = "Please click " + EnumChatFormatting.UNDERLINE + "here" + EnumChatFormatting.RESET + " for more information."; + private int field_92024_r; + private int field_92023_s; + private int field_92022_t; + private int field_92021_u; + private int field_92020_v; + private int field_92019_w; + private ResourceLocation field_110351_G; + private GuiButton selectedButton; + + public AetherMainMenu() + { + this.field_146972_A = field_96138_a; + this.splashText = "missingno"; + BufferedReader bufferedreader = null; + + try + { + ArrayList arraylist = new ArrayList(); + bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8)); + String s; + + while ((s = bufferedreader.readLine()) != null) + { + s = s.trim(); + + if (!s.isEmpty()) + { + arraylist.add(s); + } + } + + if (!arraylist.isEmpty()) + { + do + { + this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size())); + } + while (this.splashText.hashCode() == 125780783); + } + } + catch (IOException ioexception1) + { + ; + } + finally + { + if (bufferedreader != null) + { + try + { + bufferedreader.close(); + } + catch (IOException ioexception) + { + ; + } + } + } + + this.field_92025_p = ""; + + if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.func_153193_b()) + { + this.field_92025_p = I18n.format("title.oldgl1", new Object[0]); + this.field_146972_A = I18n.format("title.oldgl2", new Object[0]); + this.field_104024_v = "https://help.mojang.com/customer/portal/articles/325948?ref=game"; + } + } + + @Override + public void updateScreen() + { + ++this.panoramaTimer; + } + + @Override + public boolean doesGuiPauseGame() + { + return false; + } + + @Override + protected void keyTyped(char p_73869_1_, int p_73869_2_) {} + + @Override + public void initGui() + { + this.viewportTexture = new DynamicTexture(256, 256); + this.field_110351_G = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + + if (calendar.get(2) + 1 == 11 && calendar.get(5) == 9) + { + this.splashText = "Happy birthday, ez!"; + } + else if (calendar.get(2) + 1 == 6 && calendar.get(5) == 1) + { + this.splashText = "Happy birthday, Notch!"; + } + else if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24) + { + this.splashText = "Merry X-mas!"; + } + else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1) + { + this.splashText = "Happy new year!"; + } + else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31) + { + this.splashText = "OOoooOOOoooo! Spooky!"; + } + + boolean flag = true; + int i = this.height / 4 + 48; + + this.addSingleplayerMultiplayerButtons(80, 24); + + Object object = this.field_104025_t; + + synchronized (this.field_104025_t) + { + this.field_92023_s = this.fontRendererObj.getStringWidth(this.field_92025_p); + this.field_92024_r = this.fontRendererObj.getStringWidth(this.field_146972_A); + int j = Math.max(this.field_92023_s, this.field_92024_r); + this.field_92022_t = (this.width - j) / 2; + this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24; + this.field_92020_v = this.field_92022_t + j; + this.field_92019_w = this.field_92021_u + 24; + } + } + + private void addSingleplayerMultiplayerButtons(int p_73969_1_, int p_73969_2_) + { + this.buttonList.add(new AetherMainMenuButton(1, 30, p_73969_1_, 200, 20, 35, I18n.format("menu.singleplayer", new Object[0]))); + this.buttonList.add(new AetherMainMenuButton(2, 30, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer", new Object[0]))); + GuiButton realmsButton = new AetherMainMenuButton(14, 30, p_73969_1_ + p_73969_2_ * 2, 200, 20, 24, I18n.format("menu.online", new Object[0])); + GuiButton fmlModButton = new AetherMainMenuButton(6, 30, p_73969_1_ + p_73969_2_ * 3, 200, 20, 54, "Mods"); + this.buttonList.add(realmsButton); + this.buttonList.add(fmlModButton); + this.buttonList.add(new AetherMainMenuButton(0, 30, p_73969_1_ + p_73969_2_ * 4, 200, 20, 45, I18n.format("menu.options", new Object[0]))); + this.buttonList.add(new AetherMainMenuButton(4,30, p_73969_1_ + p_73969_2_ * 5, 200, 20, 43, I18n.format("menu.quit", new Object[0]))); + } + + @Override + protected void actionPerformed(GuiButton p_146284_1_) + { + if (p_146284_1_.id == 0) + { + this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings)); + } + + if (p_146284_1_.id == 5) + { + this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager())); + } + + if (p_146284_1_.id == 1) + { + this.mc.displayGuiScreen(new GuiSelectWorld(this)); + } + + if (p_146284_1_.id == 2) + { + this.mc.displayGuiScreen(new GuiMultiplayer(this)); + } + + if (p_146284_1_.id == 14) + { + this.func_140005_i(); + } + + if (p_146284_1_.id == 4) + { + this.mc.shutdown(); + } + + if (p_146284_1_.id == 6) + { + this.mc.displayGuiScreen(new GuiModList(this)); + } + + if (p_146284_1_.id == 11) + { + this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings); + } + + if (p_146284_1_.id == 12) + { + ISaveFormat isaveformat = this.mc.getSaveLoader(); + WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World"); + + if (worldinfo != null) + { + GuiYesNo guiyesno = GuiSelectWorld.func_152129_a(this, worldinfo.getWorldName(), 12); + this.mc.displayGuiScreen(guiyesno); + } + } + } + + private void func_140005_i() + { + RealmsBridge realmsbridge = new RealmsBridge(); + realmsbridge.switchToRealms(this); + } + + @Override + public void confirmClicked(boolean p_73878_1_, int p_73878_2_) + { + if (p_73878_1_ && p_73878_2_ == 12) + { + ISaveFormat isaveformat = this.mc.getSaveLoader(); + isaveformat.flushCache(); + isaveformat.deleteWorldDirectory("Demo_World"); + this.mc.displayGuiScreen(this); + } + else if (p_73878_2_ == 13) + { + if (p_73878_1_) + { + try + { + Class oclass = Class.forName("java.awt.Desktop"); + Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]); + oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI(this.field_104024_v)}); + } + catch (Throwable throwable) + { + logger.error("Couldn\'t open link", throwable); + } + } + + this.mc.displayGuiScreen(this); + } + } + + private void drawPanorama(int p_73970_1_, int p_73970_2_, float p_73970_3_) + { + Tessellator tessellator = Tessellator.instance; + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glPushMatrix(); + GL11.glLoadIdentity(); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glRotatef(180.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(90.0F, 0.0F, 0.0F, 1.0F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDepthMask(false); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + byte b0 = 8; + + for (int k = 0; k < b0 * b0; ++k) + { + GL11.glPushMatrix(); + float f1 = ((float)(k % b0) / (float)b0 - 0.5F) / 64.0F; + float f2 = ((float)(k / b0) / (float)b0 - 0.5F) / 64.0F; + float f3 = 0.0F; + GL11.glTranslatef(f1, f2, f3); + GL11.glRotatef(MathHelper.sin(((float)this.panoramaTimer + p_73970_3_) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-((float)this.panoramaTimer + p_73970_3_) * 0.1F, 0.0F, 1.0F, 0.0F); + + for (int l = 0; l < 6; ++l) + { + GL11.glPushMatrix(); + + if (l == 1) + { + GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); + } + + if (l == 2) + { + GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); + } + + if (l == 3) + { + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + } + + if (l == 4) + { + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + } + + if (l == 5) + { + GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); + } + + this.mc.getTextureManager().bindTexture(titlePanoramaPaths[l]); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_I(16777215, 255 / (k + 1)); + float f4 = 0.0F; + tessellator.addVertexWithUV(-1.0D, -1.0D, 1.0D, (double)(0.0F + f4), (double)(0.0F + f4)); + tessellator.addVertexWithUV(1.0D, -1.0D, 1.0D, (double)(1.0F - f4), (double)(0.0F + f4)); + tessellator.addVertexWithUV(1.0D, 1.0D, 1.0D, (double)(1.0F - f4), (double)(1.0F - f4)); + tessellator.addVertexWithUV(-1.0D, 1.0D, 1.0D, (double)(0.0F + f4), (double)(1.0F - f4)); + tessellator.draw(); + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + GL11.glColorMask(true, true, true, false); + } + + tessellator.setTranslation(0.0D, 0.0D, 0.0D); + GL11.glColorMask(true, true, true, true); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glPopMatrix(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glPopMatrix(); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_DEPTH_TEST); + } + + private void rotateAndBlurSkybox(float p_73968_1_) + { + this.mc.getTextureManager().bindTexture(this.field_110351_G); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); + GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); + GL11.glCopyTexSubImage2D(GL11.GL_TEXTURE_2D, 0, 0, 0, 0, 0, 256, 256); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColorMask(true, true, true, false); + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + GL11.glDisable(GL11.GL_ALPHA_TEST); + byte b0 = 3; + + for (int i = 0; i < b0; ++i) + { + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F / (float)(i + 1)); + int j = this.width; + int k = this.height; + float f1 = (float)(i - b0 / 2) / 256.0F; + tessellator.addVertexWithUV((double)j, (double)k, (double)this.zLevel, (double)(0.0F + f1), 1.0D); + tessellator.addVertexWithUV((double)j, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 1.0D); + tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(1.0F + f1), 0.0D); + tessellator.addVertexWithUV(0.0D, (double)k, (double)this.zLevel, (double)(0.0F + f1), 0.0D); + } + + tessellator.draw(); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glColorMask(true, true, true, true); + } + + private void renderSkybox(int p_73971_1_, int p_73971_2_, float p_73971_3_) + { + this.mc.getFramebuffer().unbindFramebuffer(); + GL11.glViewport(0, 0, 256, 256); + this.drawPanorama(p_73971_1_, p_73971_2_, p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.rotateAndBlurSkybox(p_73971_3_); + this.mc.getFramebuffer().bindFramebuffer(true); + GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + float f1 = this.width > this.height ? 120.0F / (float)this.width : 120.0F / (float)this.height; + float f2 = (float)this.height * f1 / 256.0F; + float f3 = (float)this.width * f1 / 256.0F; + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); + int k = this.width; + int l = this.height; + tessellator.addVertexWithUV(0.0D, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F + f3)); + tessellator.addVertexWithUV((double)k, (double)l, (double)this.zLevel, (double)(0.5F - f2), (double)(0.5F - f3)); + tessellator.addVertexWithUV((double)k, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F - f3)); + tessellator.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(0.5F + f2), (double)(0.5F + f3)); + tessellator.draw(); + } + + @Override + public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) + { + GL11.glDisable(GL11.GL_ALPHA_TEST); + this.renderSkybox(p_73863_1_, p_73863_2_, p_73863_3_); + GL11.glEnable(GL11.GL_ALPHA_TEST); + Tessellator tessellator = Tessellator.instance; + short short1 = 274; + int k = this.width / 2 - short1 / 2; + byte b0 = 30; + this.drawGradientRect(0, 0, this.width, this.height, -2130706433, 16777215); + this.drawGradientRect(0, 0, this.width, this.height, 0, Integer.MIN_VALUE); + this.mc.getTextureManager().bindTexture(aetherTitleTextures); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + this.drawTexturedModalRect(-30, 15, 0, 0, 155, 44); + this.drawTexturedModalRect(-30 + 155, 15, 0, 45, 155, 44); + + tessellator.setColorOpaque_I(-1); + GL11.glPushMatrix(); + GL11.glTranslatef(200.0F, 55.0F, 0.0F); + GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); + float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F); + f1 = f1 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32); + GL11.glScalef(f1, f1, f1); + this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256); + GL11.glPopMatrix(); + String s = "Minecraft 1.7.10"; + + if (this.mc.isDemo()) + { + s = s + " Demo"; + } + + List brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(true)); + for (int i = 0; i < brandings.size(); i++) + { + String brd = brandings.get(i); + if (!Strings.isNullOrEmpty(brd)) + { + this.drawString(this.fontRendererObj, brd, this.width - this.fontRendererObj.getStringWidth(brd) - 2, this.height - (30 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215); + } + } + ForgeHooksClient.renderMainMenu(this, fontRendererObj, width, height); + String s1 = "Copyright Mojang AB. Do not distribute!"; + this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, -1); + + if (this.field_92025_p != null && this.field_92025_p.length() > 0) + { + drawRect(this.field_92022_t - 2, this.field_92021_u - 2, this.field_92020_v + 2, this.field_92019_w - 1, 1428160512); + this.drawString(this.fontRendererObj, this.field_92025_p, this.field_92022_t, this.field_92021_u, -1); + this.drawString(this.fontRendererObj, this.field_146972_A, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1); + } + + for (int j = 0; j < this.buttonList.size(); ++j) + { + ((GuiButton)this.buttonList.get(j)).drawButton(this.mc, p_73863_1_, p_73863_2_); + } + + for (int j = 0; j < this.labelList.size(); ++j) + { + ((GuiLabel)this.labelList.get(j)).func_146159_a(this.mc, p_73863_1_, p_73863_2_); + } + } + + @Override + protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) + { + if (p_73864_3_ == 0) + { + for (int l = 0; l < this.buttonList.size(); ++l) + { + GuiButton guibutton = (GuiButton)this.buttonList.get(l); + + if (guibutton.mousePressed(this.mc, p_73864_1_, p_73864_2_)) + { + GuiScreenEvent.ActionPerformedEvent.Pre event = new GuiScreenEvent.ActionPerformedEvent.Pre(this, guibutton, this.buttonList); + if (MinecraftForge.EVENT_BUS.post(event)) + break; + this.selectedButton = event.button; + event.button.func_146113_a(this.mc.getSoundHandler()); + this.actionPerformed(event.button); + if (this.equals(this.mc.currentScreen)) + MinecraftForge.EVENT_BUS.post(new GuiScreenEvent.ActionPerformedEvent.Post(this, event.button, this.buttonList)); + } + } + } + + Object object = this.field_104025_t; + + synchronized (this.field_104025_t) + { + if (this.field_92025_p.length() > 0 && p_73864_1_ >= this.field_92022_t && p_73864_1_ <= this.field_92020_v && p_73864_2_ >= this.field_92021_u && p_73864_2_ <= this.field_92019_w) + { + GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.field_104024_v, 13, true); + guiconfirmopenlink.func_146358_g(); + this.mc.displayGuiScreen(guiconfirmopenlink); + } + } + } + + @Override + protected void mouseMovedOrUp(int p_146286_1_, int p_146286_2_, int p_146286_3_) + { + if (this.selectedButton != null && p_146286_3_ == 0) + { + this.selectedButton.mouseReleased(p_146286_1_, p_146286_2_); + this.selectedButton = null; + } + } +} diff --git a/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenuButton.java b/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenuButton.java new file mode 100644 index 0000000..7faaf34 --- /dev/null +++ b/src/main/java/com/legacy/aether/client/gui/menu/AetherMainMenuButton.java @@ -0,0 +1,60 @@ +package com.legacy.aether.client.gui.menu; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; + +public class AetherMainMenuButton extends GuiButton +{ + protected static final ResourceLocation buttonTextures = new ResourceLocation("aether_legacy", "textures/gui/menu/buttons.png"); + private int textOffset; + + public AetherMainMenuButton(int buttonId, int x, int y, String buttonText) + { + this(buttonId, x, y, 200, 20, 39, buttonText); + } + + public AetherMainMenuButton(int buttonId, int x, int y, int widthIn, int heightIn, int textOffset, String buttonText) + { + super(buttonId, x, y, widthIn, heightIn, buttonText); + this.textOffset = textOffset; + } + + @Override + public void drawButton(Minecraft p_146112_1_, int p_146112_2_, int p_146112_3_) + { + if (this.visible) + { + FontRenderer fontrenderer = p_146112_1_.fontRenderer; + p_146112_1_.getTextureManager().bindTexture(buttonTextures); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.field_146123_n = p_146112_2_ >= this.xPosition && p_146112_3_ >= this.yPosition && p_146112_2_ < this.xPosition + this.width && p_146112_3_ < this.yPosition + this.height; + int k = this.getHoverState(this.field_146123_n); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, 46 + k * 20, this.width / 2, this.height); + this.drawTexturedModalRect(this.xPosition + this.width / 2, this.yPosition, 200 - this.width / 2, 46 + k * 20, this.width / 2, this.height); + this.mouseDragged(p_146112_1_, p_146112_2_, p_146112_3_); + int l = 14737632; + + if (packedFGColour != 0) + { + l = packedFGColour; + } + else if (!this.enabled) + { + l = 10526880; + } + else if (this.field_146123_n) + { + l = 7851212; + } + + this.drawCenteredString(fontrenderer, this.displayString, this.xPosition + (this.width / 2) - this.textOffset, this.yPosition + (this.height - 8) / 2, l); + } + } +} diff --git a/src/main/java/com/legacy/aether/client/gui/menu/GuiMenuToggleButton.java b/src/main/java/com/legacy/aether/client/gui/menu/GuiMenuToggleButton.java new file mode 100644 index 0000000..0c8ff9f --- /dev/null +++ b/src/main/java/com/legacy/aether/client/gui/menu/GuiMenuToggleButton.java @@ -0,0 +1,57 @@ +package com.legacy.aether.client.gui.menu; + +import com.legacy.aether.Aether; +import com.legacy.aether.AetherConfig; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiButton; + +public class GuiMenuToggleButton extends GuiButton +{ + public GuiMenuToggleButton(int xPos, int yPos) + { + super(50, xPos, yPos, 20, 20, "T"); + } + + public void drawButton(Minecraft mc, int mouseX, int mouseY) + { + super.drawButton(mc, mouseX, mouseY); + + if (this.visible) + { + FontRenderer fontrenderer = mc.fontRenderer; + int j = 16777215; + + if (this.field_146123_n) + { + if (AetherConfig.config.get("Misc", "Enables the Aether Menu", false).getBoolean()) + { + this.drawCenteredString(fontrenderer, "Normal Theme", (this.xPosition + this.width) - 34, (this.height / 2) + 18, j); + } + else + { + this.drawCenteredString(fontrenderer, "Aether Theme", (this.xPosition + this.width) - 34, (this.height / 2) + 18, j); + } + } + } + } + + public GuiMenuToggleButton setPosition(int x, int y) + { + this.xPosition = x; + this.yPosition = y; + + return this; + } + + public void mouseReleased(int mouseX, int mouseY) + { + AetherConfig.config.get("Misc", "Enables the Aether Menu", false).set(!AetherConfig.config.get("Misc", "Enables the Aether Menu", false).getBoolean()); + AetherConfig.config.save(); + + if (AetherConfig.config.get("Misc", "Enables the Aether Menu", false).getBoolean()) + { + Minecraft.getMinecraft().displayGuiScreen(new AetherMainMenu()); + } + } +} diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/aether.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/aether.png new file mode 100644 index 0000000..54372a3 Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/aether.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/buttons.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/buttons.png new file mode 100644 index 0000000..e42afc3 Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/buttons.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_0.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_0.png new file mode 100644 index 0000000..889f1eb Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_0.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_1.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_1.png new file mode 100644 index 0000000..47068c9 Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_1.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_2.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_2.png new file mode 100644 index 0000000..3c28dcc Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_2.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_3.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_3.png new file mode 100644 index 0000000..517c818 Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_3.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_4.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_4.png new file mode 100644 index 0000000..319e27a Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_4.png differ diff --git a/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_5.png b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_5.png new file mode 100644 index 0000000..8881f52 Binary files /dev/null and b/src/main/resources/assets/aether_legacy/textures/gui/menu/panorama/panorama_5.png differ