Détecter si le joueur est en mouvement



  • Bonjour,
    J'aimerais faire une condition qui s'active uniquement quand le joueur est en mouvement mais je ne trouve pas de moyen de détecter si le joueur est en mouvement


  • Administrateurs

    Salut,
    Suffit de vérifier que player.motionX ou player.motionZ n'est pas égale à 0.



  • Ok Merci !

    EDIT : Aparemment ça marche pas
    j'ai utilisé ce code

    
    public void onUpdate(ItemStack stack, World worldd, Entity player, int i, boolean b)
        {       
            ItemStack equip = ((EntityPlayer)player).getCurrentEquippedItem();
    
            if(equip == stack)
            {
                if(player.motionX != 0 || player.motionZ != 0 || player.motionY != 0)
                {
                    //Spawns a particle. Args particleName, x, y, z, velX, velY, velZ
                    worldd.spawnParticle("crit", player.posX, player.posY - 0.8, player.posZ, 0.0D, 0.0D, 0.0D);
                    worldd.spawnParticle("crit", player.posX, player.posY - 0.6, player.posZ, 0.0D, 0.0D, 0.0D);
                    worldd.spawnParticle("crit", player.posX, player.posY - 0.4, player.posZ, 0.0D, 0.0D, 0.0D);
                    worldd.spawnParticle("crit", player.posX, player.posY - 0.2, player.posZ, 0.0D, 0.0D, 0.0D);
                    worldd.spawnParticle("crit", player.posX, player.posY - 1, player.posZ, 0.0D, 0.0D, 0.0D);
                    worldd.spawnParticle("crit", player.posX, player.posY - 1.2F, player.posZ, 0.0D, 0.0D, 0.0D);
                }
            }
        }
    
    

    Je sais pas ou j'ai fait une erreur …


  • Administrateurs

    Correction, si le joueur se déplace vers des coordonnées négatives, les motions sont négatives.

    Donc il faut mettre != 0 et non > 0



  • C'est bon ça fonctionne merci !
    EDIT : Ah ben non en fait, il faut que je soit en train de voler dans les airs pour que ça fonctionne 😕


  • Administrateurs

    J'ai dis x et z, pas y x)
    motionY est négatif si le joueur tombe, positif s'il monte. Sinon 0.

    (concernant ta première condition, remplaces juste par if(b). Cette variable vaut true si l'item est porté en main, sinon false).



  • Ca fonctionne , merci !