Click droit sur une entity exécute command



  • Bonjour, je cherche depuis bientôt 3h a que quand je fasse un click droit sur mon entity (que j'ai crée) ça excute une command a la console du serveur

    Voila ma classe Event:

    public class EventPNJ1
    {
        @SubscribeEvent
        public void onRightClickPNJ1(PlayerInteractEvent e)
        {
            if(e.entity instanceof EntityPlayer)
            {
                if(EntityPlayer (e.action.RIGHT_CLICK_AIR))
                {
                    MinecraftServer minecraftserver = MinecraftServer.getServer();
                    net.minecraft.entity.player.EntityPlayer entity = null;
                    if (minecraftserver != null)
                        minecraftserver.getCommandManager().executeCommand((EntityPlayer) entity, "say salut");
                }
            }
    
        }
    
        private boolean EntityPlayer(Action rightClickAir)
        {
    
            return false;
        }
    }
    

    Ci possible crée une permission et vérifier si le joueur la avant de excuter la command.



  • Tu as plusieurs problèmes dans ton code actuellement :

    • C'est inutile de faire un null check sur minecraftserver car MinecraftServer.getServer() ne retourne jamais null pendant qu'un monde est lancé.
    • Ta variable "entity" est toujours nulle donc la commande ne peut pas s'éxécuter, tu peux par exemple remplacer son utilisation par "minecraftserver" vu que lui aussi peut envoyer des commandes.


  • Ah j'ai refait tout mon code et la il marche

    Il suffit d'ajouter ceci dans la classe du mob

    
    public boolean interact(EntityPlayer entity) 
        {
            super.interact(entity);
            int i = (int) this.posX;
            int j = (int) this.posY;
            int k = (int) this.posZ;
    
            if (true) 
            {
    
                if (true) 
                {
                    MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "say salut");
                }
    
            }
    
            return true;
        }
    
    

    C'est plus propre je trouve et je suis débutant dans le java je pratique depuis bientôt 4mois

    Merci de m'avoir aider.