Mod Résolu Forge Event équivalent PlayerMove ( bukkit )

Aang23

= 157
16 Mai 2017
176
20
75
20
Existe t'il un event sous forge n'etant déclenché que lorsque qu'un joueur se déplace ? Avec EntityLivingEvent et EntityEvent je n'obtient que des crashs.
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 915
159
3 004
347
27
Alsace
www.minecraftforgefrance.fr
Salut,
Tu peux utiliser un event de tick (TickEvent.PlayerTickEvent ou LivingUpdateEvent) et check que entity.motionX ou motionZ est différent de 0.
 

Aang23

= 157
16 Mai 2017
176
20
75
20
Merci, mais la solution TickEvent.PlayerTickEvent ne fonctionne plus une fois sur serveur.
L'event n'est simplement plus appelé.
 

robin4002

Expert en informatique et systèmes d'information
Staff
Responsable technique
Responsable forum
12 Novembre 2012
20 915
159
3 004
347
27
Alsace
www.minecraftforgefrance.fr
Ah, je sais pourquoi.
Les motions valent toujours 0 côté serveur. (et au passage tu ne peux pas cancel LivingUpdateEvent).

Du-coup je ne sais pas trop comment détecter un mouvement côté serveur :/
 

Aang23

= 157
16 Mai 2017
176
20
75
20
Le cancel ne posait aucun problème.

Comme c'est un mod type "authme" je n'ai besoin de bloquer le joueur qu'au début.

Au login je peux enregistrer ses coordonnées dans un Map, et lors de cet event le TP à ces positions...
Même si ce serait mieux sans.
Est ce qu'il y a une autre possibilité ? Ou un moyen que les motion ne soit pas égales à 0?
 
Dernière édition:

Aang23

= 157
16 Mai 2017
176
20
75
20
Je vais déjà essayer avec la fonction de tp, qui devrait permettre le nécessaire

Je ne voit pas comment ce serai possible de changer ceci sauf si forge ou une API l'implémente.
Un mod 1.6.2 utilisait ce genre de fonction, je vais également regarder il y a peu être une solution.

Voilà tout ce que j'ai trouvé ressemblant à ceci :

Code:
private void cancel(EntityEvent e) {
       if (Vars.modEnabled) {
           if (((e.entity instanceof EntityPlayer))
                   && (!((Boolean) Auth.players.get((EntityPlayer) e.entity))
                           .booleanValue()))
               e.setCanceled(true);
       }
   }

J'ai fini pas trouver une solution consistant a comparer au coordonés de connexion avec les nouvelles.
 
Dernière édition: