@‘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”