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


  • Moddeurs confirmés Rédacteurs Administrateurs

    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.


Log in to reply