Résolu [+/- Résolu]Faire lancer une boule de feu par une entité
-
nana j’ai rien c’est bon ça fonctionne.
Je passe le sujet en résolu merci a tous!! -
EntityPlayer entityPlayer = EntityPlayer.thePlayer je crois que c’est ca
-
Je pense pas perso quand je n’ai pas d’argument entityplayer je met Minecraft.getMinecraft().thePlayer;
-
Dernier Probleme je voudrais faire lancer une entity de mon mod mais ca ne fonctionne pas.
package fr.minecraftforgefrance.mogame.common; import net.minecraft.entity.Entity; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityLargeFireball; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class EntityNeige extends EntityMob { private short timerEntity; public EntityNeige(World world) { super(world); } public void applyEntityAttributes() { super.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(6D); this.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(1D); this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); } @Override protected void updateEntityActionState() { super.updateEntityActionState(); timerEntity++; if (timerEntity == 50) { timerEntity = 0; } } @Override public void attackEntity(Entity entity, float value) { if ( timerEntity == 0) { final double xPos = entity.posX - posX; final double yPos = (entity.boundingBox.minY + (entity.height / 2.0F)) - (posY + (height / 2.0F)); final double zPos = entity.posZ - posZ; final float sqrt = MathHelper.sqrt_float(value) * 0.5F; worldObj.playAuxSFXAtEntity((EntityPlayer) null, 1009, (int) posX, (int) posY, (int) posZ, 0); EntityVladAmmo entityVladAmmo = new EntityVladAmmo(worldObj,xPos + (rand.nextGaussian() * sqrt), yPos, zPos + (rand.nextGaussian() * sqrt)); entityVladAmmo.posY = posY + (height / 2.0F) + 0.5D; worldObj.spawnEntityInWorld(entityVladAmmo); } } }
et la classe de l’entity qui doit etre lance
package fr.minecraftforgefrance.mogame.common; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityBlaze; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.DamageSource; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class EntityVladAmmo extends EntityThrowable { public EntityVladAmmo(World par1World) { super(par1World); } public EntityVladAmmo(World par1World, EntityLivingBase par2EntityLivingBase) { super(par1World, par2EntityLivingBase); } public EntityVladAmmo(World par1World, double par2, double par4, double par6) { super(par1World, par2, par4, par6); } @Override protected void onImpact(MovingObjectPosition movingObjectPosition) { if (movingObjectPosition.entityHit != null) { byte damage = 1; movingObjectPosition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, this.getThrower()), (float)damage); worldObj.newExplosion(null, movingObjectPosition.entityHit.posX, movingObjectPosition.entityHit.posY, movingObjectPosition.entityHit.posZ, 2.0F, true, true); } for (int i = 0; i < 8; ++i) { this.worldObj.spawnParticle("snowballpoof", this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D); } if (!this.worldObj.isRemote) { this.setDead(); } } }
-
Ton entité a bien un rendu ? Ton entité est bien enregistré ?
-
Quand tu dis enregistre tu veut dire dans ma classe principale?? Sinon je n ai pas encore fais le rendu car j avais juste le temps de tester avant de partir faire autre chose je ferai le rendu dmn et je te tiens au courant
-
Meeeeeuh non ca complique pas du tout d’utiliser cette interface (IRangedAttackMob), tout est déjà crée, ya juste à utiliser
Cette interface permet juste au mob de pas attaquer bettement au corps à corps, et il fait à la place ce qu’on lui dit de faire dans la fonction
(je vous file un exemple ou mon entité tirait des rafales de boules de neige)/** * Attack the specified entity using a ranged attack. */ @Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float damage) { if (System.currentTimeMillis() % 5000 < 2000) { EntitySnowball entitysnowball = new EntitySnowball(this.worldObj, this); double d0 = entity.posX - this.posX; double d1 = entity.posY + (double)entity.getEyeHeight() - 1 - entitysnowball.posY; double d2 = entity.posZ - this.posZ; float f1 = MathHelper.sqrt_double(d0 * d0 + d2 * d2) * 0.2F; entitysnowball.setThrowableHeading(d0, d1 + (double)f1, d2, 1.6F, 12.0F); this.playSound("random.bow", 1.0F, 1.0F / (this.getRNG().nextFloat() * 0.4F + 0.8F)); this.worldObj.spawnEntityInWorld(entitysnowball); } }
Enfin si c’est résolu, tant mieux ^^
-
EntityRegistry.registerModEntity(….
Si tu n’enregistrer pas ton projectile il ne fonctionnera pas. -
c’est bon j’ai enregistrer et j’ai fait le render mais les entity ne lance toujours pas de projectile
-
Personne n a d idée pour mon problème??