Augmeter ses stats de déplacment dans l'eau + Touche personalisée
-
AAAh c’est ça ce que tu voulait dire pas le null check… My Bad.
Bon par contre, quand j’appuie sur la touche dans l’eau et avec le pantalon, je crash. Je pense que Minecraft aime pas trop la boucle que j’ai fait. Enfin c’est pas un crash a propreument parlé, c’est plutot un GROS Freeze, suivis d’un Ne Réponds Pas, suivi d’un crash quand tu ferme le jeu. Mais… Pas de crash-report.
Sinon, tous fonctionne
(Pantalon = Saute pas - Eau = Saute pas - Pantalon+Eau = Saute/Crash
- Rien = Saute pas ) -
C’est surement le boucle while qu’il n’aime pas.
-
Je l’ai enlevé, et ça fontionne. Mais par contre, si on barbotte dans 1 bloc d’eau, et qu’on active les airbags, on décole a plus de vingts blocs de haut… Et donc il y a des chances de décéder…
Comment faire pour que je monte tant que je suis dans l’eau, sans boucles while :S ?
EDIT = on part a 29 bloc de haut
-
Renvoi ton code actuel.
-
private void keyTestTyped(EntityPlayer player) { // La touche vient d'être appuyé !! if(player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == ScaphLeggings.airbag_leggings) { if(player.isInWater()){ player.motionY = 4.0F; } else { return; } } }C’est normal que le motionY soit a 4.0F
-
Faudrait mettre un tag dans le joueur (player.getEntityData().setBoolean(“ascend”, true);) lors de l’appuie de la touche s’il a les jambières et qu’il est dans l’eau et ensuite dans un TickEvent.PlayerTickEvent fait que si le joueur à le tag (event.player.getEntityData().getBoolean(“ascend”)) alors s’il n’est pas dans l’eau tu le retire et tu mets son motionY sur 0, sinon s’il est dans l’eau tu mets son motionY sur 2.5F.
-
OMG c’est super complexe…
je vais tenter d’analyser sa plus en profondeur, et voir ce que je peut faire.
Sa me parait super dur !Si je ne me trompe pas, il fau tutiliser les Extends Entity trucs ?
-
Heu non pas du tout.
-
Sans Extand Entity Properties, comment mettre un tag au joueur ?
On peut le mettre directement dans la MainClass/ClientProxy/CommonProxy ? -
@‘robin4002’:
Faudrait mettre un tag dans le joueur (player.getEntityData().setBoolean(“ascend”, true);) lors de l’appuie de la touche s’il a les jambières et qu’il est dans l’eau et ensuite dans un TickEvent.PlayerTickEvent fait que si le joueur à le tag (event.player.getEntityData().getBoolean(“ascend”)) alors s’il n’est pas dans l’eau tu le retire et tu mets son motionY sur 0, sinon s’il est dans l’eau tu mets son motionY sur 2.5F.
Comme l’a dit Robin, tu fais player.getEntityData.setBoolean(“unNom”, taValeur)
-
Comment on fait pour le TickEvent ?
C’est une classe ou une méthode ? -
C’est un event, donc ça s’utilise comme n’importe quel event.
-
Bon, j’ai pas tous compris.
Les events sont trop compliqué pour moi
J’ai improvisé, et j’ai fait a ma sauce.
Sans surprise, ça ne fonctionne pasClient
private void keyTestTyped(EntityPlayer player) { // La touche vient d'être appuyé !! if(player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == ScaphLeggings.airbag_leggings) { if(player.isInWater()) { player.getEntityData().setBoolean("airbag", true); } else { player.getEntityData().setBoolean("airbag", false); } } }Jambières
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { if(player.getEntityData().getBoolean("ascend")) { player.motionY += 2.5F; } } -
-
Enfaîte, c’est fonctionnel. J’avais juste fait une faute dans la classe des jambières (Je vous laisse chercher
)
Sauf, que c’est TROP fonctionnel

PS : je suis monté jusqu’a environ 100b de haut ( Base 64 ), puis j’ai enlevé les jambières. Je suis monté jusqu’a environ 20 000 -
Normal, tu as mis 20.0F il me semble ?
le nombre que tu mets c’est la distance qui se parcouru au prochain tick, donc si tu mets 2 en y, le joueur sautera en l’air de 2 blocks. -
J’ai mis += 2.5F
L’erreur est autre part. Tellement visible qu’elle en devient invisible
(Faut surement que j’enlève le +
)
PS = le fait que je décole vient dfait que le boolean n’est jamais mis en False je pense
Ouais, enfaite, le false est mis vachement tard, ou jmais
J’ai tenté un truc, mais rien n’y faitprivate void keyTestTyped(EntityPlayer player) { // La touche vient d'être appuyé !! if(player.inventory.armorItemInSlot(1) != null && player.inventory.armorItemInSlot(1).getItem() == ScaphLeggings.airbag_leggings) { if(player.isInWater()) { player.getEntityData().setBoolean("airbag", true); } if(!player.isInWater()) { player.getEntityData().setBoolean("airbag", false); } } } -
Avec onArmor tick c’est bon aussi.
Et en effet, ça serait plutôt comme ça :if(player.getEntityData().getBoolean("airbag")) { if(player.isInWater()) { player.motionY = 2.5F; } else { player.getEntityData().setBoolean("airbag", false); } } -
Je m’envole toujours.
Doit avoir un problème je sais pas ou mais le false n’est jamais appliquéEDIT : Vous n’avez toujours pas trouvé mon erreur dans mon précédent code ?

-
@‘Eryah’:
Je m’envole toujours.
Doit avoir un problème je sais pas ou mais le false n’est jamais appliquéEDIT : Vous n’avez toujours pas trouvé mon erreur dans mon précédent code ?

Si, la preuve dans le code que je viens de te donner l’erreur est corrigé.
Essayes avec juste 1.0F alors ?