1.7.10 Petite question bête : Ouverture du GUI robin packet



  • Salut j'ai regardé la vidéo de robin 3x et je ne vois vraiment pas la fois où il met une ligne comme ceci dans le ToucheTyped :

    ​Minecraft.getMinecraft().displayGuiScreen(new GuiPlayerList());
    

    De l'aide s'il vous plaît, il faut mettre quoi parce que je galère avec ce que me propose Eclipse ? 😕


  • Moddeurs confirmés Rédacteurs Administrateurs

    C'est quoi ce titre ? x) En tout cas il m'a bien fait marrer ^^.
    https://youtu.be/QrYS2_wsVvw?t=23m18s
    23 minutes et 8 secondes

    En fait lorsque j'appuie sur la touche j'envoie un paquet qui va demander la liste puis le serveur renvoie un paquet avec la liste. Et c'est dans l'action de ce paquet que j'ouvre le gui.



  • Ok j'ai compris merci mais maintenant quand je l'ouvre ça me dit une erreur à la ligne du for :S :

    ​package fr.altiscraft.altiscraft.client;
    
    import net.minecraft.client.gui.GuiScreen;
    
    public class GuiPlayerList extends GuiScreen {
    
    private String[] playerList;
    
    public GuiPlayerList(String[] playerList) {
    this.playerList = playerList;
    }
    
    public void drawScreen(int x, int y, float tick) {
    super.drawScreen(x, y, tick);
    for (int i = 0; i < playerList.length; i++) {
    this.fontRendererObj.drawString(playerList*, this.width, 20 + i * 10, 0xFFFFFF);
    }
    }
    
    }
    
    


  • Et on est censé deviner comment l'erreur que tu as ?



  • Bas je peux te fourir le crash-report le voici mais bon 😕 : http://pastebin.com/DU9P5xfB


  • Moddeurs confirmés Rédacteurs Administrateurs

    playerList est null, cela ne devrait pas arriver. Envoies le code de ton paquet.



  • ​package fr.altiscraft.altiscraft.common;
    
    import cpw.mods.fml.common.network.ByteBufUtils;
    import cpw.mods.fml.common.network.simpleimpl.IMessage;
    import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
    import cpw.mods.fml.common.network.simpleimpl.MessageContext;
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import fr.altiscraft.altiscraft.client.GuiPlayerList;
    import io.netty.buffer.ByteBuf;
    import net.minecraft.client.Minecraft;
    
    public class PacketPlayerList implements IMessage {
    
    public static String[] playerList;
    public PacketPlayerList(String[] playerList)
    {
    this.playerList = playerList;
    }
    
    @Override
    public void fromBytes(ByteBuf buf) {
    this.playerList = new String[buf.readInt()];
    for(int i = 0; i < playerList.length; i++)
    {
    this.playerList* = ByteBufUtils.readUTF8String(buf);
    }
    
    }
    
    @Override
    public void toBytes(ByteBuf buf) {
    buf.writeInt(this.playerList.length);
    for(String name : this.playerList)
    {
    ByteBufUtils.writeUTF8String(buf, name);
    }
    
    }
    
    public static class Handler implements IMessageHandler <packetplayerlist, imessage="">{
    
    @Override
    @SideOnly(Side.CLIENT)
    public IMessage onMessage(PacketPlayerList message, MessageContext ctx)
    {
    Minecraft.getMinecraft().displayGuiScreen(new GuiPlayerList(message.playerList));
    return null;
    }
    }
    
    }
    
    ```</packetplayerlist,>

  • Moddeurs confirmés Rédacteurs Administrateurs

    Pas normal, le code est bon ici.
    Est-ce que autre part dans ton code tu essayes d'ouvrir ce gui ?



  • ​ private void keyInvTyped() {
    // Minecraft.getMinecraft().thePlayer.sendChatMessage("/inventaire");
    Minecraft.getMinecraft().displayGuiScreen(new GuiPlayerList(PacketPlayerList.playerList));
    // Minecraft.getMinecraft().displayGuiScreen(new GuiInv());
    Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
    }
    


  • Ce n'est pas playerList qui est null, le problème est à la ligne 16 (à moins que le code ait changé entre temps). Regarde si ton fontRendererObj est null.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Non, c'est bien la liste qui est null. fontRendererObj ne peut pas être null.
    Minecraft.getMinecraft().displayGuiScreen(new GuiPlayerList(PacketPlayerList.playerList));
    n'a rien à faire dans la fonction de la touche, lors de l'appuie sur la touche tu fois envoyer un paquet pour request la liste. Tout est expliqué dans le tutoriel, faut le suivre en entier et non partiellement …



  • C'est ce que j'ai fais plusieurs fois 😂 enfin bon juste tu as posté le code final sur GitHub ou non parce que tes liens ne renvoie que sur des tutos écrits fait par d'autres personnes 😕





  • Merci beaucoup je ne trouvais pas 🙂 Juste petite question scarex tu as quel âge si tu veux bien répondre ?



  • C'est marqué sur mon profil, pourquoi ?



  • Savoir ^^


Log in to reply