Problème ModCustomMenu !



  • Bonjour, je suis en train de configurer le mod pour changer l'interface du menu Minecraft de base, j'ai donc commencer par vouloir changer le panorama par une image fixe grâce à ce tutoriel : http://www.minecraftforgefrance.fr/showthread.php?tid=1311

    J'ai donc suivis les instructions du tutoriel, jusqu'au moment ou je charge le mod et que dans l'interface, je me retrouve avec ça : ScreenShot

    Je ne vois pas d'où cela pourrait provenir, j'ai quelques bases en Java, mais là, je ne vois pas du tout d'où ça pourrait venir !

    Le fichier GuiCustomMainMenu.java au besoin :

    package fr.minecraftforgefrance.client.custommenu;
    
    import java.awt.Desktop;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URI;
    import java.util.ArrayList;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.List;
    import java.util.Random;
    
    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.GuiMultiplayer;
    import net.minecraft.client.gui.GuiOptions;
    import net.minecraft.client.gui.GuiScreen;
    import net.minecraft.client.gui.GuiScreenOnlineServers;
    import net.minecraft.client.gui.GuiSelectWorld;
    import net.minecraft.client.gui.GuiYesNo;
    import net.minecraft.client.mco.ExceptionMcoService;
    import net.minecraft.client.mco.GuiScreenClientOutdated;
    import net.minecraft.client.mco.McoClient;
    import net.minecraft.client.multiplayer.GuiConnecting;
    import net.minecraft.client.renderer.Tessellator;
    import net.minecraft.client.renderer.texture.DynamicTexture;
    import net.minecraft.client.resources.I18n;
    import net.minecraft.util.EnumChatFormatting;
    import net.minecraft.util.MathHelper;
    import net.minecraft.util.ResourceLocation;
    import net.minecraft.world.demo.DemoWorldServer;
    import net.minecraft.world.storage.ISaveFormat;
    import net.minecraft.world.storage.WorldInfo;
    
    import org.apache.commons.io.Charsets;
    import org.lwjgl.opengl.GL11;
    import org.lwjgl.util.glu.Project;
    
    import com.google.common.base.Strings;
    import com.google.common.collect.Lists;
    
    import cpw.mods.fml.client.GuiModList;
    import cpw.mods.fml.common.FMLCommonHandler;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    
    @SideOnly(Side.CLIENT)
    public class GuiCustomMainMenu extends GuiScreen
    {
       private static final Random rand = new Random();
       private float updateCounter;
       private String splashText = "missingno";
       private GuiButton buttonResetDemo;
       private int panoramaTimer;
       private DynamicTexture viewportTexture;
       private boolean field_96141_q = true;
       private static boolean field_96140_r;
       private static boolean field_96139_s;
       private final Object field_104025_t = new Object();
       private String noticeMessage;
       private String noticeLink;
       private static final ResourceLocation splashTexts = new ResourceLocation("texts/splashes.txt");
       private static final ResourceLocation minecraftTitleTextures = new ResourceLocation("textures/gui/title/minecraft.png");
       private final ResourceLocation backGround = new ResourceLocation("Minecraft", "src/main/resources/client_background.png");
       public static final String noticeMessageInformation = "Please click " + EnumChatFormatting.UNDERLINE + "here" + EnumChatFormatting.RESET + " for more information.";
       private int field_92024_r;
       private int field_92023_s;
       private int field_92022_t;
       private int field_92021_u;
       private int field_92020_v;
       private int field_92019_w;
       private ResourceLocation field_110351_G;
       private GuiButton minecraftRealmsButton;
    
       private GuiButton fmlModButton = null;
    
       public GuiCustomMainMenu()
       {
           BufferedReader bufferedreader = null;
           String s;
    
           try
           {
               ArrayList arraylist = new ArrayList();
               bufferedreader = new BufferedReader(new InputStreamReader(Minecraft.getMinecraft().getResourceManager().getResource(splashTexts).getInputStream(), Charsets.UTF_8));
    
               while ((s = bufferedreader.readLine()) != null)
               {
                   s = s.trim();
    
                   if (!s.isEmpty())
                   {
                       arraylist.add(s);
                   }
               }
    
               do
               {
                   this.splashText = (String)arraylist.get(rand.nextInt(arraylist.size()));
               }
               while (this.splashText.hashCode() == 125780783);
           }
           catch (IOException ioexception)
           {
               ;
           }
           finally
           {
               if (bufferedreader != null)
               {
                   try
                   {
                       bufferedreader.close();
                   }
                   catch (IOException ioexception1)
                   {
                       ;
                   }
               }
           }
    
           this.updateCounter = rand.nextFloat();
           this.noticeMessage = "";
           String s1 = System.getProperty("os_architecture");
           s = System.getProperty("java_version");
    
           if ("ppc".equalsIgnoreCase(s1))
           {
               this.noticeMessage = "" + EnumChatFormatting.BOLD + "Notice!" + EnumChatFormatting.RESET + " PowerPC compatibility will be dropped in Minecraft 1.6";
               this.noticeLink = "http://tinyurl.com/javappc";
           }
           else if (s != null && s.startsWith("1.5"))
           {
               this.noticeMessage = "" + EnumChatFormatting.BOLD + "Notice!" + EnumChatFormatting.RESET + " Java 1.5 compatibility will be dropped in Minecraft 1.6";
               this.noticeLink = "http://tinyurl.com/javappc";
           }
       }
    
       /**
        * Called from the main game loop to update the screen.
        */
       public void updateScreen()
       {
           ++this.panoramaTimer;
       }
    
       /**
        * 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. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
        */
       protected void keyTyped(char par1, int par2) {}
    
       /**
        * Adds the buttons (and other controls) to the screen in question.
        */
       public void initGui()
       {
           this.viewportTexture = new DynamicTexture(256, 256);
           this.field_110351_G = this.mc.getTextureManager().getDynamicTextureLocation("background", this.viewportTexture);
           Calendar calendar = Calendar.getInstance();
           calendar.setTime(new Date());
    
           if (calendar.get(2) + 1 == 11 && calendar.get(5) == 9)
           {
               this.splashText = "Happy birthday, ez!";
           }
           else if (calendar.get(2) + 1 == 6 && calendar.get(5) == 1)
           {
               this.splashText = "Happy birthday, Notch!";
           }
           else if (calendar.get(2) + 1 == 12 && calendar.get(5) == 24)
           {
               this.splashText = "Rejoind nous";
           }
           else if (calendar.get(2) + 1 == 1 && calendar.get(5) == 1)
           {
               this.splashText = "Vive GeekMyCraft!";
           }
           else if (calendar.get(2) + 1 == 10 && calendar.get(5) == 31)
           {
               this.splashText = "GeekMyCraft!";
           }
    
           boolean flag = true;
           int i = this.height / 4 + 48;
    
           if (this.mc.isDemo())
           {
               this.addDemoButtons(i, 24);
           }
           else
           {
               this.addSingleplayerMultiplayerButtons(i, 24);
           }
    
           this.buttonList.add(new GuiButton(0, this.width / 2 - 100, i + 72 + 12, 98, 20,("Options")));
           this.buttonList.add(new GuiButton(4, this.width / 2 + 2, i + 72 + 12, 98, 20,("Quitter")));
           this.buttonList.add(new GuiButtonLanguage(5, this.width / 2 - 124, i + 72 + 12));
           Object object = this.field_104025_t;
    
           synchronized (this.field_104025_t)
           {
               this.field_92023_s = this.fontRendererObj.getStringWidth(this.noticeMessage);
               this.field_92024_r = this.fontRendererObj.getStringWidth(noticeMessageInformation);
               int j = Math.max(this.field_92023_s, this.field_92024_r);
               this.field_92022_t = (this.width - j) / 2;
               this.field_92021_u = ((GuiButton)this.buttonList.get(0)).yPosition - 24;
               this.field_92020_v = this.field_92022_t + j;
               this.field_92019_w = this.field_92021_u + 24;
           }
       }
    
       /**
        * Adds Singleplayer and Multiplayer buttons on Main Menu for players who have bought the game.
        */
       private void addSingleplayerMultiplayerButtons(int par1, int par2)
       {
    this.buttonList.add(new GuiButton(25, this.width / 2 + 105, par1, 98, 20, ("§lSite")));
    this.buttonList.add(new GuiButton(27, this.width / 2 - 203 , par1, 98, 20, ("§lForum")));
    this.buttonList.add(new GuiButton(6, this.width / 2 - 100, par2 + par2 + par1, 98, 20, ("§LGeekMods")));
    this.buttonList.add(new GuiButton(26, this.width / 2 + 2, par2 + par2 + par1, 98, 20, ("§LTS3")));
    this.buttonList.add(new GuiButton(2, this.width / 2 - 100, par1 + par2 * 1, ("§LGo sur GeekMyCraft")));
           fmlModButton = new GuiButton(1, this.width / 2 - 100, par1 + par2 * 0, "§LTester les mods");
           this.buttonList.add(fmlModButton);
       }
    
       /**
        * Adds Demo buttons on Main Menu for players who are playing Demo.
        */
       private void addDemoButtons(int par1, int par2)
       {
           this.buttonList.add(new GuiButton(11, this.width / 2 - 100, par1,("menu.playdemo")));
           this.buttonList.add(this.buttonResetDemo = new GuiButton(12, this.width / 2 - 100, par1 + par2 * 1,("menu.resetdemo")));
           ISaveFormat isaveformat = this.mc.getSaveLoader();
           WorldInfo worldinfo = isaveformat.getWorldInfo("Demo_World");
    
           if (worldinfo == null)
           {
               this.buttonResetDemo.enabled = false;
           }
       }
    
       /**
        * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e).
        */
       protected void actionPerformed(GuiButton button)
       {
           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 GuiSelectWorld(this));
           }
    
        if (button.id == 2)
           {
              this.mc.displayGuiScreen(new GuiConnecting(this, mc, "5.39.0.91", 25565));
    
           }
    
           if (button.id == 14 && this.minecraftRealmsButton.enabled)
           {
               this.func_140005_i();
           }
    
           if (button.id == 4)
           {
               this.mc.shutdown();
           }
    
           if (button.id == 6)
           {
               this.mc.displayGuiScreen(new GuiModList(this));
           }
    
           if (button.id == 11)
           {
               this.mc.launchIntegratedServer("Demo_World", "Demo_World", DemoWorldServer.demoWorldSettings);
           }
    
    if(button.id == 26)
    {
    Desktop desktop = null;
    try
    {
    URI url = new URI("https://www.facebook.com/HonoluluCraft");
    if(Desktop.isDesktopSupported())
    {
    desktop = Desktop.getDesktop();
    desktop.browse(url);
    }
    }
    catch(Exception ex)
    {}
    }
    if(button.id == 25)
    {
    Desktop desktop = null;
    try
    {
    URI url = new URI("http://onepieceuniverses.tumblr.com/");
    if(Desktop.isDesktopSupported())
    {
    desktop = Desktop.getDesktop();
    desktop.browse(url);
    }
    }
    catch(Exception ex)
    {}
    }
       }
    
       private void func_140005_i() {
    // TODO Auto-generated method stub
    
    }
    
    public void confirmClicked(boolean par1, int par2)
       {
           if (par1 && par2 == 12)
           {
               ISaveFormat isaveformat = this.mc.getSaveLoader();
               isaveformat.flushCache();
               isaveformat.deleteWorldDirectory("Demo_World");
               this.mc.displayGuiScreen(this);
           }
           else if (par2 == 13)
           {
               if (par1)
               {
                   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.noticeLink)});
                   }
                   catch (Throwable throwable)
                   {
                       throwable.printStackTrace();
                   }
               }
    
               this.mc.displayGuiScreen(this);
           }
       }
    
       /**
        * Draws the main menu panorama
        */
    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();
       }
    
       /**
        * Draws the screen and all the components in it.
        */
       public void drawScreen(int par1, int par2, float par3)
       {
        this.renderBackGround();
           Tessellator tessellator = Tessellator.instance;
           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(minecraftTitleTextures);
           GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    
           if ((double)this.updateCounter < 1.0E-4D)
           {
               this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 99, 44);
               this.drawTexturedModalRect(k + 99, b0 + 0, 129, 0, 27, 44);
               this.drawTexturedModalRect(k + 99 + 26, b0 + 0, 126, 0, 3, 44);
               this.drawTexturedModalRect(k + 99 + 26 + 3, b0 + 0, 99, 0, 26, 44);
               this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
           }
           else
           {
               this.drawTexturedModalRect(k + 0, b0 + 0, 0, 0, 155, 44);
               this.drawTexturedModalRect(k + 155, b0 + 0, 0, 45, 155, 44);
           }
    
           tessellator.setColorOpaque_I(16777215);
           GL11.glPushMatrix();
           GL11.glTranslatef((float)(this.width / 2 + 90), 70.0F, 0.0F);
           GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F);
           float f1 = 1.8F - MathHelper.abs(MathHelper.sin((float)(Minecraft.getSystemTime() % 1000L) / 1000.0F * (float)Math.PI * 2.0F) * 0.1F);
           GL11.glScalef(f1, f1, f1);
           GL11.glPopMatrix();
           String s = "";
    
           if (this.mc.isDemo())
           {
               s = s + " Demo";
           }
    
           List <string>brandings = Lists.reverse(FMLCommonHandler.instance().getBrandings(field_96141_q));
           for (int i = 0; i < brandings.size(); i++)
           {
               String brd = brandings.get(i);
               if (!Strings.isNullOrEmpty(brd))
               {
                   this.drawString(this.fontRendererObj, brd, 2, this.height - ( 10 + i * (this.fontRendererObj.FONT_HEIGHT + 1)), 16777215);
               }
           }
    
           String s1 = "Vive votre serveur";
           this.drawString(this.fontRendererObj, s1, this.width - this.fontRendererObj.getStringWidth(s1) - 2, this.height - 10, 16777215);
    
           if (this.noticeMessage != null && this.noticeMessage.length() > 0)
           {
               drawRect(this.field_92022_t - 2, this.field_92021_u - 2, this.field_92020_v + 2, this.field_92019_w - 1, 1428160512);
               this.drawString(this.fontRendererObj, this.noticeMessage, this.field_92022_t, this.field_92021_u, 16777215);
               this.drawString(this.fontRendererObj, noticeMessageInformation, (this.width - this.field_92024_r) / 2, ((GuiButton)this.buttonList.get(0)).yPosition - 12, 16777215);
           }
    
           super.drawScreen(par1, par2, par3);
       }
    
       /**
        * Called when the mouse is clicked.
        */
       protected void mouseClicked(int par1, int par2, int par3)
       {
           super.mouseClicked(par1, par2, par3);
           Object object = this.field_104025_t;
    
           synchronized (this.field_104025_t)
           {
               if (this.noticeMessage.length() > 0 && par1 >= this.field_92022_t && par1 <= this.field_92020_v && par2 >= this.field_92021_u && par2 <= this.field_92019_w)
               {
                   GuiConfirmOpenLink guiconfirmopenlink = new GuiConfirmOpenLink(this, this.noticeLink, 13, true);
                   this.mc.displayGuiScreen(guiconfirmopenlink);
               }
           }
       }
    
       static Minecraft func_110348_a(GuiCustomMainMenu menu)
       {
           return menu.mc;
       }
    
       static boolean func_110349_a(boolean par0)
       {
           field_96139_s = par0;
           return par0;
       }
    
       static Minecraft func_130018_c(GuiCustomMainMenu menu)
       {
           return menu.mc;
       }
    
       static Minecraft func_130019_d(GuiCustomMainMenu menu)
       {
           return menu.mc;
       }
    }
    

    Merci de m'aider si vous voyez ! Merci !  :D</string>


  • Moddeurs confirmés Rédacteurs Administrateurs

    Utilise la balise java pour le code.
    Ta texture n'est pas trouvé, car tu as mit le mauvais chemin.
       private final ResourceLocation backGround = new ResourceLocation("Minecraft", "src/main/resources/client_background.png");
    Remplace par :
       private final ResourceLocation backGround = new ResourceLocation("modid", "textures/gui/client_background.png");
    Et place ta texture dans :
    forge/src/main/resources/assets/modid/textures/gui/



  • @'robin4002':

    Utilise la balise java pour le code.
    Ta texture n'est pas trouvé, car tu as mit le mauvais chemin.
       private final ResourceLocation backGround = new ResourceLocation("Minecraft", "src/main/resources/client_background.png");
    Remplace par :
       private final ResourceLocation backGround = new ResourceLocation("modid", "textures/gui/client_background.png");
    Et place ta texture dans :
    forge/src/main/resources/assets/modid/textures/gui/

    Je ne trouve pas ce répertoire, que ce soit par eclipse ou depuis le dossier lui même, est-ce normal ?


  • Moddeurs confirmés Rédacteurs Administrateurs

    Il faut le créer.



  • @'robin4002':

    Il faut le créer.

    Dans build\tmp\recompSrc\assets\forge ?


  • Moddeurs confirmés Modérateurs

    non dans src/main/ressources



  • Oui c'est bon ! Merciiii !



  • le lien cité ne mène pas a un tutoriel, il a peut être été déplacé, donc pouriez vous dire le nouveau lien de ce tutoriel

    merci


  • Moddeurs confirmés Rédacteurs Administrateurs

    Oui ce n'est pas un tutoriel, c'est une discussion, je ne sais pas pourquoi il a dit tutoriel.
    Il suffit de descendre un peu dans la discussion pour arriver à mon message : http://www.minecraftforgefrance.fr/showthread.php?tid=1311&pid=15595#pid15595



  • on y vois une fonction mais pas la classe entière, est elle uniquement constitué de cette fonction et ensuite comment faire pour que forge interprète cette classe pour changer le fond


  • Moddeurs confirmés Rédacteurs Administrateurs

    La réponse que j'ai donné était juste pour mettre une image de fond fixe, il existe déjà pleins de tutoriel sur le web pour faire un menu custom.



  • ok merci je vais donc me renseigner sur les custom menu



  • re-bonjour, je me suis renseigné sur les custom menu et j'ai suivi un tuto en y implétant vottre fonction mais je me retrouve avec un dégradé gris:

    scren: https://www.dropbox.com/s/gkqr35w4539gohj/Capture d'écran 2015-02-01 18.19.08.png?dl=0

    ma class GuiCustomMainMenu: https://www.dropbox.com/s/xl2za77766sw7eg/guicustommenu.txt?dl=0

    voyez si vous pouvez trouver l'erreur


  • Moddeurs confirmés Rédacteurs Administrateurs

    A quoi ressemble l'image que tu as mit ?
    De plus tu n'as pas retiré 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_)



  • je les avais mise en commentaire, maintenant je les ai suppr mais j'ai toujours un dégradé gris

    voici ma class "guiCustomMainMenu" corrigé:
    https://www.dropbox.com/s/xl2za77766sw7eg/guicustommenu.txt?dl=0
    et voici mon image test:
    https://www.dropbox.com/s/bs9g9lfuvpssobm/panaorama_0.png?dl=0



  • alors ca vient de mon code ou de mon image ?


  • Moddeurs confirmés Rédacteurs Administrateurs

    Surement de l'image, essaye avec une image qui respecte le ratio 16:9



  • ok car j'avait suivis un tuto qui me disais de prendre une image en 256*256p

    je change d'image et je vous tient au courant, mais d'avance vous me conseiller quelle définition ?



  • même bug en changeant d'image, j'ai pris cette fois une définition de 256*144.

    voici l'image:
    https://www.dropbox.com/s/bs9g9lfuvpssobm/panaorama_0.png?dl=0


  • Moddeurs confirmés Rédacteurs Administrateurs

    Renvoie-moi tout le code de ton menu, je vais regarder de mon côté.


Log in to reply