Keybinding + Gui qui bug



  • salut a tous c'est encore moi j'ai un énorme bug concernant mon keyBinding:
    il y a 4 GUI:
    playerFR
    playerEN
    AdminFR
    AdminEN

    mais problème, seul les GUI player s'ouvre (même a la place des GUI Admin), et si je n'est pas d'item en main le jeu crash

    mes code:

    GuiHandler: http://pastebin.com/DAJ1VGtN

    la fonction keyUp: http://pastebin.com/Cv3HVGUy

    le crash quand on a pas d'item: http://pastebin.com/sWEvwRCn

    de plus j'aimerai savoir comment on fait pour savoir si un joueur vise une entité(mob, joueur)


  • Administrateurs

    Normal que cela crash quant tu n'as pas d'item en main, tu as oublié de checker quand l'item est null.


  • Administrateurs

    if(kb.keyCode == questKey.keyCode && mc.currentScreen == null && player.getCurrentEquippedItem().getItem() != null && player.getCurrentEquippedItem().getItem()== CoeQuestMain.quest)
    Toujours mettre un null check.
    et pour le else :
    else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null)
    Parce que sinon ça ne fonctionnera jamais.

    Et pourquoi faire quatre gui ? o_O. Deux gui suffit, il existe des fonctions pour traduire des string depuis les fichiers lang …



  • oue tu as raison robin, je vais utiliser les I8nString plutôt.

    EDIT:
    j'ai encore une erreur, ca crash quand ya pas d'item:

    
    @Override
    public void keyUp(EnumSet <ticktype>types, KeyBinding kb, boolean tickEnd)
    {
    
    EntityPlayer player = FMLClientHandler.instance().getClient().thePlayer;
    Minecraft mc = Minecraft.getMinecraft();
    
    if(kb.keyCode == questKey.keyCode && mc.currentScreen == null && player.getCurrentEquippedItem().getItem() != null && player.getCurrentEquippedItem().getItem()== CoeQuestMain.quest)//partie ADMIN
    {
    FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 2, player.worldObj, (int)Math.floor(player.posX), (int)Math.floor(player.posY), (int)Math.floor(player.posZ));
    }
    
    else if(kb.keyCode == questKey.keyCode && mc.currentScreen == null)
    {
    FMLNetworkHandler.openGui(player, CoeQuestMain.instance, 1, player.worldObj, (int)Math.floor(player.posX), (int)Math.floor(player.posY), (int)Math.floor(player.posZ));
    }
    }
    
    

    erreur: NPE

    </ticktype>


  • Administrateurs

    C'est de ma faute, c'est player.getCurrentEquippedItem() != null et non player.getCurrentEquippedItem().getItem() != null



  • merci ca marche ❤