From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../plusplus/fbs/entity/EntityMagicFireBolt.java | 101 +++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/entity/EntityMagicFireBolt.java (limited to 'src/main/java/jp/plusplus/fbs/entity/EntityMagicFireBolt.java') diff --git a/src/main/java/jp/plusplus/fbs/entity/EntityMagicFireBolt.java b/src/main/java/jp/plusplus/fbs/entity/EntityMagicFireBolt.java new file mode 100644 index 0000000..2e13778 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/entity/EntityMagicFireBolt.java @@ -0,0 +1,101 @@ +package jp.plusplus.fbs.entity; + +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class EntityMagicFireBolt extends EntityMagicProjectileBase { + public EntityMagicFireBolt(World p_i1582_1_) { + super(p_i1582_1_); + } + + public EntityMagicFireBolt(World par1World, EntityLivingBase par2EntityLivingBase, float speed, float speed2, float damage) { + super(par1World, par2EntityLivingBase, speed, speed2, 0, 0, 0); + setDamage(damage); + } + + @Override + public boolean canExist() { + return worldObj.isRemote || ticksExisted < 20 * 1.5; + } + + @Override + public void onCollideWithPlayer(MovingObjectPosition pos, EntityPlayer entity) { + if (!worldObj.isRemote && !shootingEntity.isEntityEqual(entity)) { + entity.attackEntityFrom(DamageSource.causeIndirectMagicDamage(shootingEntity, entity), getDamage()); + entity.setFire(20 * 3); + setDead(); + } + } + + @Override + public void onCollideWithMob(MovingObjectPosition pos, EntityMob entity) { + if (!worldObj.isRemote) { + entity.attackEntityFrom(DamageSource.causeIndirectMagicDamage(shootingEntity, entity), getDamage()); + entity.setFire(20 * 3); + setDead(); + } + } + + @Override + public void onCollideWithLiving(MovingObjectPosition pos, EntityLiving entity) { + if (!worldObj.isRemote) { + entity.attackEntityFrom(DamageSource.causeIndirectMagicDamage(shootingEntity, entity), getDamage()); + entity.setFire(20 * 3); + setDead(); + } + } + + @Override + public void onCollideWithBlock(MovingObjectPosition pos, Block block) { + if (!worldObj.isRemote) { + + int i = pos.blockX; + int j = pos.blockY; + int k = pos.blockZ; + + switch (pos.sideHit) { + case 0: + --j; + break; + case 1: + ++j; + break; + case 2: + --k; + break; + case 3: + ++k; + break; + case 4: + --i; + break; + case 5: + ++i; + } + + if (this.worldObj.isAirBlock(i, j, k)) { + this.worldObj.setBlock(i, j, k, Blocks.fire); + } + + setDead(); + } + } + + @Override + protected void setParticleColor(){ + particleRed=0.8f+0.2f*rand.nextFloat(); + particleGreen=0.5f*rand.nextFloat(); + particleBlue=0; + } + +} -- cgit v1.2.3