Faire une commande avec un item



  • Salut tous le monde !

    Alors, la question de la semaine !
    Comment peut-on faire exécuter au serveur une commande lors du clic droit avec un objet ?

    Par exemple, on obtient un item appelé "noblesse" et lorsque l'on clic droit avec il disparait et le serveur fais un "/manuadd nom_du_joueur noble

    Voili voilou !

    Sinon, super site ! 😉


  • Administrateurs

    player.sendChatMessage("/manuadd" + " " + player.getEntityName() + " " + "noble");



  • J'y ai pensé, mais pour cela il faudrai que le joueur possède les droits pour cette commande…
    Il faudrait donc que se soit le serveur qui envoi cette commande


  • Administrateurs

    ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
    icommandmanager.executeCommand(FakePlayerFactory.getMinecraft(world), "/manuadd" + " " + player.getEntityName() + " " + "noble");
    

    Op [Minecraft] pour être sûr que ça passe. J'ai pas testé, je suis pas sûr que les fakesPlayer puisse envoyer des commandes, mais normalement oui.



  • J'ai mis ceci dans la classe de mon item: ```java
    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    {
    ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
    icommandmanager.executeCommand(FakePlayerFactory.getMinecraft(world), "/hats" + " " + "unlock" + " " + player.getEntityName() + " " + "miner");
    }

    Mais j'ai une erreur à "world" et à "player", quelqun à une idée pourquoi ?
    Merci ;)

  • Administrateurs

    EntityPlayer par2EntityPlayer, World par3World
    par2EntityPlayer et par3World sont les noms de tes paramètres, soit tu change le nom du paramètre (ce que je fais toujours car j'aime pas les parX) soit tu changes le noms dans le code que je t'ai passé.


  • Administrateurs

    Regarde comment fonctionne les commandes serveurs ainsi que le CommandBlock.



  • @'robin4002':

    EntityPlayer par2EntityPlayer, World par3World
    par2EntityPlayer et par3World sont les noms de tes paramètres, soit tu change le nom du paramètre (ce que je fais toujours car j'aime pas les parX) soit tu changes le noms dans le code que je t'ai passé.

    J'avais déjà essayé mais là c'est toute la ligne du on item use qui est surlignée…


  • Administrateurs

    Rhooo…...
    Soit :

    public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    {
    ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
    icommandmanager.executeCommand(FakePlayerFactory.getMinecraft(par3World), "/hats" + " " + "unlock" + " " + par2EntityPlayer.getEntityName() + " " + "miner");
    return true;
    }
    

    soit :

    public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float par8, float par9, float par10)
    {
    ICommandManager icommandmanager = MinecraftServer.getServer().getCommandManager();
    icommandmanager.executeCommand(FakePlayerFactory.getMinecraft(world), "/hats" + " " + "unlock" + " " + player.getEntityName() + " " + "miner");
    return true;
    }
    

    Une méthode du type boolean doit toujours avoir un return true ou false.



  • @'robin4002':

    Une méthode du type boolean doit toujours avoir un return true ou false.

    Mais oui, suis-je bête –'
    Bon, a part unpeu de modding je ne connais rien à java, mai quand même, j'aurai du y penser...
    J'essaye sa de suite, merci !


Log in to reply