Souris invisible dans un GUI



  • Bonjours, je poste un sujet pour aider un ami qui n'a pas de compte MFF x) donc voila son problème, à vous les studios: 😄

    Bonjours,
    J'ai crée un GUI mais lorsque celui s'ouvre la souris ne s'affiche pas, auriez-vous une solution ?
    Celui-ci est ouvert à la réception d'un packet serveur

    
       public PacketServeur () {
       }
    
       @Override
       public void fromBytes(ByteBuf buf) {
       }
    
       @Override
       public void toBytes(ByteBuf buf) {
       }
    
       public static class Handler implements IMessageHandler <packetserveur, imessage="">{
           @Override
           public IMessage onMessage(final PacketServeur message, MessageContext ctx) {
                   EntityPlayer player = Minecraft.getMinecraft().thePlayer;
                   player.openGui(FortifyMod.instance, 8, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ);
    //                    System.out.println("Ok");
               return null;
           }
       }
    
    
    public class GuiFFiche extends GuiScreen
    {
    EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
    
    private JoinAssautABtt joinA;
    private JoinAssautDBtt joinD;
    private OutBtt out;
    
    private static final ResourceLocation background = new ResourceLocation(FortifyMod.MODID, "textures/gui/faction/card.png");
    
    @Override
    public void drawScreen(int mouseX, int mouseY, float partialTicks)
    {
    
    GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
    this.mc.getTextureManager().bindTexture(background);
    int x = (this.width - 512 + (512 - 442)) / 2 + 111;
    int y = (this.height - 512 + (512 - 392)) / 2 + 90;
    this.drawTexturedModalRect(x, y, 0, 0, 221, 196);
    
    this.fontRendererObj.drawString(ChatFormatting.WHITE + "Rejoindre la défense ", x + 119, y + 109, 0);
    this.fontRendererObj.drawString(ChatFormatting.WHITE + "Rejoindre l'attaque ", x + 119, y + 125, 0);
    this.fontRendererObj.drawString(ChatFormatting.WHITE + "Quitter ", x + 119, y + 141, 0);
    
    super.drawScreen(mouseX, mouseY, partialTicks);
    
    GlStateManager.disableLighting();
    GlStateManager.disableBlend();
    
    updateButtons();
    updateScreen();
    
    }
    
    @Override
    public boolean doesGuiPauseGame()
    {
    return false;
    }
    
    public void initGui()
    {
    
    int x = (this.width - 512 + (512 - 442)) / 2 + 111;
    int y = (this.height - 512 + (512 - 392)) / 2 + 90;
    
    this.buttonList.add(this.joinA = new JoinAssautABtt(4, x + 199, y + 125, ""));
    this.buttonList.add(this.joinD = new JoinAssautDBtt(5, x + 199, y + 108, ""));
    
    this.buttonList.add(this.out = new OutBtt(6, x + 199, y + 142, ""));
    
    }
    
    @Override
    protected void actionPerformed(GuiButton button) throws IOException
    {}
    
    public void updateButtons()
    {
    
    }
    
    protected void keyTyped(char par1, int par2) throws IOException
    {
    super.keyTyped(par1, par2);
    }
    
    @Override
    public void updateScreen()
    {
    super.updateScreen();
    }
    
    protected void mouseClicked(int x, int y, int btn) throws IOException
    {
    super.mouseClicked(x, y, btn);
    }
    }
    

    Merci d'avance  :)</packetserveur,>


  • Administrateurs

    Salut,

    Il faut utiliser la balise java pour mettre du code afin que celui-ci soit formaté correctement, que les n° de lignes apparaissent et qu'il soit coloré.
    J'ai édité le message. Merci d'y penser à l'avenir.

    Pour ouvrir un gui sans container depuis un handler client d'un paquet, il faut faire comme ceci :

       public static class Handler implements IMessageHandler <packetserveur, imessage="">{
           @Override
           @SideOnly(Side.CLIENT)
           public IMessage onMessage(final PacketOpenAdminGui message, MessageContext ctx)
           {
               IThreadListener thread = FMLCommonHandler.instance().getWorldThread(ctx.netHandler);
               if(thread.isCallingFromMinecraftThread())
               {
                   this.process();
               }
               else
               {
                   thread.addScheduledTask(new Runnable()
                   {
                       @Override
                       public void run()
                       {
                           Handler.this.process();
                       }
                   });
               }
               return null;
           }
    
           @SideOnly(Side.CLIENT)
           private void process()
           {
               Minecraft.getMinecraft().displayGuiScreen(new GuiFFiche());
           }
       }
    

    Pas besoin de la fonction openGui qui doit être utilisé côté serveur et qui est avant tout pensé pour les container.</packetserveur,>



  • Desoler je sais pas faire :c mais merci d'avoir changé… 😄 (oui je suis nul et?)



  • Non tes pas nul, ça faut le savoir, et si ce que tu avais fait n'avait pas été dans un packet (exécuté sur un autre thread que le thread client), ça aurait marché ^^


  • Administrateurs

    Je pense qu'il disais ça pour la balise java.
    Et tout est expliqué dans la discussion "à lire avant de poster" mais bon, personne ne la lit …