Ailes,Monture,item qui permet de spawn une entity,MultiTool
-
Tu ne mets jamais FlyOn à false
Et essaye de respecter la convention java -
Si, il mets toujours flyOn à false puisque il mets des = au lieu des ==
-
Il faut que tu fasse quelque chose comme ça (pas éxactement ça, mais c’est l’idée) :
public static int counter = 0; @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { player.capabilities.allowFlying = !player.capabilities.allowFlying ? [font=monospace**this**][font=monospace.][font=monospacearmorType] == 1 : !counter >= 100; // 100 car 20 ticks par seconde counter = player.capabilities.allowFlying ? counter + 1 : 0; } -
Vu son code, je ne pense pas qu’il comprenne encore bien les conditions ternaires sans explication.
-
@‘Toutoune1008’:
Vu son code, je ne pense pas qu’il comprenne encore bien les conditions ternaires sans explication.
J’ai enlevé le reset du counter, car sinon ça va se relancer en continu, et j’ai documenté le code. Faudrait reset le counter quand on enlève l’armure (c’est pas trop compliqué t’inquiète)
public static int counter = 0; /* Si le joueur ne vole pas et que l'Item est porté sur le plastron alors il vole, si le joueur vole et que le counter est à 5 secondes alors il ne vole plus Si le joueur vole alors le counter s'incrémente tous les ticks 100 car 20 ticks par seconde */ @Override public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { player.capabilities.allowFlying = !player.capabilities.allowFlying ? [font=monospace**this**][font=monospace.][font=monospacearmorType] == 1 : !counter >= 100; if(player.capabilities.allowFlying) ++counter; } -
Je peut toujours volé à l’infini
-
Je crois que je me suis mal exprimé ce que j’essaie de faire c’est un temps de vole et non un cooldown entre chaque vole
-
Pourquoi faire compliqué quand on peut faire simple x)
@SubscribeEvent public void livingEntity(LivingUpdateEvent event) { if (event.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.entityLiving; if((player.getCurrentArmor(0) || player.getCurrentArmor(1) || player.getCurrentArmor(2) || player.getCurrentArmor(3)) && (player.getCurrentArmor(0).getItem() == TaClasseMod.tonCasque || player.getCurrentArmor(0).getItem() == TaClasseMod.tonPlastron || player.getCurrentArmor(0).getItem() == TaClasseMod.tesJambieres || player.getCurrentArmor(0).getItem() == TaClasseMod.tesBottes)) player.capabilities.isFlying = true; else player.capabilities.isFlying = false; } } -
@‘Plaigon’:
Pourquoi faire compliqué quand on peut faire simple x)
@SubscribeEvent public void livingEntity(LivingUpdateEvent event) { if (event.entityLiving instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer)event.entityLiving; if((player.getCurrentArmor(0) || player.getCurrentArmor(1) || player.getCurrentArmor(2) || player.getCurrentArmor(3)) && (player.getCurrentArmor(0).getItem() == TaClasseMod.tonCasque || player.getCurrentArmor(0).getItem() == TaClasseMod.tonPlastron || player.getCurrentArmor(0).getItem() == TaClasseMod.tesJambieres || player.getCurrentArmor(0).getItem() == TaClasseMod.tesBottes)) player.capabilities.isFlying = true; else player.capabilities.isFlying = false; } }Je crois que tu n’as pas compris son problème… Il veut voler seulement 5 secondes (et en quoi c’est plus simple d’écrire 10 lignes au lieu de 2 ? x)
[size=smallJe peut toujours volé à l’infini]
Essaie de cast dans un booléen différent, je testerai ce soir si je fais pas de soirée
-
Le formatteur de mff a fait plein de retour a la ligne, chez moi sa n en fait pas autant.
Apres si il veut juste 5 sec a lui d adapter son code avec la variable world.getTotalWorldTime()
Et puis @Dylem, essaie au moins d adapter ton code avec getTotalWorldTime(), sinon il devra enregistrer la var counter dans les tags de l item, ce qui au final ne sera pas une solution + facile… -
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.