Résolu Ailes,Monture,item qui permet de spawn une entity,MultiTool
-
Bon, j’ai la réponse au sujet, en tout cas chez moi ça marche (avec une pomme, donc rajoute une condition si l’armure est portée) , mets ce code dans ta classe qui gère les évènements:
private long temp; @SubscribeEvent public void fly(LivingUpdateEvent e) { if(e.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entity; player.capabilities.allowFlying = player.inventory.hasItem(Items.apple) && this.temp > 0; this.temp = !player.inventory.hasItem(Items.apple) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp; if(!player.capabilities.allowFlying) player.capabilities.isFlying = false } }
@Plaigon J’ai pas utilisé le getTotalWorldTime() car je sais pas comment il marche, il me semble que c’est relatif au temps de minecraft ? Dans tous les cas ça fonctionnera mieux en utilisant une clock basique
-
private long temp; @SubscribeEvent public void fly(LivingUpdateEvent e) { if(this.armorType == 1) { if(e.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entity; player.capabilities.allowFlying = player.inventory.hasItem(enderdeath.FeatherChestplate) && this.temp > 0; this.temp = !player.inventory.hasItem(enderdeath.FeatherChestplate) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp; if(!player.capabilities.allowFlying) player.capabilities.isFlying = false; } } }
comme sa ???
-
@‘leo01418’:
private long temp; @SubscribeEvent public void fly(LivingUpdateEvent e) { if(this.armorType == 1) { if(e.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entity; player.capabilities.allowFlying = player.inventory.hasItem(enderdeath.FeatherChestplate) && this.temp > 0; this.temp = !player.inventory.hasItem(enderdeath.FeatherChestplate) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp; if(!player.capabilities.allowFlying) player.capabilities.isFlying = false; } } }
comme sa ???
non, this ne fonctionnera pas ici. Tu es bien dans ta classe qui enregistre tes évènements ?
-
Nn j’ai mis sa dans ma classe de l’armure
-
@‘leo01418’:
Nn j’avais mis sa dans ma classe de l’armure
Le code pour toi c’est ça :
private long temp; @SubscribeEvent public void fly(LivingUpdateEvent e) { if(e.entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)e.entity; this.temp = !(player.inventory.armorInventory[1].getItem() == enderdeath.FeatherChestplate) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp; player.capabilities.allowFlying = this.temp > 0; if(!player.capabilities.allowFlying) player.capabilities.isFlying = false; } }
Cependant tu dois le mettre dans une classe qui enregistre tes évènements, y’a pleins de tutos pour ça.
-
j’ai mis sa ```java
private long temp;@SubscribeEvent
public void fly(LivingUpdateEvent e) {
if(e.entity instanceof EntityPlayer) {
EntityPlayer player = (EntityPlayer)e.entity;
player.capabilities.allowFlying = player.inventory.hasItem(enderdeath.FeatherChestplate) && this.temp > 0;
this.temp = !player.inventory.hasItem(enderdeath.FeatherChestplate) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp;
if(!player.capabilities.allowFlying)
player.capabilities.isFlying = false;
}
}Sa marche mais j'arrive pas à revolé
-
essaie de jeter l’item et de le reprendre et la tu pourras revoler, c’est pas ce que tu voulais ?
PS: Je vais pas te faire tout ton code à chaque fois, essaie de suivre un tuto java
-
Au faite je peux volé quand je met le plastron et que je l’enlevé je peux volé un certain temps,le codage sert à rechargé le temps de vol?
Ps:Excuse-Moi j’essaierais de me débrouillé tout seul
-
N’oublie pas le player.sendPlayerAbilities()
-
@‘Snowy_1803’:
N’oublie pas le player.sendPlayerAbilities()
chez moi ça marche sans.
[size=smallAu faite je peux volé quand je met le plastron et que je l’enlevé je peux volé un certain temps,le codage sert à rechargé le temps de vol?]
Si t’as copié mon dernier code normalement quand tu l’enlèves tu tombes, mais il faut que tu vérifies que l’ItemStack est pas null dans la première condition ternaire.
-
Au faite quand je met le plastron je peux volé une fois et ensuite je peux l’avoir pendant 10 minutes je peux pas revolée donc je dois enlevée le plastron le remettre et la je n’arrive plus à revolé et je dois enlevé le plastron pour revolé et j’ai mis sa dans ma classe d’évent
-
@‘leo01418’:
Au faite quand je met le plastron je peux volé une fois et ensuite je peux l’avoir pendant 10 minutes je peux pas revolée donc je dois enlevée le plastron le remettre et la je n’arrive plus à revolé et je dois enlevé le plastron pour revoler
Oui, c’est ce que le code fait. Si tu veux qu’après 5 autres secondes tu puisse revoler y’a pas grand chose à changer, je te laisse le deviner par toi-même je suis au taff la.
-
Ok Excuse x)
-
Le problème avec le code de @Dylem, c’est que la variable temp est commune à tous les joueurs. Essaie ton code en multi, tu verras que tous les joueurs partagent la même valeur. Essaie soit d’adapter ton code sans utiliser de variable, soit de te servir de world.getTotalWorldTime() (genre if (world.getTotalWorldTime % 5 * 20 == 0)) ou encore soit d’enregistrer ta variable temp dans les tags du joueur.
-
Oui j’ai testé et tout les joueur partage la même valeur
Mais je ne vois pas comme faire -
Comme Sa
private long temp; private World world; @SubscribeEvent public void fly(LivingUpdateEvent e) { if(e.entity instanceof EntityPlayer) { if(world.getTotalWorldTime() % 5 * 20 == 0); { EntityPlayer player = (EntityPlayer)e.entity; player.capabilities.allowFlying = player.inventory.hasItem(enderdeath.StickFly) && this.temp > 0; this.temp = !player.inventory.hasItem(enderdeath.StickFly) ? 0 : this.temp == 0 ? Clock.systemDefaultZone().millis() : Clock.systemDefaultZone().millis() - temp >= 5000 ? -1 : this.temp; if(!player.capabilities.allowFlying) player.capabilities.isFlying = false; } } }
-
-> tag nbt.
Et non, pas comme ça, la world est null, tu vas te manger un npe. -
Il faut que je mette quoi à???
%(#666600)[[font=monospace].]%(#000000)[[font=monospace]getTotalWorldTime]%(#666600)[[font=monospace]()]
-
Il faudrait surtout que t’apprennes le Java, car là franchement en + de ne respecter aucune convention, tu ne comprends rien du code. Écoute ce n’est pas à nous de te pondre le code tout bien, tout fait. C’est à toi de posséder une base et seulement après on pourra te venir en aide. La méthode getTotalWorldTime() est à utiliser comme ceci si tu souhaites savoir lorsque 5 secondes viennent d’être écoulées : if(player.worldObj.getTotalWorldTime() % 5 * 20 == 0)
-
J’ai à profondi mes peu connaissance en java grâce à ceci j’ai su faire le codage des ailes merci beaucoup