Problème Gui 1.7.2



  • Bonjour je voudrais savoir comment modifier le menu principale, j'ai pris le dossier de robin, mais ça ne marche pas.
    Eclipse m'affiche plusieurs erreurs


  • Administrateurs



  • ou dois-je mettre le
    if(event.getSide().isClient())
    {
    FMLCommonHandler.instance().bus().register(new LaClasseOuSeTrouveVotreEvent());
    } ?

    Excusez moi du dérangement mais je débute



  • dans ta classe main dans le préinit



  • Marche pas 😕
    J'ai mis ça : ```java
    if(event.getSide().isClient())
    {
    FMLCommonHandler.instance().bus().register(new net.metalfight.metalmod.proxy.GuiCustomMainMenu());
    }

    
    et dans GuiCustomMainMenu
    ```java
    package net.minecraft.client.renderer;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import java.nio.ByteBuffer;
    import java.nio.ByteOrder;
    import java.nio.FloatBuffer;
    import java.nio.IntBuffer;
    import java.nio.ShortBuffer;
    import java.util.Arrays;
    import java.util.PriorityQueue;
    import net.minecraft.client.shader.TesselatorVertexState;
    import net.minecraft.client.util.QuadComparator;
    import org.lwjgl.opengl.GL11;
    
    @SideOnly(Side.CLIENT)
    public class Tessellator
    {
    private static int nativeBufferSize = 0x200000;
    private static int trivertsInBuffer = (nativeBufferSize / 48) * 6;
    public static boolean renderingWorldRenderer = false;
    public boolean defaultTexture = false;
    private int rawBufferSize = 0;
    public int textureID = 0;
    
    /** The byte buffer used for GL allocation. */
    private static ByteBuffer byteBuffer = GLAllocation.createDirectByteBuffer(nativeBufferSize * 4);
    /** The same memory as byteBuffer, but referenced as an integer buffer. */
    private static IntBuffer intBuffer = byteBuffer.asIntBuffer();
    /** The same memory as byteBuffer, but referenced as an float buffer. */
    private static FloatBuffer floatBuffer = byteBuffer.asFloatBuffer();
    /** The same memory as byteBuffer, but referenced as an short buffer. */
    private static ShortBuffer shortBuffer = byteBuffer.asShortBuffer();
    /** Raw integer array. */
    private int[] rawBuffer;
    /**
    * The number of vertices to be drawn in the next draw call. Reset to 0 between draw calls.
    */
    private int vertexCount;
    /** The first coordinate to be used for the texture. */
    private double textureU;
    /** The second coordinate to be used for the texture. */
    private double textureV;
    private int brightness;
    /** The color (RGBA) value to be used for the following draw call. */
    private int color;
    /**
    * Whether the current draw object for this tessellator has color values.
    */
    private boolean hasColor;
    /**
    * Whether the current draw object for this tessellator has texture coordinates.
    */
    private boolean hasTexture;
    private boolean hasBrightness;
    /**
    * Whether the current draw object for this tessellator has normal values.
    */
    private boolean hasNormals;
    /** The index into the raw buffer to be used for the next data. */
    private int rawBufferIndex;
    /**
    * The number of vertices manually added to the given draw call. This differs from vertexCount because it adds extra
    * vertices when converting quads to triangles.
    */
    private int addedVertices;
    /** Disables all color information for the following draw call. */
    private boolean isColorDisabled;
    /** The draw mode currently being used by the tessellator. */
    private int drawMode;
    /**
    * An offset to be applied along the x-axis for all vertices in this draw call.
    */
    private double xOffset;
    /**
    * An offset to be applied along the y-axis for all vertices in this draw call.
    */
    private double yOffset;
    /**
    * An offset to be applied along the z-axis for all vertices in this draw call.
    */
    private double zOffset;
    /** The normal to be applied to the face being drawn. */
    private int normal;
    /** The static instance of the Tessellator. */
    public static final Tessellator instance = new Tessellator(2097152);
    /** Whether this tessellator is currently in draw mode. */
    private boolean isDrawing;
    /** The size of the buffers used (in integers). */
    private int bufferSize;
    private static final String __OBFID = "CL_00000960";
    
    private Tessellator(int p_i1250_1_)
    {
    }
    
    public Tessellator()
    {
    }
    
    static
    {
    instance.defaultTexture = true;
    }
    
    /**
    * Draws the data set up in this tessellator and resets the state to prepare for new drawing.
    */
    public int draw()
    {
    if (!this.isDrawing)
    {
    throw new IllegalStateException("Not tesselating!");
    }
    else
    {
    this.isDrawing = false;
    
    int offs = 0;
    while (offs < vertexCount)
    {
    int vtc = Math.min(vertexCount - offs, nativeBufferSize >> 5);
    this.intBuffer.clear();
    this.intBuffer.put(this.rawBuffer, offs * 8, vtc * 8);
    this.byteBuffer.position(0);
    this.byteBuffer.limit(vtc * 32);
    offs += vtc;
    
    if (this.hasTexture)
    {
    this.floatBuffer.position(3);
    GL11.glTexCoordPointer(2, 32, this.floatBuffer);
    GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
    }
    
    if (this.hasBrightness)
    {
    OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
    this.shortBuffer.position(14);
    GL11.glTexCoordPointer(2, 32, this.shortBuffer);
    GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
    OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
    }
    
    if (this.hasColor)
    {
    this.byteBuffer.position(20);
    GL11.glColorPointer(4, true, 32, this.byteBuffer);
    GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
    }
    
    if (this.hasNormals)
    {
    this.byteBuffer.position(24);
    GL11.glNormalPointer(32, this.byteBuffer);
    GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY);
    }
    
    this.floatBuffer.position(0);
    GL11.glVertexPointer(3, 32, this.floatBuffer);
    GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
    GL11.glDrawArrays(this.drawMode, 0, vtc);
    GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
    
    if (this.hasTexture)
    {
    GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
    }
    
    if (this.hasBrightness)
    {
    OpenGlHelper.setClientActiveTexture(OpenGlHelper.lightmapTexUnit);
    GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
    OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
    }
    
    if (this.hasColor)
    {
    GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
    }
    
    if (this.hasNormals)
    {
    GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY);
    }
    }
    
    if (rawBufferSize > 0x20000 && rawBufferIndex < (rawBufferSize << 3))
    {
    rawBufferSize = 0x10000;
    rawBuffer = new int[rawBufferSize];
    }
    
    int i = this.rawBufferIndex * 4;
    this.reset();
    return i;
    }
    }
    
    public TesselatorVertexState getVertexState(float p_147564_1_, float p_147564_2_, float p_147564_3_)
    {
    int[] aint = new int[this.rawBufferIndex];
    PriorityQueue priorityqueue = new PriorityQueue(this.rawBufferIndex, new QuadComparator(this.rawBuffer, p_147564_1_ + (float)this.xOffset, p_147564_2_ + (float)this.yOffset, p_147564_3_ + (float)this.zOffset));
    byte b0 = 32;
    int i;
    
    for (i = 0; i < this.rawBufferIndex; i += b0)
    {
    priorityqueue.add(Integer.valueOf(i));
    }
    
    for (i = 0; !priorityqueue.isEmpty(); i += b0)
    {
    int j = ((Integer)priorityqueue.remove()).intValue();
    
    for (int k = 0; k < b0; ++k)
    {
    aint _= this.rawBuffer[j + k];
    }
    }
    
    System.arraycopy(aint, 0, this.rawBuffer, 0, aint.length);
    return new TesselatorVertexState(aint, this.rawBufferIndex, this.vertexCount, this.hasTexture, this.hasBrightness, this.hasNormals, this.hasColor);
    }
    
    public void setVertexState(TesselatorVertexState p_147565_1_)
    {
    while (p_147565_1_.getRawBuffer().length > rawBufferSize && rawBufferSize > 0)
    {
    rawBufferSize <<= 1;
    }
    if (rawBufferSize > rawBuffer.length)
    {
    rawBuffer = new int[rawBufferSize];
    }
    System.arraycopy(p_147565_1_.getRawBuffer(), 0, this.rawBuffer, 0, p_147565_1_.getRawBuffer().length);
    this.rawBufferIndex = p_147565_1_.getRawBufferIndex();
    this.vertexCount = p_147565_1_.getVertexCount();
    this.hasTexture = p_147565_1_.getHasTexture();
    this.hasBrightness = p_147565_1_.getHasBrightness();
    this.hasColor = p_147565_1_.getHasColor();
    this.hasNormals = p_147565_1_.getHasNormals();
    }
    
    /**
    * Clears the tessellator state in preparation for new drawing.
    */
    private void reset()
    {
    this.vertexCount = 0;
    this.byteBuffer.clear();
    this.rawBufferIndex = 0;
    this.addedVertices = 0;
    }
    
    /**
    * Sets draw mode in the tessellator to draw quads.
    */
    public void startDrawingQuads()
    {
    this.startDrawing(7);
    }
    
    /**
    * Resets tessellator state and prepares for drawing (with the specified draw mode).
    */
    public void startDrawing(int p_78371_1_)
    {
    if (this.isDrawing)
    {
    throw new IllegalStateException("Already tesselating!");
    }
    else
    {
    this.isDrawing = true;
    this.reset();
    this.drawMode = p_78371_1_;
    this.hasNormals = false;
    this.hasColor = false;
    this.hasTexture = false;
    this.hasBrightness = false;
    this.isColorDisabled = false;
    }
    }
    
    /**
    * Sets the texture coordinates.
    */
    public void setTextureUV(double p_78385_1_, double p_78385_3_)
    {
    this.hasTexture = true;
    this.textureU = p_78385_1_;
    this.textureV = p_78385_3_;
    }
    
    public void setBrightness(int p_78380_1_)
    {
    this.hasBrightness = true;
    this.brightness = p_78380_1_;
    }
    
    /**
    * Sets the RGB values as specified, converting from floats between 0 and 1 to integers from 0-255.
    */
    public void setColorOpaque_F(float p_78386_1_, float p_78386_2_, float p_78386_3_)
    {
    this.setColorOpaque((int)(p_78386_1_ * 255.0F), (int)(p_78386_2_ * 255.0F), (int)(p_78386_3_ * 255.0F));
    }
    
    /**
    * Sets the RGBA values for the color, converting from floats between 0 and 1 to integers from 0-255.
    */
    public void setColorRGBA_F(float p_78369_1_, float p_78369_2_, float p_78369_3_, float p_78369_4_)
    {
    this.setColorRGBA((int)(p_78369_1_ * 255.0F), (int)(p_78369_2_ * 255.0F), (int)(p_78369_3_ * 255.0F), (int)(p_78369_4_ * 255.0F));
    }
    
    /**
    * Sets the RGB values as specified, and sets alpha to opaque.
    */
    public void setColorOpaque(int p_78376_1_, int p_78376_2_, int p_78376_3_)
    {
    this.setColorRGBA(p_78376_1_, p_78376_2_, p_78376_3_, 255);
    }
    
    /**
    * Sets the RGBA values for the color. Also clamps them to 0-255.
    */
    public void setColorRGBA(int p_78370_1_, int p_78370_2_, int p_78370_3_, int p_78370_4_)
    {
    if (!this.isColorDisabled)
    {
    if (p_78370_1_ > 255)
    {
    p_78370_1_ = 255;
    }
    
    if (p_78370_2_ > 255)
    {
    p_78370_2_ = 255;
    }
    
    if (p_78370_3_ > 255)
    {
    p_78370_3_ = 255;
    }
    
    if (p_78370_4_ > 255)
    {
    p_78370_4_ = 255;
    }
    
    if (p_78370_1_ < 0)
    {
    p_78370_1_ = 0;
    }
    
    if (p_78370_2_ < 0)
    {
    p_78370_2_ = 0;
    }
    
    if (p_78370_3_ < 0)
    {
    p_78370_3_ = 0;
    }
    
    if (p_78370_4_ < 0)
    {
    p_78370_4_ = 0;
    }
    
    this.hasColor = true;
    
    if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN)
    {
    this.color = p_78370_4_ << 24 | p_78370_3_ << 16 | p_78370_2_ << 8 | p_78370_1_;
    }
    else
    {
    this.color = p_78370_1_ << 24 | p_78370_2_ << 16 | p_78370_3_ << 8 | p_78370_4_;
    }
    }
    }
    
    public void func_154352_a(byte p_154352_1_, byte p_154352_2_, byte p_154352_3_)
    {
    this.setColorOpaque(p_154352_1_ & 255, p_154352_2_ & 255, p_154352_3_ & 255);
    }
    
    /**
    * Adds a vertex specifying both x,y,z and the texture u,v for it.
    */
    public void addVertexWithUV(double p_78374_1_, double p_78374_3_, double p_78374_5_, double p_78374_7_, double p_78374_9_)
    {
    this.setTextureUV(p_78374_7_, p_78374_9_);
    this.addVertex(p_78374_1_, p_78374_3_, p_78374_5_);
    }
    
    /**
    * Adds a vertex with the specified x,y,z to the current draw call. It will trigger a draw() if the buffer gets
    * full.
    */
    public void addVertex(double p_78377_1_, double p_78377_3_, double p_78377_5_)
    {
    if (rawBufferIndex >= rawBufferSize - 32)
    {
    if (rawBufferSize == 0)
    {
    rawBufferSize = 0x10000;
    rawBuffer = new int[rawBufferSize];
    }
    else
    {
    rawBufferSize *= 2;
    rawBuffer = Arrays.copyOf(rawBuffer, rawBufferSize);
    }
    }
    ++this.addedVertices;
    
    if (this.hasTexture)
    {
    this.rawBuffer[this.rawBufferIndex + 3] = Float.floatToRawIntBits((float)this.textureU);
    this.rawBuffer[this.rawBufferIndex + 4] = Float.floatToRawIntBits((float)this.textureV);
    }
    
    if (this.hasBrightness)
    {
    this.rawBuffer[this.rawBufferIndex + 7] = this.brightness;
    }
    
    if (this.hasColor)
    {
    this.rawBuffer[this.rawBufferIndex + 5] = this.color;
    }
    
    if (this.hasNormals)
    {
    this.rawBuffer[this.rawBufferIndex + 6] = this.normal;
    }
    
    this.rawBuffer[this.rawBufferIndex + 0] = Float.floatToRawIntBits((float)(p_78377_1_ + this.xOffset));
    this.rawBuffer[this.rawBufferIndex + 1] = Float.floatToRawIntBits((float)(p_78377_3_ + this.yOffset));
    this.rawBuffer[this.rawBufferIndex + 2] = Float.floatToRawIntBits((float)(p_78377_5_ + this.zOffset));
    this.rawBufferIndex += 8;
    ++this.vertexCount;
    }
    
    /**
    * Sets the color to the given opaque value (stored as byte values packed in an integer).
    */
    public void setColorOpaque_I(int p_78378_1_)
    {
    int j = p_78378_1_ >> 16 & 255;
    int k = p_78378_1_ >> 8 & 255;
    int l = p_78378_1_ & 255;
    this.setColorOpaque(j, k, l);
    }
    
    /**
    * Sets the color to the given color (packed as bytes in integer) and alpha values.
    */
    public void setColorRGBA_I(int p_78384_1_, int p_78384_2_)
    {
    int k = p_78384_1_ >> 16 & 255;
    int l = p_78384_1_ >> 8 & 255;
    int i1 = p_78384_1_ & 255;
    this.setColorRGBA(k, l, i1, p_78384_2_);
    }
    
    /**
    * Disables colors for the current draw call.
    */
    public void disableColor()
    {
    this.isColorDisabled = true;
    }
    
    /**
    * Sets the normal for the current draw call.
    */
    public void setNormal(float p_78375_1_, float p_78375_2_, float p_78375_3_)
    {
    this.hasNormals = true;
    byte b0 = (byte)((int)(p_78375_1_ * 127.0F));
    byte b1 = (byte)((int)(p_78375_2_ * 127.0F));
    byte b2 = (byte)((int)(p_78375_3_ * 127.0F));
    this.normal = b0 & 255 | (b1 & 255) << 8 | (b2 & 255) << 16;
    }
    
    /**
    * Sets the translation for all vertices in the current draw call.
    */
    public void setTranslation(double p_78373_1_, double p_78373_3_, double p_78373_5_)
    {
    this.xOffset = p_78373_1_;
    this.yOffset = p_78373_3_;
    this.zOffset = p_78373_5_;
    }
    
    /**
    * Offsets the translation for all vertices in the current draw call.
    */
    public void addTranslation(float p_78372_1_, float p_78372_2_, float p_78372_3_)
    {
    this.xOffset += (double)p_78372_1_;
    this.yOffset += (double)p_78372_2_;
    this.zOffset += (double)p_78372_3_;
    }
    }
    

    Et il y a plein d'erreur, quelqu'un a le pack customainmenu en 1.7.10 ?_



  • Non, ce n'est pas du tout cette classe. Elle doit se trouver dans "Referenced libraries -> forge -> net.minecraft.client.gui.GuiMainMenu"

    Ensuite vers la ligne 313, c'est là où l'on peut ajouter des boutons. Après tu cherches dans le code pour modifier d'autres choses.
    Sinon il y a mon mod qui te permet de customiser des fonctionnalités sur le menu : http://minecraftforgefrance.fr/showthread.php?tid=1279 (Prends la dernière update)
    Et pour la fonction :

    
    if(event.getSide().isClient())
    {
    FMLCommonHandler.instance().bus().register(new net.metalfight.metalmod.proxy.GuiCustomMainMenu());
    }
    
    

    Ce n'est toujours pas ça, il faut que tu mettes dans le init :

    FMLCommonHandler.instance().bus().register(this);
    

    Et ensuite après le postInit, tu mets cet évenement :

    
    @SubscribeEvent
    @SideOnly (Side.CLIENT)
    public void onTickClient(TickEvent.ClientTickEvent event) {
    if(event.phase == Phase.END) {
    Minecraft mc = Minecraft.getMinecraft();
    GuiScreen currentScreen = mc.currentScreen; // Le gui courant
    CustomMainMenu customMenu = new CustomMainMenu(); // Ta classe de ton menu custom
    if(currentScreen instanceof GuiMainMenu && !currentScreen.equals(customMenu)) { // Si le gui est le menu principal
    mc.displayGuiScreen(customMenu); // Alors tu le change en ton menu perso ;)
    }
    }
    }
    
    


  • Je sais mais on peut pas modifier les codes de forges



  • J'ai édité mon post. Et tu dois copier le contenu de la classe "GuiMainMenu" dans la classe de ton custom main menu et changeant le package et les imports (Ctrl + Shift + o)



  • C'est ce que j'ai fait ça ne marche pas 😕 Ma classe GuiMainMenu :

    package net.metalfight.metalmod.proxy;
    
    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.List;
    import java.util.Random;
    
    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.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 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 com.google.common.base.Strings;
    import com.google.common.collect.Lists;
    
    import cpw.mods.fml.client.GuiModList;
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    @SideOnly(Side.CLIENT)
    public class GuiMainMenu extends GuiScreen implements GuiYesNoCallback
    {
    private static final Logger logger = LogManager.getLogger();
    /** The RNG used by the Main Menu Screen. */
    private static final Random rand = 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 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 static final String __OBFID = "CL_00001154";
    
    public GuiMainMenu()
    {
    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.updateCounter = rand.nextFloat();
    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";
    }
    }
    
    /**
    * 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. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
    */
    protected void keyTyped(char p_73869_1_, int p_73869_2_) {}
    
    /**
    * 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 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;
    
    if (this.mc.isDemo())
    {
    this.addDemoButtons(i, 24);
    }
    else
    {
    this.addSingleplayerMultiplayerButtons(i, 24);
    }
    
    this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
    this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
    this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12));
    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;
    }
    }
    
    /**
    * 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])));
    GuiButton realmsButton = new GuiButton(14, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, I18n.format("menu.online", new Object[0]));
    GuiButton fmlModButton = new GuiButton(6, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, "Test");
    fmlModButton.xPosition = this.width / 2 + 2;
    realmsButton.width = 98;
    fmlModButton.width = 98;
    this.buttonList.add(realmsButton);
    this.buttonList.add(fmlModButton);
    }
    
    /**
    * 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 isaveformat = this.mc.getSaveLoader();
    WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World");
    
    if (worldinfo == null)
    {
    this.buttonResetDemo.enabled = false;
    }
    }
    
    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);
    }
    
    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);
    }
    }
    
    /**
    * Draws the main menu panorama
    */
    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);
    }
    
    /**
    * 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);
    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);
    }
    
    /**
    * 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();
    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();
    }
    
    /**
    * Draws the screen and all the components in it.
    */
    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(minecraftTitleTextures);
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    
    if ((double)this.updateCounter < 1.0E-4D)
    {
    this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 99, 44);
    this.drawTexturedModalRect(k + 99, b0 + 0, 129, 0, 27, 44);
    this.drawTexturedModalRect(k + 99 + 26, b0 + 0, 126, 0, 3, 44);
    this.drawTexturedModalRect(k + 99 + 26 + 3, b0 + 0, 99, 0, 26, 44);
    this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
    }
    else
    {
    this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44);
    this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
    }
    
    tessellator.setColorOpaque_I(-1);
    GL11.glPushMatrix();
    GL11.glTranslatef((float)(this.width / 2 + 90), 70.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 <string>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, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215);
    }
    }
    String s1 = "Test";
    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);
    }
    
    super.drawScreen(p_73863_1_, p_73863_2_, p_73863_3_);
    }
    
    /**
    * Called when the mouse is clicked.
    */
    protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_)
    {
    super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_);
    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);
    }
    }
    }
    }
    ```</string>


  • Renomme la CustomMainMenu, ça permettra de pas confondre avec le menu vanilla. Envoie ta classe principale.



  • En effet je te remercie du fond du coeur, ça a bien marcher, j'ai renommé en CustomGuiMainMenu 🙂 ❤



  • N'oublie pas de mettre le sujet en résolu 🙂