Résolu Image fixe menu minecraft
-
Bonjour,
J’ai aujourd’hui créer un mod modifiant les bouton du menu grâce au pack de robin.
J’ai ensuite testé de mettre une image fixe en arrière plan à la place du panorama.
J’ai donc supprimé la fonction qui permet d’afficher le panorama hors maintenant j’ai un écran noir.
Comment pourrais-je afficher mon image ?
Merci d’avance. -
Il me semble que c’est avec des fonctions OpenGL, mais je n’ai pas le code sous la main Mais cherches dans les autres sujets, il y en a d’autres qui cherchent aussi comment faire
-
J’ai suivi cette discussion où robin4002 donne la solution mais cela ne semble pas marcher pour la 1.7
http://www.minecraftforgefrance.fr/showthread.php?tid=1240 -
Alors j’ai fait pas mal de test (en passant ça m’a permet de mieux comprendre l’openGL, merci xavpok qui m’a donné un petit coup de main)
Donc dans la classe de ton menu custom, enlève ces 3 méthodes :
private void drawPanorama(int p_73970_1_, int p_73970_2_, float p_73970_3_)
private void rotateAndBlurSkybox(float p_73968_1_)
private void renderSkybox(int p_73971_1_, int p_73971_2_, float p_73971_3_)Et ajoute celle-ci à la place :
private void renderBackGround() { GL11.glViewport(0, 0, 256, 256); this.mc.getTextureManager().bindTexture(backGround); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); 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 = this.width; int l = this.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(); }
Dans la fonction public void drawScreen(int p_73863_1_, int p_73863_2_, float p_73863_3_) il va y avoir une erreur, il va dire que this.renderSkybox(p_73863_1_, p_73863_2_, p_73863_3_); n’existe plus, remplace cette ligne par : this.renderBackGround();
Et pour finir, il faut déclarer la texture. Vers le haut de la classe, il y a :
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")};
Remplace par ta propre texture :
private final ResourceLocation backGround = new ResourceLocation("modtutoriel", "textures/gui/menu.png");
Dans mon cas, la texture va dans forge/src/main/resources/assets/modtutoriel/textures/gui/menu.png
Adapte le modid et le nom.
Résultat avec un fond d’écran venant du site de sphax :
-
Je te conseille si tu n’utilise pas de transparence dans tes images de les convertir en JPG tu gagnera en taille !
Pour moi par exemple j’ai une image de 1600 * 700 et quelque en JPG 285ko en PNG 1,4Mo
-
Merci beaucoup !
Tout marche parfaitement.
Merci de votre travail.