Résolu Problème de projectile
-
Mon projectile est créer, peux se lancer mais aucune collision. Voila la fonction concerné :
/** * Called when this EntityFireball hits a block or entity. */ protected void onImpact(MovingObjectPosition par1MovingObjectPosition) { if (!this.worldObj.isRemote) { if (par1MovingObjectPosition.entityHit != null) { par1MovingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeFireballDamage(this, this.shootingEntity), 6.0F); } this.worldObj.setBlock((int)this.posX, (int)this.posY, (int)this.posZ, Block.getBlockById(87)); this.worldObj.newExplosion((Entity)null, this.posX, this.posY, this.posZ, (float)this.field_92057_e, true, this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing")); this.setDead(); } }
-
Bon, j’ai un peu avancé en réalité le bug ne vient pas de la sa vient encore une fois de ceci :
final Minecraft minecraft = FMLClientHandler.instance().getClient(); final EntityPlayer player = minecraft.thePlayer;
Mias je ne vois pas comment le remplacé dans cette event :
@SubscribeEvent public void keyinput(KeyInputEvent event) { }
-
KeyInputEvent n’est que déclenché en client, si tu veux faire des actions côtés serveur avec, il faut envoyer un paquet.
-
Encore c’est packet, il n’y as pas d’event autre que celui la qui effectue la même chose ?
-
L’input de touches, c’est uniquement côté Client, donc oui, les packets sont obligatoires ^^
-
Et je doit faire quoi donc ?
-
Quand la touche voulue est pressée, tu envoies un packet. Je te conseille de prendre les classes de l’API FFMT qui gèrent les packets ( Juste a donner les crédits dans ton mod ) pour avoir un système de packet efficace.
-
au pire j’ai une autre idée j’ai juste a faire en sort que quand j’appuie sur la touche un boolean devient true et après je récupéré cette variable dans un autre event no ?___Bon je up pour dire que j’avance sa à l’air de marcher le problème c’est que quand j’appuie sur ma touche la valeur n’a pas le temps d’être envoyer a mon event player avant d’être retourner 0, voila mais deux event :
@SubscribeEvent public void alterationPower_1(PlayerEvent event) { ExtendedEntityPropAlteration props = ExtendedEntityPropAlteration.get(event.entityPlayer); if(props.projectile == 1) { Vec3 look = event.entityPlayer.getLookVec(); EntityFireProjectile entityfireball = new EntityFireProjectile(event.entityPlayer.worldObj, event.entityPlayer, 1, 1, 1); entityfireball.setPosition(event.entityPlayer.posX + look.xCoord * 2, event.entityPlayer.posY + look.yCoord * 2, event.entityPlayer.posZ + look.zCoord * 2); entityfireball.accelerationX = look.xCoord * 0.1; entityfireball.accelerationY = look.yCoord * 0.1; entityfireball.accelerationZ = look.zCoord * 0.1; event.entityPlayer.worldObj.playSoundAtEntity(event.entityPlayer, "fire.ignite", 0.5F, 0.4F); event.entityPlayer.swingItem(); event.entityPlayer.worldObj.spawnEntityInWorld(entityfireball); System.out.println("aga"); } } @SubscribeEvent public void keyAlteration(KeyInputEvent event) { final Minecraft minecraft = FMLClientHandler.instance().getClient(); final EntityPlayer player = minecraft.thePlayer; ExtendedEntityPropAlteration props = ExtendedEntityPropAlteration.get(player); if(this.spell_1.isPressed() && props.getAlterationLvl() > 2 && props.getAlteration() == 0) { props.setBooleanProjectile(1); System.out.println("" + props.getBooleanProjectile()); } else { props.setBooleanProjectile(0); } }
PS : j’ai testé les boules s’envoyent bien le problème ne vient pas de la.
-
24h avant un up ……
De plus si tu ne fais pas de packet ça marcheras peut-être en solo mais pas en multi … -
Non mais c’etait pas un up dans le sens “up”, j’ai avancer, le problème avance et donc je ne cherche pas à avoir la même réponse. Et pour les packet faut que je me renseigne mais les properties utilise les packets hors j’utilise les properties donc logiquement j’utilise les packet.
Okay j’ai réussi enfète c’était vraiment VRAIMENT tout bête et je suis désolé d’avoir déranger pour si peu voila je pensai que l’event KeyInputEvent était obligatoire pour récupéré si le joueur tape sur la touche ou non mais enfete rien du tout donc j’ai juste rajouté isPressed dans l’event playerEvent.