########## GL ERROR ##########



  • Bonsoir,
    Après avoir modifier mon menu principal, j'ai cette érreur qui spam ma console:

    [18:43:01] [Client thread/ERROR]: ########## GL ERROR ##########
    [18:43:01] [Client thread/ERROR]: @ Pre render
    [18:43:01] [Client thread/ERROR]: 1281: Invalid value
    

    J'avais déjà eu cette erreur, le problème venait de mes textures était trop lourde ou trop grande, je les est donc réduite et ça avait réglé mon problème.
    Mais la même quand je réduits ou que carrément je les enlèves j'ai toujours cette erreur qui apparaît et c'est in jouable car mon jeu et rendu en blanc et vert…

    Je viens donc vous rendre visite en espérant que vous allez m'aider à trouver cette erreur!

    Je vous donne au passage mon GuiScreen:

    
    package com.CSC.net.GUI;
    
    import java.awt.Desktop;
    import java.io.BufferedReader;
    import java.io.Closeable;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URI;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    import java.util.Random;
    import java.util.concurrent.atomic.AtomicInteger;
    
    import org.apache.commons.io.Charsets;
    import org.apache.commons.io.IOUtils;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    import org.lwjgl.opengl.GLContext;
    import org.lwjgl.util.glu.Project;
    
    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.GuiMainMenu;
    import net.minecraft.client.gui.GuiMultiplayer;
    import net.minecraft.client.gui.GuiOptions;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.gui.GuiWorldSelection;
    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.VertexBuffer;
    import net.minecraft.client.renderer.texture.DynamicTexture;
    import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
    import net.minecraft.client.resources.I18n;
    import net.minecraft.client.resources.IResource;
    import net.minecraft.client.settings.GameSettings;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.realms.RealmsBridge;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.util.math.MathHelper;
    import net.minecraft.util.text.TextComponentTranslation;
    import net.minecraft.util.text.TextFormatting;
    import net.minecraft.world.demo.DemoWorldServer;
    import net.minecraft.world.storage.ISaveFormat;
    import net.minecraft.world.storage.WorldInfo;
    import net.minecraftforge.fml.client.FMLClientHandler;
    import net.minecraftforge.fml.relauncher.Side;
    import net.minecraftforge.fml.relauncher.SideOnly;
    
    import com.CSC.net.Main;
    import com.google.common.collect.Lists;
    import com.mojang.realmsclient.gui.ChatFormatting;
    
    @SideOnly(Side.CLIENT)
    public class GuiMenuPrincipal extends GuiScreen implements GuiYesNoCallback
    {
        private static final AtomicInteger UNIQUE_THREAD_ID = new AtomicInteger(0);
        private static final Logger LOGGER = LogManager.getLogger();
        private static final Random RANDOM = new Random();
        /** Counts the number of screen updates. */
        private final 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 boolean mcoEnabled = true;
        /** The Object object utilized as a thread lock when performing non thread-safe operations */
        private final Object threadLock = new Object();
        /** OpenGL graphics card warning. */
        private String openGLWarning1;
        /** OpenGL graphics card warning. */
        private String openGLWarning2;
        /** Link to the Mojang Support about minimum requirements */
        private String openGLWarningLink;
        private static final ResourceLocation SPLASH_TEXTS = new ResourceLocation("texts/splashes.txt");
        private static final ResourceLocation MINECRAFT_TITLE_TEXTURES = new ResourceLocation("csc:textures/gui/minecraft.png");
        /** An array of all the paths to the panorama pictures. */
        private static final ResourceLocation[] TITLE_PANORAMA_PATHS = new ResourceLocation[] {new ResourceLocation("csc:textures/gui/panorama_0.png"), new ResourceLocation("csc:textures/gui/panorama_1.png"), new ResourceLocation("csc:textures/gui/panorama_2.png"), new ResourceLocation("csc:textures/gui/panorama_3.png"), new ResourceLocation("csc:textures/gui/panorama_4.png"), new ResourceLocation("csc:textures/gui/panorama_5.png")};
        public static final String MORE_INFO_TEXT = "Please click " + TextFormatting.UNDERLINE + "here" + TextFormatting.RESET + " for more information.";
        /** Width of openGLWarning2 */
        private int openGLWarning2Width;
        /** Width of openGLWarning1 */
        private int openGLWarning1Width;
        /** Left x coordinate of the OpenGL warning */
        private int openGLWarningX1;
        /** Top y coordinate of the OpenGL warning */
        private int openGLWarningY1;
        /** Right x coordinate of the OpenGL warning */
        private int openGLWarningX2;
        /** Bottom y coordinate of the OpenGL warning */
        private int openGLWarningY2;
        private ResourceLocation backgroundTexture;
        /** Minecraft Realms button. */
        private GuiButton realmsButton;
        /** Has the check for a realms notification screen been performed? */
        private boolean hasCheckedForRealmsNotification;
        /**
         * A screen generated by realms for notifications; drawn in adition to the main menu (buttons and such from both are
         * drawn at the same time). May be null.
         */
        private GuiScreen realmsNotification;
        private GuiButton modButton;
        private net.minecraftforge.client.gui.NotificationModUpdateScreen modUpdateNotification;
    
        public GuiMenuPrincipal()
        {
            this.openGLWarning2 = MORE_INFO_TEXT;
            this.splashText = "missingno";
            IResource iresource = null;
    
            try
            {
                List <string>list = Lists.<string>newArrayList();
                iresource = Minecraft.getMinecraft().getResourceManager().getResource(SPLASH_TEXTS);
                BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(iresource.getInputStream(), Charsets.UTF_8));
                String s;
    
                while ((s = bufferedreader.readLine()) != null)
                {
                    s = s.trim();
    
                    if (!s.isEmpty())
                    {
                        list.add(s);
                    }
                }
    
                if (!list.isEmpty())
                {
                    while (true)
                    {
                        this.splashText = (String)list.get(RANDOM.nextInt(list.size()));
    
                        if (this.splashText.hashCode() != 125780783)
                        {
                            break;
                        }
                    }
                }
            }
            catch (IOException var8)
            {
                ;
            }
            finally
            {
                IOUtils.closeQuietly((Closeable)iresource);
            }
    
            this.updateCounter = RANDOM.nextFloat();
            this.openGLWarning1 = "";
    
            if (!GLContext.getCapabilities().OpenGL20 && !OpenGlHelper.areShadersSupported())
            {
                this.openGLWarning1 = I18n.format("title.oldgl1", new Object[0]);
                this.openGLWarning2 = I18n.format("title.oldgl2", new Object[0]);
                this.openGLWarningLink = "https://help.mojang.com/customer/portal/articles/325948?ref=game";
            }
        }
    
        /**
         * Is there currently a realms notification screen, and are realms notifications enabled?
         */
        private boolean areRealmsNotificationsEnabled()
        {
            return Minecraft.getMinecraft().gameSettings.getOptionOrdinalValue(GameSettings.Options.REALMS_NOTIFICATIONS) && this.realmsNotification != null;
        }
    
        /**
         * Called from the main game loop to update the screen.
         */
        public void updateScreen()
        {
            ++this.panoramaTimer;
    
            if (this.areRealmsNotificationsEnabled())
            {
                this.realmsNotification.updateScreen();
            }
        }
    
        /**
         * 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 which toggles 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. Called when the GUI is displayed and when the
         * window resizes, the buttonList is cleared beforehand.
         */
        public void initGui()
        {
            this.viewportTexture = new DynamicTexture(256, 256);
            this.backgroundTexture = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
    
            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!";
            }
    
            int i = 24;
            int j = this.height / 4 + 48;
    
            if (this.mc.isDemo())
            {
                this.addDemoButtons(j, 24);
            }
            else
            {
                this.addSingleplayerMultiplayerButtons(j, 24);
            }
    
            this.buttonList.add(new BoutonCustom(0, this.width / 2 - 100, j + 72 + 12, 98, 20, I18n.format("menu.options", new Object[0])));
            this.buttonList.add(new BoutonCustom(4, this.width / 2 + 2, j + 72 + 12, 98, 20, I18n.format("menu.quit", new Object[0])));
            this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, j + 72 + 12));
    
            synchronized (this.threadLock)
            {
                this.openGLWarning1Width = this.fontRendererObj.getStringWidth(this.openGLWarning1);
                this.openGLWarning2Width = this.fontRendererObj.getStringWidth(this.openGLWarning2);
                int k = Math.max(this.openGLWarning1Width, this.openGLWarning2Width);
                this.openGLWarningX1 = (this.width - k) / 2;
                this.openGLWarningY1 = ((GuiButton)this.buttonList.get(0)).yPosition - 24;
                this.openGLWarningX2 = this.openGLWarningX1 + k;
                this.openGLWarningY2 = this.openGLWarningY1 + 24;
            }
    
            this.mc.setConnectedToRealms(false);
    
            if (Minecraft.getMinecraft().gameSettings.getOptionOrdinalValue(GameSettings.Options.REALMS_NOTIFICATIONS) && !this.hasCheckedForRealmsNotification)
            {
                RealmsBridge realmsbridge = new RealmsBridge();
                this.realmsNotification = realmsbridge.getNotificationScreen(this);
                this.hasCheckedForRealmsNotification = true;
            }
    
            if (this.areRealmsNotificationsEnabled())
            {
                this.realmsNotification.setGuiSize(this.width, this.height);
                this.realmsNotification.initGui();
            }
            modUpdateNotification = net.minecraftforge.client.gui.NotificationModUpdateScreen.init(new GuiMainMenu(), modButton);
        }
    
        /**
         * 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 BoutonCustom(1, this.width / 2 - 100, p_73969_1_, 200, 20, I18n.format("menu.singleplayer", new Object[0])));
            this.buttonList.add(new BoutonCustom(2, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 1, 200, 20, I18n.format(ChatFormatting.BLUE + "|" + ChatFormatting.WHITE + "|" + ChatFormatting.RED + "|"  + ChatFormatting.GOLD + " Rejoindre Cité Sous Contrôle " + ChatFormatting.BLUE + "|" + ChatFormatting.WHITE + "|" + ChatFormatting.RED + "|", new Object[0])));
            this.realmsButton = this.func_189646_b(new BoutonCustom(14, this.width / 2 + 2, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.format("TS3", new Object[0])));
            this.buttonList.add(modButton = new BoutonCustom(6, this.width / 2 - 100, p_73969_1_ + p_73969_2_ * 2, 98, 20, I18n.format("Site")));
        }
    
        /**
         * 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.buttonResetDemo = this.func_189646_b(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;
            }
        }
    
        /**
         * Called by the controls from the buttonList when activated. (Mouse pressed for buttons)
         */
        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 GuiWorldSelection(this));
            }
    
            if (button.id == 2)
            {
            FMLClientHandler.instance().connectToServerAtStartup("play.cite-sous-controle.fr", 25565);
            }
    
            if (button.id == 14)
            {
            try {
        Desktop.getDesktop().browse(new URI("ts3server://ts.cite-sous-controle.fr"));
        } catch (Exception e) {
        Main.logger.warn("Ouverture du site web impossible", e);
        mc.thePlayer.addChatComponentMessage(new TextComponentTranslation(ChatFormatting.RED + "Ouverture du site web impossible, Events.erreur: " + e));
        }
            }
    
            if (button.id == 4)
            {
                this.mc.shutdown();
            }
    
            if (button.id == 6)
            {
            if (Desktop.isDesktopSupported())
            {
            try {
            Desktop.getDesktop().browse(new URI("http://cite-sous-controle.com/forum/index.php"));
            } catch (Exception e) {
            Main.logger.warn("Ouverture du site web impossible", e);
            }
            }
            }
    
            if (button.id == 11)
            {
                this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.DEMO_WORLD_SETTINGS);
            }
    
            if (button.id == 12)
            {
                ISaveFormat isaveformat = this.mc.getSaveLoader();
                WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World");
    
                if (worldinfo != null)
                {
                    this.mc.displayGuiScreen(new GuiYesNo(this, I18n.format("selectWorld.deleteQuestion", new Object[0]), "\'" + worldinfo.getWorldName() + "\' " + I18n.format("selectWorld.deleteWarning", new Object[0]), I18n.format("selectWorld.deleteButton", new Object[0]), I18n.format("gui.cancel", new Object[0]), 12));
                }
            }
        }
    
        private void switchToRealms()
        {
            RealmsBridge realmsbridge = new RealmsBridge();
            realmsbridge.switchToRealms(this);
        }
    
        public void confirmClicked(boolean result, int id)
        {
            if (result && id == 12)
            {
                ISaveFormat isaveformat = this.mc.getSaveLoader();
                isaveformat.flushCache();
                isaveformat.deleteWorldDirectory("Demo_World");
                this.mc.displayGuiScreen(this);
            }
            else if (id == 13)
            {
                if (result)
                {
                    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.openGLWarningLink)});
                    }
                    catch (Throwable throwable)
                    {
                        LOGGER.error("Couldn\'t open link", throwable);
                    }
                }
    
                this.mc.displayGuiScreen(this);
            }
        }
    
        /**
         * Draws the main menu panorama
         */
        private void drawPanorama(int mouseX, int mouseY, float partialTicks)
        {
            Tessellator tessellator = Tessellator.getInstance();
            VertexBuffer vertexbuffer = tessellator.getBuffer();
            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(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
            int i = 8;
    
            for (int j = 0; j < 64; ++j)
            {
                GlStateManager.pushMatrix();
                float f = ((float)(j % 8) / 8.0F - 0.5F) / 64.0F;
                float f1 = ((float)(j / 8) / 8.0F - 0.5F) / 64.0F;
                float f2 = 0.0F;
                GlStateManager.translate(f, f1, 0.0F);
                GlStateManager.rotate(MathHelper.sin(((float)this.panoramaTimer + partialTicks) / 400.0F) * 25.0F + 20.0F, 1.0F, 0.0F, 0.0F);
                GlStateManager.rotate(-((float)this.panoramaTimer + partialTicks) * 0.1F, 0.0F, 1.0F, 0.0F);
    
                for (int k = 0; k < 6; ++k)
                {
                    GlStateManager.pushMatrix();
    
                    if (k == 1)
                    {
                        GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
                    }
    
                    if (k == 2)
                    {
                        GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F);
                    }
    
                    if (k == 3)
                    {
                        GlStateManager.rotate(-90.0F, 0.0F, 1.0F, 0.0F);
                    }
    
                    if (k == 4)
                    {
                        GlStateManager.rotate(90.0F, 1.0F, 0.0F, 0.0F);
                    }
    
                    if (k == 5)
                    {
                        GlStateManager.rotate(-90.0F, 1.0F, 0.0F, 0.0F);
                    }
    
                    this.mc.getTextureManager().bindTexture(TITLE_PANORAMA_PATHS[k]);
                    vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
                    int l = 255 / (j + 1);
                    float f3 = 0.0F;
                    vertexbuffer.pos(-1.0D, -1.0D, 1.0D).tex(0.0D, 0.0D).color(255, 255, 255, l).endVertex();
                    vertexbuffer.pos(1.0D, -1.0D, 1.0D).tex(1.0D, 0.0D).color(255, 255, 255, l).endVertex();
                    vertexbuffer.pos(1.0D, 1.0D, 1.0D).tex(1.0D, 1.0D).color(255, 255, 255, l).endVertex();
                    vertexbuffer.pos(-1.0D, 1.0D, 1.0D).tex(0.0D, 1.0D).color(255, 255, 255, l).endVertex();
                    tessellator.draw();
                    GlStateManager.popMatrix();
                }
    
                GlStateManager.popMatrix();
                GlStateManager.colorMask(true, true, true, false);
            }
    
            vertexbuffer.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 partialTicks)
        {
            this.mc.getTextureManager().bindTexture(this.backgroundTexture);
            GlStateManager.glTexParameteri(3553, 10241, 9729);
            GlStateManager.glTexParameteri(3553, 10240, 9729);
            GlStateManager.glCopyTexSubImage2D(3553, 0, 0, 0, 0, 0, 256, 256);
            GlStateManager.enableBlend();
            GlStateManager.tryBlendFuncSeparate(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA, GlStateManager.SourceFactor.ONE, GlStateManager.DestFactor.ZERO);
            GlStateManager.colorMask(true, true, true, false);
            Tessellator tessellator = Tessellator.getInstance();
            VertexBuffer vertexbuffer = tessellator.getBuffer();
            vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
            GlStateManager.disableAlpha();
            int i = 3;
    
            for (int j = 0; j < 3; ++j)
            {
                float f = 1.0F / (float)(j + 1);
                int k = this.width;
                int l = this.height;
                float f1 = (float)(j - 1) / 256.0F;
                vertexbuffer.pos((double)k, (double)l, (double)this.zLevel).tex((double)(0.0F + f1), 1.0D).color(1.0F, 1.0F, 1.0F, f).endVertex();
                vertexbuffer.pos((double)k, 0.0D, (double)this.zLevel).tex((double)(1.0F + f1), 1.0D).color(1.0F, 1.0F, 1.0F, f).endVertex();
                vertexbuffer.pos(0.0D, 0.0D, (double)this.zLevel).tex((double)(1.0F + f1), 0.0D).color(1.0F, 1.0F, 1.0F, f).endVertex();
                vertexbuffer.pos(0.0D, (double)l, (double)this.zLevel).tex((double)(0.0F + f1), 0.0D).color(1.0F, 1.0F, 1.0F, f).endVertex();
            }
    
            tessellator.draw();
            GlStateManager.enableAlpha();
            GlStateManager.colorMask(true, true, true, true);
        }
    
        /**
         * Renders the skybox in the main menu
         */
        private void renderSkybox(int mouseX, int mouseY, float partialTicks)
        {
            this.mc.getFramebuffer().unbindFramebuffer();
            GlStateManager.viewport(0, 0, 256, 256);
            this.drawPanorama(mouseX, mouseY, partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.rotateAndBlurSkybox(partialTicks);
            this.mc.getFramebuffer().bindFramebuffer(true);
            GlStateManager.viewport(0, 0, this.mc.displayWidth, this.mc.displayHeight);
            float f = 120.0F / (float)(this.width > this.height ? this.width : this.height);
            float f1 = (float)this.height * f / 256.0F;
            float f2 = (float)this.width * f / 256.0F;
            int i = this.width;
            int j = this.height;
            Tessellator tessellator = Tessellator.getInstance();
            VertexBuffer vertexbuffer = tessellator.getBuffer();
            vertexbuffer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
            vertexbuffer.pos(0.0D, (double)j, (double)this.zLevel).tex((double)(0.5F - f1), (double)(0.5F + f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
            vertexbuffer.pos((double)i, (double)j, (double)this.zLevel).tex((double)(0.5F - f1), (double)(0.5F - f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
            vertexbuffer.pos((double)i, 0.0D, (double)this.zLevel).tex((double)(0.5F + f1), (double)(0.5F - f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
            vertexbuffer.pos(0.0D, 0.0D, (double)this.zLevel).tex((double)(0.5F + f1), (double)(0.5F + f2)).color(1.0F, 1.0F, 1.0F, 1.0F).endVertex();
            tessellator.draw();
        }
    
        /**
         * Draws the screen and all the components in it.
         */
        public void drawScreen(int mouseX, int mouseY, float partialTicks)
        {
            GlStateManager.disableAlpha();
            this.renderSkybox(mouseX, mouseY, partialTicks);
            GlStateManager.enableAlpha();
            int i = 274;
            int j = this.width / 2 - 137;
            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(MINECRAFT_TITLE_TEXTURES);
            GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
    
            this.drawTexturedModalRect(k, b0, -10, 10, 250, 80);
    
            this.splashText = net.minecraftforge.client.ForgeHooksClient.renderMainMenu(new GuiMainMenu(), this.fontRendererObj, this.width, this.height, this.splashText);
    
            GlStateManager.pushMatrix();
            GlStateManager.translate((float)(this.width / 2 + 90), 70.0F, 0.0F);
            GlStateManager.rotate(-20.0F, 0.0F, 0.0F, 1.0F);
            float f = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * ((float)Math.PI * 2F)) * 0.1F);
            f = f * 100.0F / (float)(this.fontRendererObj.getStringWidth(this.splashText) + 32);
            GlStateManager.scale(f, f, f);
            //this.drawCenteredString(this.fontRendererObj, this.splashText, 0, -8, -256);
            GlStateManager.popMatrix();
            String s = "Minecraft 1.10";
    
            if (this.mc.isDemo())
            {
                s = s + " Demo";
            }
            else
            {
                s = s + ("release".equalsIgnoreCase(this.mc.getVersionType()) ? "" : "/" + this.mc.getVersionType());
            }
    
            java.util.List <string>brandings = com.google.common.collect.Lists.reverse(net.minecraftforge.fml.common.FMLCommonHandler.instance().getBrandings(true));
            for (int brdline = 0; brdline < brandings.size(); brdline++)
            {
                String brd = brandings.get(brdline);
                if (!com.google.common.base.Strings.isNullOrEmpty(brd))
                {
                    this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + brdline * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215);
                }
            }
            String s1 = "Copyright Mojang AB. Do not distribute !";
            this.drawString(this.fontRendererObj, "Copyright Mojang AB. Do not distribute!", this.width - this.fontRendererObj.getStringWidth("Copyright Mojang AB. Do not distribute!") - 2, this.height - 10, -1);
            this.drawString(this.fontRendererObj, "Menu par Flo!", this.width - this.fontRendererObj.getStringWidth("Menu par Flo!") - 2, this.height - 20, -1);
            this.drawString(this.fontRendererObj, "Bonjour, " + this.mc.getSession().getProfile().getName() + ".", this.width - this.fontRendererObj.getStringWidth("Bonjour, " + this.mc.getSession().getProfile().getName()) - 2, this.height - 30, -1);
    
            if (this.openGLWarning1 != null && !this.openGLWarning1.isEmpty())
            {
                drawRect(this.openGLWarningX1 - 2, this.openGLWarningY1 - 2, this.openGLWarningX2 + 2, this.openGLWarningY2 - 1, 1428160512);
                this.drawString(this.fontRendererObj, this.openGLWarning1, this.openGLWarningX1, this.openGLWarningY1, -1);
                this.drawString(this.fontRendererObj, this.openGLWarning2, (this.width - this.openGLWarning2Width) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, -1);
            }
    
            super.drawScreen(mouseX, mouseY, partialTicks);
    
            if (this.areRealmsNotificationsEnabled())
            {
                this.realmsNotification.drawScreen(mouseX, mouseY, partialTicks);
            }
            modUpdateNotification.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);
    
            synchronized (this.threadLock)
            {
                if (!this.openGLWarning1.isEmpty() && mouseX >= this.openGLWarningX1 && mouseX <= this.openGLWarningX2 && mouseY >= this.openGLWarningY1 && mouseY <= this.openGLWarningY2)
                {
                    GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.openGLWarningLink, 13, true);
                    guiconfirmopenlink.disableSecurityWarning();
                    this.mc.displayGuiScreen(guiconfirmopenlink);
                }
            }
    
            if (this.areRealmsNotificationsEnabled())
            {
            super.mouseClicked(mouseX, mouseY, mouseButton);
                //this.realmsNotification.mouseClicked(mouseX, mouseY, mouseButton);
            }
    
            net.minecraftforge.client.ForgeHooksClient.mainMenuMouseClick(mouseX, mouseY, mouseButton, this.fontRendererObj, this.width);
        }
    
        /**
         * Called when the screen is unloaded. Used to disable keyboard repeat events
         */
        public void onGuiClosed()
        {
            if (this.realmsNotification != null)
            {
                this.realmsNotification.onGuiClosed();
            }
        }
    }
    
    

    Voilà!

    Merci d'avance!</string></string></string>


  • Administrateurs

    Salut,
    Ce genre de soucis vient surtout quand le code opengl est erroné.
    Tu as modifié quoi exactement ?



  • Bah en fait c'est simple, j'ai copier coller le code du GuiMainMenu juste pour essayer voir si j'avais toujours l'érreur et elle apparaît .
    Sinon, j'ai modifier les boutons, la fonction draw et les images c'est tout… après c'est un gros copier coller de la classe GuiMainMenu.



  • L'erreur ne viens pas du GuiMainMenu, ça n'a pas de sens voyons, si tu utilise un rendu TESR à mon avis ça viens de là ou alors de ton HUD



  • Salut Ama, tu as raisons cela viens surement de mes rendu TESR, ça viens de ou en général ?



  • TileEntityTonBlokRenderer ou je ne sais pas trop comment tu as appelé tes classes avec implementation du ITileEntitySpecialRenderer



  • Ahh euhh je crois que c'est pas tout a fait pareil en fait je te glisse un exemple:

    
    package com.CSC.net.block;
    
    import com.CSC.net.item.CSCItems;
    
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.IInventory;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.NBTTagCompound;
    import net.minecraft.nbt.NBTTagList;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.ITickable;
    import net.minecraft.util.text.ITextComponent;
    
    public class TileEntityCuve extends TileEntity implements IInventory, ITickable
    {
        private ItemStack[] inventory = new ItemStack[72];
        private String customName;
        int timer = 600 * 20;
    
        public void readFromNBT(NBTTagCompound nbttag)
        {
            super.readFromNBT(nbttag);
            NBTTagList nbttaglist = nbttag.getTagList("Items", 10);
            this.inventory = new ItemStack[this.getSizeInventory()];
    
            if(nbttag.hasKey("CustomName"))
            {
                this.customName = nbttag.getString("CustomName");
            }
    
            for(int i = 0; i < nbttaglist.tagCount(); i++)
            {
                NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i);
                int j = nbttagcompound1.getByte("Slot");
    
                if(j >= 0 && j < this.inventory.length)
                {
                    this.inventory[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
                }
            }
        }
    
        public NBTTagCompound writeToNBT(NBTTagCompound nbttag)
        {
            super.writeToNBT(nbttag);
            NBTTagList nbttaglist = new NBTTagList();
    
            for(int i = 0; i < this.inventory.length; i++)
            {
                if(this.inventory* != null)
                {
                    NBTTagCompound nbttagcompound1 = new NBTTagCompound();
                    nbttagcompound1.setByte("Slot", (byte)i);
                    this.inventory*.writeToNBT(nbttagcompound1);
                    nbttaglist.appendTag(nbttagcompound1);
                }
            }
    
            nbttag.setTag("Items", nbttaglist);
    
            if(this.isInvNameLocalized())
            {
                nbttag.setString("CustomName", this.customName);
            }
    return nbttag;
        }
    
        @Override
        public int getSizeInventory()
        {
            return inventory.length;
        }
    
        @Override
        public ItemStack getStackInSlot(int slotId)
        {
            return inventory[slotId];
        }
    
        @Override
        public ItemStack decrStackSize(int slotId, int quantity)
        {
            if(this.inventory[slotId] != null)
            {
                ItemStack itemstack;
    
                if(this.inventory[slotId].stackSize <= quantity)
                {
                    itemstack = this.inventory[slotId];
                    this.inventory[slotId] = null;
                    this.markDirty();
                    return itemstack;
                }
                else
                {
                    itemstack = this.inventory[slotId].splitStack(quantity);
    
                    if(this.inventory[slotId].stackSize == 0)
                    {
                        this.inventory[slotId] = null;
                    }
    
                    this.markDirty();
                    return itemstack;
                }
            }
            else
            {
                return null;
            }
        }
    
        @Override
        public ItemStack removeStackFromSlot(int slotId)
        {
            if(this.inventory[slotId] != null)
            {
                ItemStack itemstack = this.inventory[slotId];
                this.inventory[slotId] = null;
                return itemstack;
            }
            else
            {
                return null;
            }
        }
    
        @Override
        public void setInventorySlotContents(int slotId, ItemStack stack)
        {
            this.inventory[slotId] = stack;
    
            if(stack != null && stack.stackSize > this.getInventoryStackLimit())
            {
                stack.stackSize = this.getInventoryStackLimit();
            }
    
            this.markDirty();
        }
    
        @Override
        public int getInventoryStackLimit()
        {
            // TODO Auto-generated method stub
            return 64;
        }
    
        @Override
        public boolean isUseableByPlayer(EntityPlayer player)
        {
            return this.worldObj.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D;
        }
    
        @Override
        public void openInventory(EntityPlayer player)
        {
    
        }
    
        @Override
        public void closeInventory(EntityPlayer player)
        {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public boolean isItemValidForSlot(int slotId, ItemStack stack)
        {
            return true;
        }
    
        @Override
        public int getField(int id)
        {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public void setField(int id, int value)
        {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public int getFieldCount()
        {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public void clear()
        {
            // TODO Auto-generated method stub
    
        }
    
        @Override
        public String getName()
        {
            return this.isInvNameLocalized() ? this.customName : "Cuve";
        }
    
        public boolean isInvNameLocalized()
        {
            return this.customName != null && this.customName.length() > 0;
        }
    
        public void setCustomGuiName(String name)
        {
            this.customName = name;
        }
    
        @Override
        public ITextComponent getDisplayName()
        {
            // TODO Auto-generated method stub
            return null;
        }
    
        @Override
        public boolean hasCustomName()
        {
            // TODO Auto-generated method stub
            return false;
        }
    
        @Override
        public void update()
        {
            if(timer <= 0)
            {
                for(int i = 0; i < getSizeInventory(); i++)
                {
    
                    setInventorySlotContents(i, new ItemStack(CSCItems.linge_sale));
                    timer = 600 * 20;
                }
    
            }
            else
            {
                timer–;
            }
        }
    
    }
    
    


  • Non c'est la classe qui gère le rendu 3D de ton block, c'est les blocs où tu utilise un modèle 3D fait avec techne ou autre



  • Ah, non j'utilise pas de rendu 3d pour les blocs par contre pour les items oui avec les .json mais je penses pas que c'est ça qui cause le problème.
    Mais moi avant j'avais cette erreur et quand je réduise la taille de la texture de mon bloc ou item genre avant c'était du 512512 et quand  je mettais du 128128 ou 64*64 l'erreur disparaissait, c'est bizarre…

    Edit:

    A j'ai trouvé c'est bon finalement c'était une texture en (128*128) qui causer problème...