• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu GuiMainMenu custom 1.8

    1.8.x
    1.8
    4
    18
    5243
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • M
      MyStaiR dernière édition par

      Version : 1.8
      *Code : *

      package fr.mineria.pichot;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.GuiMainMenu;
      import net.minecraftforge.fml.client.FMLClientHandler;
      import net.minecraftforge.fml.common.FMLCommonHandler;
      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.eventhandler.SubscribeEvent;
      import net.minecraftforge.fml.common.gameevent.TickEvent;
      import net.minecraftforge.fml.relauncher.Side;
      import net.minecraftforge.fml.relauncher.SideOnly;
      
      @Mod(modid = "custommenu", name = "CMenu", version = "1.1.0")
      public class Main
      {
          @EventHandler
          public void init(FMLInitializationEvent event)
          {
              if(event.getSide().isClient())
              {
                  FMLCommonHandler.instance().bus().register(this);
              }
          }
      
          @SubscribeEvent
          @SideOnly(Side.CLIENT)
          public void onTick(TickEvent.ClientTickEvent event)
          {
              Minecraft mc = FMLClientHandler.instance().getClient();
              if(mc.currentScreen != null && mc.currentScreen.getClass().equals(GuiMainMenu.class))
              {
                  mc.displayGuiScreen(new GuiMenu());
              }
          }
      }
      
      package fr.mineria.pichot;
      
      import com.google.common.collect.Lists;
      
      import java.io.BufferedReader;
      import java.io.IOException;
      import java.io.InputStreamReader;
      import java.net.URI;
      import java.util.ArrayList;
      import java.util.Calendar;
      import java.util.Date;
      import java.util.Random;
      import java.util.concurrent.atomic.AtomicInteger;
      
      import net.minecraft.client.Minecraft;
      import net.minecraft.client.gui.GuiButton;
      import net.minecraft.client.gui.GuiButtonLanguage;
      import net.minecraft.client.gui.GuiConfirmOpenLink;
      import net.minecraft.client.gui.GuiLanguage;
      import net.minecraft.client.gui.GuiMultiplayer;
      import net.minecraft.client.gui.GuiOptions;
      import net.minecraft.client.gui.GuiScreen;
      import net.minecraft.client.gui.GuiSelectWorld;
      import net.minecraft.client.gui.GuiYesNo;
      import net.minecraft.client.gui.GuiYesNoCallback;
      import net.minecraft.client.renderer.GlStateManager;
      import net.minecraft.client.renderer.OpenGlHelper;
      import net.minecraft.client.renderer.Tessellator;
      import net.minecraft.client.renderer.WorldRenderer;
      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 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;
      
      public class GuiMenu extends GuiScreen implements GuiYesNoCallback
      {
          private static final AtomicInteger field_175373_f = new AtomicInteger(0);
          private static final Logger logger = LogManager.getLogger();
          private static final Random field_175374_h = new Random();
      
          /** Counts the number of screen updates. */
          private float updateCounter;
      
          /** The splash message. */
          private String splashText;
          private GuiButton buttonResetDemo;
      
          /** Timer used to rotate the panorama, increases every tick. */
          private int panoramaTimer;
      
          /**
           * Texture allocated for the current viewport of the main menu's panorama background.
           */
          private DynamicTexture viewportTexture;
          private boolean field_175375_v = true;
          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 minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png");
      
          /** An array of all the paths to the panorama pictures. */
          private static final ResourceLocation[] titlePanoramaPaths = new ResourceLocation[] {new ResourceLocation("textures/gui/title/background/panorama_0.png"), new ResourceLocation("textures/gui/title/background/panorama_1.png"), new ResourceLocation("textures/gui/title/background/panorama_2.png"), new ResourceLocation("textures/gui/title/background/panorama_3.png"), new ResourceLocation("textures/gui/title/background/panorama_4.png"), new ResourceLocation("textures/gui/title/background/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 field_175372_K;
          private static final String __OBFID = "CL_00001154";
      
          public GuiMenu()
          {
              this.field_146972_A = field_96138_a;
              this.splashText = "missingno";
              BufferedReader var1 = null;
      
              try
              {
                  ArrayList var2 = Lists.newArrayList();
                  var1 = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8));
                  String var3;
      
                  while ((var3 = var1.readLine()) != null)
                  {
                      var3 = var3.trim();
      
                      if (!var3.isEmpty())
                      {
                          var2.add(var3);
                      }
                  }
      
                  if (!var2.isEmpty())
                  {
                      do
                      {
                          this.splashText = (String)var2.get(field_175374_h.nextInt(var2.size()));
                      }
                      while (this.splashText.hashCode() == 125780783);
                  }
              }
              catch (IOException var12)
              {
                  ;
              }
              finally
              {
                  if (var1 != null)
                  {
                      try
                      {
                          var1.close();
                      }
                      catch (IOException var11)
                      {
                          ;
                      }
                  }
              }
      
              this.updateCounter = field_175374_h.nextFloat();
              this.field_92025_p = "";
      
              if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.areShadersSupported())
              {
                  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";
              }
          }
      
          /**
           * Called from the main game loop to update the screen.
           */
          public void updateScreen()
          {
              ++this.panoramaTimer;
          }
      
          /**
           * Returns true if this GUI should pause the game when it is displayed in single-player
           */
          public boolean doesGuiPauseGame()
          {
              return false;
          }
      
          /**
           * Fired when a key is typed (except F11 who toggle full screen). This is the equivalent of
           * KeyListener.keyTyped(KeyEvent e). Args : character (character on the key), keyCode (lwjgl Keyboard key code)
           */
          protected void keyTyped(char typedChar, int keyCode) throws IOException {}
      
          /**
           * Adds the buttons (and other controls) to the screen in question.
           */
          public void initGui()
          {
              this.viewportTexture = new DynamicTexture(256, 256);
              this.field_110351_G = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture);
              Calendar var1 = Calendar.getInstance();
              var1.setTime(new Date());
      
              if (var1.get(2) + 1 == 11 && var1.get(5) == 9)
              {
                  this.splashText = "Happy birthday, ez!";
              }
              else if (var1.get(2) + 1 == 6 && var1.get(5) == 1)
              {
                  this.splashText = "Happy birthday, Notch!";
              }
              else if (var1.get(2) + 1 == 12 && var1.get(5) == 24)
              {
                  this.splashText = "Merry X-mas!";
              }
              else if (var1.get(2) + 1 == 1 && var1.get(5) == 1)
              {
                  this.splashText = "Happy new year!";
              }
              else if (var1.get(2) + 1 == 10 && var1.get(5) == 31)
              {
                  this.splashText = "OOoooOOOoooo! Spooky!";
              }
      
              boolean var2 = true;
              int var3 = this.height / 4 + 48;
      
              if (this.mc.isDemo())
              {
                  this.addDemoButtons(var3, 24);
              }
              else
              {
                  this.addSingleplayerMultiplayerButtons(var3, 24);
              }
      
              this.buttonList.add(new GuiButton(0, this.width / 2 - 100, var3 + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
              this.buttonList.add(new GuiButton(4, this.width / 2 + 2, var3 + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
              this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, var3 + 72 + 12));
              Object var4 = 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 var5 = Math.max(this.field_92023_s, this.field_92024_r);
                  this.field_92022_t = (this.width - var5) / 2;
                  this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24;
                  this.field_92020_v = this.field_92022_t + var5;
                  this.field_92019_w = this.field_92021_u + 24;
              }
          }
      
          /**
           * Adds Singleplayer and Multiplayer buttons on Main Menu for players who have bought the game.
           */
          private void addSingleplayerMultiplayerButtons(int p_73969_1_, int p_73969_2_)
          {
              this.buttonList.add(new GuiButton(1, this.width / 2 - 100, p_73969_1_, I18n.format("menu.singleplayer", new Object[0])));
              this.buttonList.add(new GuiButton(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, I18n.format("menu.multiplayer", new Object[0])));
              this.buttonList.add(this.field_175372_K = new GuiButton(14, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("menu.online", new Object[0])));
          }
      
          /**
           * Adds Demo buttons on Main Menu for players who are playing Demo.
           */
          private void addDemoButtons(int p_73972_1_, int p_73972_2_)
          {
              this.buttonList.add(new GuiButton(11, this.width / 2 - 100, p_73972_1_, I18n.format("menu.playdemo", new Object[0])));
              this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, p_73972_1_ + p_73972_2_ * 1, I18n.format("menu.resetdemo", new Object[0])));
              ISaveFormat var3 = this.mc.getSaveLoader();
              WorldInfo var4 = var3.getWorldInfo("Demo_World");
      
              if (var4 == null)
              {
                  this.buttonResetDemo.enabled = false;
              }
          }
      
          protected void actionPerformed(GuiButton button) throws IOException
          {
              if (button.id == 0)
              {
                  this.mc.displayGuiScreen(new GuiOptions(this, this.mc.gameSettings));
              }
      
              if (button.id == 5)
              {
                  this.mc.displayGuiScreen(new GuiLanguage(this, this.mc.gameSettings, this.mc.getLanguageManager()));
              }
      
              if (button.id == 1)
              {
                  this.mc.displayGuiScreen(new GuiSelectWorld(this));
              }
      
              if (button.id == 2)
              {
                  this.mc.displayGuiScreen(new GuiMultiplayer(this));
              }
      
              if (button.id == 14 && this.field_175372_K.visible)
              {
                  this.switchToRealms();
              }
      
              if (button.id == 4)
              {
                  this.mc.shutdown();
              }
      
              if (button.id == 11)
              {
                  this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings);
              }
      
              if (button.id == 12)
              {
                  ISaveFormat var2 = this.mc.getSaveLoader();
                  WorldInfo var3 = var2.getWorldInfo("Demo_World");
      
                  if (var3 != null)
                  {
                      GuiYesNo var4 = GuiSelectWorld.func_152129_a(this, var3.getWorldName(), 12);
                      this.mc.displayGuiScreen(var4);
                  }
              }
          }
      
          private void switchToRealms()
          {
              RealmsBridge var1 = new RealmsBridge();
              var1.switchToRealms(this);
          }
      
          public void confirmClicked(boolean result, int id)
          {
              if (result && id == 12)
              {
                  ISaveFormat var6 = this.mc.getSaveLoader();
                  var6.flushCache();
                  var6.deleteWorldDirectory("Demo_World");
                  this.mc.displayGuiScreen(this);
              }
              else if (id == 13)
              {
                  if (result)
                  {
                      try
                      {
                          Class var3 = Class.forName("java.awt.Desktop");
                          Object var4 = var3.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
                          var3.getMethod("browse", new Class[] {URI.class}).invoke(var4, new Object[] {new URI(this.field_104024_v)});
                      }
                      catch (Throwable var5)
                      {
                          logger.error("Couldn\'t open link", var5);
                      }
                  }
      
                  this.mc.displayGuiScreen(this);
              }
          }
      
          /**
           * Draws the main menu panorama
           */
          private void drawPanorama(int p_73970_1_, int p_73970_2_, float p_73970_3_)
          {
              Tessellator var4 = Tessellator.getInstance();
              WorldRenderer var5 = var4.getWorldRenderer();
              GlStateManager.matrixMode(5889);
              GlStateManager.pushMatrix();
              GlStateManager.loadIdentity();
              Project.gluPerspective(120.0F, 1.0F, 0.05F, 10.0F);
              GlStateManager.matrixMode(5888);
              GlStateManager.pushMatrix();
              GlStateManager.loadIdentity();
              GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
              GlStateManager.rotate(180.0F, 1.0F, 0.0F, 0.0F);
              GlStateManager.rotate(90.0F, 0.0F, 0.0F, 1.0F);
              GlStateManager.enableBlend();
              GlStateManager.disableAlpha();
              GlStateManager.disableCull();
              GlStateManager.depthMask(false);
              GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
              byte var6 = 8;
      
              for (int var7 = 0; var7 < var6 * var6; ++var7)
              {
                  GlStateManager.pushMatrix();
                  float var8 = ((float)(var7 % var6) / (float)var6 - 0.5F) / 64.0F;
                  float var9 = ((float)(var7 / var6) / (float)var6 - 0.5F) / 64.0F;
                  float var10 = 0.0F;
                  GlStateManager.translate(var8, var9, var10);
                  GlStateManager.rotate(MathHelper.sin(((float)this.panoramaTimer + p_73970_3_) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F);
                  GlStateManager.rotate(-((float)this.panoramaTimer + p_73970_3_) * 0.1F, 0.0F, 1.0F, 0.0F);
      
                  for (int var11 = 0; var11 < 6; ++var11)
                  {
                      GlStateManager.pushMatrix();
      
                      if (var11 == 1)
                      {
                          GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
                      }
      
                      if (var11 == 2)
                      {
                          GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F);
                      }
      
                      if (var11 == 3)
                      {
                          GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F);
                      }
      
                      if (var11 == 4)
                      {
                          GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
                      }
      
                      if (var11 == 5)
                      {
                          GlStateManager.rotate(-90.0F, 1.0F, 0.0F, 0.0F);
                      }
      
                      this.mc.getTextureManager().bindTexture(titlePanoramaPaths[var11]);
                      var5.startDrawingQuads();
                      var5.setColorRGBA_I(16777215, 255 / (var7 + 1));
                      float var12 = 0.0F;
                      var5.addVertexWithUV(-1.0D, -1.0D, 1.0D, (double)(0.0F + var12), (double)(0.0F + var12));
                      var5.addVertexWithUV(1.0D, -1.0D, 1.0D, (double)(1.0F - var12), (double)(0.0F + var12));
                      var5.addVertexWithUV(1.0D, 1.0D, 1.0D, (double)(1.0F - var12), (double)(1.0F - var12));
                      var5.addVertexWithUV(-1.0D, 1.0D, 1.0D, (double)(0.0F + var12), (double)(1.0F - var12));
                      var4.draw();
                      GlStateManager.popMatrix();
                  }
      
                  GlStateManager.popMatrix();
                  GlStateManager.colorMask(true, true, true, false);
              }
      
              var5.setTranslation(0.0D, 0.0D, 0.0D);
              GlStateManager.colorMask(true, true, true, true);
              GlStateManager.matrixMode(5889);
              GlStateManager.popMatrix();
              GlStateManager.matrixMode(5888);
              GlStateManager.popMatrix();
              GlStateManager.depthMask(true);
              GlStateManager.enableCull();
              GlStateManager.enableDepth();
          }
      
          /**
           * Rotate and blurs the skybox view in the main menu
           */
          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);
              GlStateManager.enableBlend();
              GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0);
              GlStateManager.colorMask(true, true, true, false);
              Tessellator var2 = Tessellator.getInstance();
              WorldRenderer var3 = var2.getWorldRenderer();
              var3.startDrawingQuads();
              GlStateManager.disableAlpha();
              byte var4 = 3;
      
              for (int var5 = 0; var5 < var4; ++var5)
              {
                  var3.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F / (float)(var5 + 1));
                  int var6 = this.width;
                  int var7 = this.height;
                  float var8 = (float)(var5 - var4 / 2) / 256.0F;
                  var3.addVertexWithUV((double)var6, (double)var7, (double)this.zLevel, (double)(0.0F + var8), 1.0D);
                  var3.addVertexWithUV((double)var6, 0.0D, (double)this.zLevel, (double)(1.0F + var8), 1.0D);
                  var3.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(1.0F + var8), 0.0D);
                  var3.addVertexWithUV(0.0D, (double)var7, (double)this.zLevel, (double)(0.0F + var8), 0.0D);
              }
      
              var2.draw();
              GlStateManager.enableAlpha();
              GlStateManager.colorMask(true, true, true, true);
          }
      
          /**
           * Renders the skybox in the main menu
           */
          private void renderSkybox(int p_73971_1_, int p_73971_2_, float p_73971_3_)
          {
              this.mc.getFramebuffer().unbindFramebuffer();
              GlStateManager.viewport(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);
              GlStateManager.viewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
              Tessellator var4 = Tessellator.getInstance();
              WorldRenderer var5 = var4.getWorldRenderer();
              var5.startDrawingQuads();
              float var6 = this.width > this.height ? 120.0F / (float)this.width : 120.0F / (float)this.height;
              float var7 = (float)this.height * var6 / 256.0F;
              float var8 = (float)this.width * var6 / 256.0F;
              var5.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
              int var9 = this.width;
              int var10 = this.height;
              var5.addVertexWithUV(0.0D, (double)var10, (double)this.zLevel, (double)(0.5F - var7), (double)(0.5F + var8));
              var5.addVertexWithUV((double)var9, (double)var10, (double)this.zLevel, (double)(0.5F - var7), (double)(0.5F - var8));
              var5.addVertexWithUV((double)var9, 0.0D, (double)this.zLevel, (double)(0.5F + var7), (double)(0.5F - var8));
              var5.addVertexWithUV(0.0D, 0.0D, (double)this.zLevel, (double)(0.5F + var7), (double)(0.5F + var8));
              var4.draw();
          }
      
          /**
           * Draws the screen and all the components in it. Args : mouseX, mouseY, renderPartialTicks
           */
          public void drawScreen(int mouseX, int mouseY, float partialTicks)
          {
              GlStateManager.disableAlpha();
              this.renderSkybox(mouseX, mouseY, partialTicks);
              GlStateManager.enableAlpha();
              Tessellator var4 = Tessellator.getInstance();
              WorldRenderer var5 = var4.getWorldRenderer();
              short var6 = 274;
              int var7 = this.width / 2 - var6 / 2;
              byte var8 = 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(minecraftTitleTextures);
              GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
      
              if ((double)this.updateCounter < 1.0E-4D)
              {
                  this.drawTexturedModalRect(var7 + 0, var8 + 0, 0, 0, 99, 44);
                  this.drawTexturedModalRect(var7 + 99, var8 + 0, 129, 0, 27, 44);
                  this.drawTexturedModalRect(var7 + 99 + 26, var8 + 0, 126, 0, 3, 44);
                  this.drawTexturedModalRect(var7 + 99 + 26 + 3, var8 + 0, 99, 0, 26, 44);
                  this.drawTexturedModalRect(var7 + 155, var8 + 0, 0, 45, 155, 44);
              }
              else
              {
                  this.drawTexturedModalRect(var7 + 0, var8 + 0, 0, 0, 155, 44);
                  this.drawTexturedModalRect(var7 + 155, var8 + 0, 0, 45, 155, 44);
              }
      
              var5.setColorOpaque_I(-1);
              GlStateManager.pushMatrix();
              GlStateManager.translate((float)(this.width / 2 + 90), 70.0F, 0.0F);
              GlStateManager.rotate(-20.0F, 0.0F, 0.0F, 1.0F);
              float var9 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F);
              var9 = var9 * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32);
              GlStateManager.scale(var9, var9, var9);
              this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256);
              GlStateManager.popMatrix();
              String var10 = "Minecraft 1.8";
      
              if (this.mc.isDemo())
              {
                  var10 = var10 + " Demo";
              }
      
              this.drawString(this.fontRendererObj, var10, 2, this.height - 10, -1);
              String var11 = "Copyright Mojang AB. Do not distribute!";
              this.drawString(this.fontRendererObj, var11, this.width - this.fontRendererObj.getStringWidth(var11) - 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);
              }
      
              super.drawScreen(mouseX, mouseY, partialTicks);
          }
      
          /**
           * Called when the mouse is clicked. Args : mouseX, mouseY, clickedButton
           */
          protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException
          {
              super.mouseClicked(mouseX, mouseY, mouseButton);
              Object var4 = this.field_104025_t;
      
              synchronized (this.field_104025_t)
              {
                  if (this.field_92025_p.length() > 0 && mouseX >= this.field_92022_t && mouseX <= this.field_92020_v && mouseY >= this.field_92021_u && mouseY <= this.field_92019_w)
                  {
                      GuiConfirmOpenLink var5 = new GuiConfirmOpenLink(this, this.field_104024_v, 13, true);
                      var5.disableSecurityWarning();
                      this.mc.displayGuiScreen(var5);
                  }
              }
          }
      }
      

      Erreur lors du lancement :

      –-- Minecraft Crash Report ----
      // Oh - I know what I did wrong!
      
      Time: 18/06/15 13:53
      Description: Unexpected error
      
      java.lang.NoSuchFieldError: currentScreen
      at fr.mineria.pichot.MineriaMain.onTick(MineriaMain.java:32)
      at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_6_MineriaMain_onTick_ClientTickEvent.invoke(.dynamic)
      at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:55)
      at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:138)
      at net.minecraftforge.fml.common.FMLCommonHandler.onPreClientTick(FMLCommonHandler.java:366)
      at net.minecraft.client.Minecraft.func_71407_l(Minecraft.java:1617)
      at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1028)
      at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:345)
      at net.minecraft.client.main.Main.main(SourceFile:120)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:483)
      at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
      at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
      
      A detailed walkthrough of the error, its code path and all known details is as follows:
      ---------------------------------------------------------------------------------------
      
      -- System Details --
      Details:
      Minecraft Version: 1.8
      Operating System: Windows 7 (amd64) version 6.1
      Java Version: 1.8.0_25, Oracle Corporation
      Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
      Memory: 56250448 bytes (53 MB) / 423710720 bytes (404 MB) up to 3207856128 bytes (3059 MB)
      JVM Flags: 6 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xmx3G -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:-UseAdaptiveSizePolicy -Xmn128M
      IntCache: cache: 0, tcache: 0, allocated: 0, tallocated: 0
      FML: MCP v9.10 FML v8.0.99.99 Minecraft Forge 11.14.3.1446 4 mods loaded, 4 mods active
      mcp{9.05} [Minecraft Coder Pack] (minecraft.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
      FML{8.0.99.99} [Forge Mod Loader] (forge-1.8-11.14.3.1446.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
      Forge{11.14.3.1446} [Minecraft Forge] (forge-1.8-11.14.3.1446.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
      mineriamenu{1.1.0} [Mineria Menu] (MineriaMenu.jar) Unloaded->Constructed->Pre-initialized->Initialized->Post-initialized->Available
      Loaded coremods (and transformers):
      GL info: ' Vendor: 'ATI Technologies Inc.' Version: '4.4.13283 Compatibility Profile Context 14.501.1003.0' Renderer: 'AMD Radeon R9 200 Series'
      Launched Version: 1.8-Forge11.14.3.1446
      LWJGL: 2.9.1
      OpenGL: AMD Radeon R9 200 Series GL version 4.4.13283 Compatibility Profile Context 14.501.1003.0, ATI Technologies Inc.
      GL Caps: Using GL 1.3 multitexturing.
      Using GL 1.3 texture combiners.
      Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported.
      Shaders are available because OpenGL 2.1 is supported.
      VBOs are available because OpenGL 1.5 is supported.
      
      Using VBOs: No
      Is Modded: Definitely; Client brand changed to 'fml,forge'
      Type: Client (map_client.txt)
      Resource Packs: [#MasterPack V4.zip]
      Current Language: English (US)
      Profiler Position: N/A (disabled)
      
      1 réponse Dernière réponse Répondre Citer 0
      • isador
        isador Moddeurs confirmés Modérateurs dernière édition par

        il trouve pas le field currentScreen

        1 réponse Dernière réponse Répondre Citer 0
        • SCAREX
          SCAREX dernière édition par

          Pourquoi tout le monde utilise des tick event pour faire apparaître des Gui ? Il y a un événement pour çà : l’InitGuiEvent avec dedans un Gui, tu regarde si le Gui est instanceof GuiMainMenu et voilà.

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

          1 réponse Dernière réponse Répondre Citer 0
          • M
            MyStaiR dernière édition par

            Pourriez-vous me montrer comment faire ?

            1 réponse Dernière réponse Répondre Citer 0
            • SCAREX
              SCAREX dernière édition par

              Tu l’enregistres avec MinecraftForge.EVENT_BUS.register(new TaClasse()).

              Et tu mets çà dans ta classe par exemple :

              @SubscribeEvent
              public void onInitGuiEvent(final InitGuiEvent.Post event) {
              ST18.log.debug("initGuiEvent called");
              if (event.gui instanceof GuiMainMenu) {
              event.buttonList.add(new GuiButton(22, event.gui.width / 2 + 108, event.gui.height / 4 + 132, 64, 32, "") {
              protected final ResourceLocation buttonTexture = new ResourceLocation(ST18.MODID, "textures/gui/boutique.png");
              
              @Override
              public void drawButton(Minecraft mc, int mouseX, int mouseY) {
              if (this.visible) {
              mc.getTextureManager().bindTexture(buttonTexture);
              GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
              boolean flag = mouseX >= this.xPosition && mouseY >= this.yPosition && mouseX < this.xPosition + this.width && mouseY < this.yPosition + this.height;
              int k = 0;
              if (flag) k += this.height;
              
              this.drawTexturedModalRect(this.xPosition, this.yPosition, 0, k, this.width, this.height);
              }
              }
              });
              }
              }
              

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

              1 réponse Dernière réponse Répondre Citer 0
              • M
                MyStaiR dernière édition par

                ST18 je trouve pas

                1 réponse Dernière réponse Répondre Citer 0
                • SCAREX
                  SCAREX dernière édition par

                  ST18 c’est le nom de mon mod et le nom de ma classe principale, le code que je t’ai donné viens de ce mod. Il vaut mieux comprendre ce que fait le code avant de le copier.

                  Site web contenant mes scripts : http://SCAREXgaming.github.io

                  Pas de demandes de support par MP ni par skype SVP.
                  Je n'accepte sur skype que l…

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    @SCAREX, si il veut changer tout le gui le code de remplacement reste mieux.

                    @MyStaiR je suppose que tu ne rencontre pas ce problème lorsque tu test sur eclipse mais uniquement lorsque tu lances le jeu une fois le mod installé, non ?
                    Si oui, tu as mal exporté le mod, il ne faut pas utiliser l’option d’eclipse mais faire un gradlew build (de la même manière que pour setup forge) puis récupérer le fichier .jar dans le dossier forge/build/libs/, il est nommé modid-1.0.jar par défaut.

                    1 réponse Dernière réponse Répondre Citer 0
                    • SCAREX
                      SCAREX dernière édition par

                      Je parle juste de l’event, car dans l’InitGuiEvent, il y a une variable contenant le Gui ce qui évite les NPEs.
                      Il suffit juste de faire çà :

                      if (event.gui instanceof GuiMainMenu) {Minecraft.getMinecraft().displayGuiScreen(new TonScreen())}
                      

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        En effet, c’est même plus optimisé que vérifier à chaque tick.

                        1 réponse Dernière réponse Répondre Citer 0
                        • M
                          MyStaiR dernière édition par

                          Désormais je lance plus d’erreurs cependant le Gui ne s’affiche pas.

                          Je débute actuellement en modding forge et j’essaye de comprendre comment tout fonctionne je mod principalement en vanilla ^^

                          1 réponse Dernière réponse Répondre Citer 0
                          • SCAREX
                            SCAREX dernière édition par

                            Le problème est que tu enregistres l’événement avec l’event bus de fml, or il faut celui de forge : MinecraftForge.EVENT_BUS.register(this).

                            Site web contenant mes scripts : http://SCAREXgaming.github.io

                            Pas de demandes de support par MP ni par skype SVP.
                            Je n'accepte sur skype que l…

                            1 réponse Dernière réponse Répondre Citer 0
                            • M
                              MyStaiR dernière édition par

                              J’ai fais je pense comme tu m’as dis qu’ai-je oublié ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • SCAREX
                                SCAREX dernière édition par

                                Apprends à utiliser les événements d’abord. Un EventBus sert à enregistrer une classe, au moment où tu l’enregistres, il récupère toutes les méthodes avec l’annotation @EventHandler (pour forge) ou @SubscribeEvent (pour fml il me semble, à vérifier). Or ici tu enregistres une classe qui n’as pas de méthode avec l’annotation SubscribeEvent.

                                Site web contenant mes scripts : http://SCAREXgaming.github.io

                                Pas de demandes de support par MP ni par skype SVP.
                                Je n'accepte sur skype que l…

                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                  SubscribeEvent pour les event forge et fml.

                                  EventHandler c’est pour les stades d’initialisation du mod.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • M
                                    MyStaiR dernière édition par

                                    Je pige pas x), ce que je dois faire sur la class

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • SCAREX
                                      SCAREX dernière édition par

                                      Utiliser les événements

                                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                                      Pas de demandes de support par MP ni par skype SVP.
                                      Je n'accepte sur skype que l…

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                        Remplacer new GuiMain() par this …

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • 1 / 1
                                        • Premier message
                                          Dernier message
                                        Design by Woryk
                                        Contact / Mentions Légales

                                        MINECRAFT FORGE FRANCE © 2018

                                        Powered by NodeBB