Le repair de essentials ne fonctionne pas avec des nouvelles armures créer



  • Salut all !!

    Alors j'ai un problème avec une commande /repair de Essentials,
    Alors quand j'avais MCP basique et que j'avais créer mes armures en modifiant les class de minecraft le /repair fonctionner 
    Par contre avec MCP/Forge quand je créer mon mod avec des armures dans une nouvele class le /repair ne fonctionne pas il ne détecte pas les nouvelle armures

    Quelqu'un pourrait me dire comment faire ? Dois-je modifier mon Mod pour rendre le /repair fonctionnel ou dois-je modifier la partie de essentials ?

    Si c'est la partie essentials, quelqu'un pourrait m'aider un peu ? Merci


  • Administrateurs

    Salut, il me semble que la question a déjà été posé quelque part, c'est parce que Bukkit passe par une autre méthode, donc pas possible d'appliquer le /repair à un mod forge.
    Si ça marche en vanilla, c'est parce que tu code directement bukkit et donc que tu implémentes cette méthode.



  • sinon tu créer une commande /repair qui va réparer les armure de ton mod



  • D'accord je suis partant pour créer une commande genre /repair mod

    Genre dans ça je dois changer quoi https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/commands/Commandrepair.java

    Il passe directement par la class Item non ?



  • Par Minecraft forge, quand tu crées une commande tu as un paramètre "ICommandSender" (qui est soit le joueur, soit le serveur directement)

    Donc tu check (avec instanceof), et s'il s'agit d'un joueur, alors pour chaque Item des ItemStack de son inventaire qui est un ItemArmor, ItemSword ou ItemTools (encore une fois tu check avec un instanceof), tu met la durabilité de l'itemstack à fond

    (Dans la théorie c'est exactement ça mais je suis sur mon téléphone désolé…)

    http://www.minecraftforge.net/wiki/Server_Command 
    Un truc du genre: (J'ai pas le nom des fonctions exactement mais elles existent)

    
    void processCommand(ICOMMANDSENDER sender, String [] args)
    {
           if (sender instanceof EntityPlayer)
           {
               for (ItemStack is : ((EntityPlayer) sender).inventory.getItems ())
                {
                     if (is.getItem() instance ItemArmor)
                             is.setDurability (max);
                  }
             }
    }