Aucun mouvement.
-
Bonsoir,
Petite question qui peut paraître très simple, comment empêcher le joueur de bouger?Pour l’instant j’utilise ça:
@SubscribeEvent @SideOnly(Side.CLIENT) public void onTickEvent(ClientTickEvent event) { if (Minecraft.getMinecraft().theWorld != null) { EntityPlayer player = Minecraft.getMinecraft().thePlayer; EEPRestrained props = EEPRestrained.get(player); if (player != null && props != null) { if (props.isRestrained()) { player.setVelocity(0.0D, 0.0D, 0.0D); } } } }
Mais ça ne fait que le relentir(il ne va vraiment pas vite), mais je voudrais le stopper complètement.
-
Tu n’as accès qu’aux ticks côté client ? D’ailleurs, tu devrais plutôt utiliser un tick de joueur (PlayerTickEvent) au lieu du tick client.
-
Je l’ai mis Client pour utiliser ça:
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
-
Tu dois faire ce genre de vérification coté serveur pour des questions de sécurité.
-
Ouais mais je n’ai pas besoin de sécurité pour cette partie de code là.
Je evux juste que le joueur ne puisse plus bouger.
-
player.motionX = player.motionY = player.motionZ = 0.0D;
Dans ton PlayerTickEvent.
-
Il bouge encore:
-
Si tu as accès au tick serveur, tu peux utiliser les PlayerTick et stocker ses coordonnées avant le tick et replacer le joueur à sa position initiale après le tick. Sinon, si tu n’as accès qu’aux ticks client, il faut empêcher le motion d’être incrémenter.
-
Pour le PlayerTick, ça va mais comment je fais pour empêcher l’incrémentation.
-
Côté client : avant chaque tick du joueur tu mets le motion à 0;
-
essaye d’ajouter
player.isSprinting() = false; player.jump() = false;
j’imagine que tu arrive a te déplacer en courant / sautant non?
-
Non, le saut est impossible les mouvements x,z sont possibles et je en peux pas sprinter
@Scarex C’est déjà ça que je fais, non?
-
çà dépend où tu as mis le code. Mais je le redis : c’est mieux de le faire côté serveur.
-
Je vais essayer ça, mais il n’y aura pas un latence comme sur bukkit?
-
après sinon tu peut y allez en mode barbare si tu tient vraiment a passer par le client
IAttributeInstance attribute = player.getEntityAttribute(SharedMonsterAttributes.movementSpeed);
attribute.applyModifier(new AttributeModifier(“Slow”,-100D, 0).setSaved(true));mais faudra penser a refaire la même choses mais en inverse
et faudra penser a disable le jump -
Et puis si le jeu plante alors que tu n’as pas remis le mouvementSpeed à 0, le joueur risque de ne plus jamais pouvoir avancer.
-
j’ai dit que c’était bourrin xD Mais la il bougeras plus c’est sure
Mais en passant ça dans un living évent je pense que même si le jeu crash il devrait pas avoir de probleme
-
@VirusZ ça fonctionne mais l’effet de zoom est…
-
réduit la valeur a -1D voir 0D j’ai mis -100D pour le test mais essaye de tripoter les valeur pour arriver a quelque choses de plus propre
-
Non, dès qu’il a slow ça zoom à fond…