11 avr. 2016, 09:26

@‘robin4002’:

Salut,
C’est possible via GuiScreenEvent.DrawScreenEvent.Pre. Il faut cancel l’event puis utiliser le code que j’ai donner pour draw à nouveau.
Cependant tu vas perdre le rendu des boutons, donc il faut les get via reflexion pour les rendre à nouveau :

           List buttonList = ObfuscationReflectionHelper.getPrivateValue(GuiScreen.class, event.gui, "buttonList", "field_146292_n");
           for(k = 0; k < buttonList.size(); ++k)
           {
               ((GuiButton)buttonList.get(k)).drawButton(Minecraft.getMinecraft(), event.mouseX, event.mouseY);
           }

           List labelList = ObfuscationReflectionHelper.getPrivateValue(GuiScreen.class, event.gui, "labelList", "field_146293_o");
           for(k = 0; k < labelList.size(); ++k)
           {
               ((GuiLabel)labelList.get(k)).drawLabel(Minecraft.getMinecraft(), event.mouseX, event.mouseY);
           }

Est ce que c’est bien comme ça que je dois cancel l’event :

public void cancelBg(GuiScreenEvent.DrawScreenEvent.Pre event) {
event.setCanceled(true);
}

Pour le code du background je l’ai modifié un peu pour qu’il fonctionne avec l’event mais j’ai quelques erreurs que je n’arrive pas à résoudre.
Voici le code :

GL11.glViewport(0, 0, 256, 256);
       event.gui.getTextureManager().bindTexture(backGround); 
       GL11.glDisable(GL11.GL_TEXTURE_2D);
       GL11.glEnable(GL11.GL_TEXTURE_2D);
       GL11.glViewport(0, 0, event.gui.width, event.gui.height);
       Tessellator tessellator = Tessellator.instance;
       tessellator.startDrawingQuads();
       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);
       tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F);
       int k = event.gui.width;
       int l = event.gui.height;
       tessellator.addVertexWithUV(0, 0, this.zLevel, 0, 0);
       tessellator.addVertexWithUV(0, l, this.zLevel, 0, 1);
       tessellator.addVertexWithUV(k, l, this.zLevel, 1, 1);
       tessellator.addVertexWithUV(k, 0, this.zLevel, 1, 0);
       tessellator.draw();

La méthode getTextureManager a t’elle changé ?
Pour le tessellator j’ai des erreurs un peu partout nottamment à sa déclaration : “The field Tessellator.instance is not visible”