use of net.minecraft.entity.EntityLivingBase in project ImmersiveEngineering by BluSunrize.
the class TileEntityRazorWire method outputEnergy.
@Override
public int outputEnergy(int amount, boolean simulate, int energyType) {
if (amount > 0) {
if (!simulate) {
int maxReach = amount / 8;
int widthP = 0;
boolean connectP = true;
int widthN = 0;
boolean connectN = true;
EnumFacing dir = facing.rotateY();
if (dir.getAxisDirection() == AxisDirection.NEGATIVE)
dir = dir.getOpposite();
for (int i = 1; i <= maxReach; i++) {
BlockPos posP = getPos().offset(dir, i);
if (connectP && worldObj.isBlockLoaded(posP) && worldObj.getTileEntity(posP) instanceof TileEntityRazorWire)
widthP++;
else
connectP = false;
BlockPos posN = getPos().offset(dir, -i);
if (connectN && worldObj.isBlockLoaded(posN) && worldObj.getTileEntity(posN) instanceof TileEntityRazorWire)
widthN++;
else
connectN = false;
}
AxisAlignedBB aabb = new AxisAlignedBB(getPos().add(facing.getAxis() == Axis.Z ? -widthN : 0, 0, facing.getAxis() == Axis.X ? -widthN : 0), getPos().add(facing.getAxis() == Axis.Z ? 1 + widthP : 1, 1, facing.getAxis() == Axis.X ? 1 + widthP : 1));
List<EntityLivingBase> entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, aabb);
for (EntityLivingBase ent : entities) ent.attackEntityFrom(IEDamageSources.razorShock, 2);
}
return 64;
}
return 0;
}
use of net.minecraft.entity.EntityLivingBase in project ImmersiveEngineering by BluSunrize.
the class EntityChemthrowerShot method onImpact.
@Override
public void onImpact(RayTraceResult mop) {
if (!this.worldObj.isRemote && getFluid() != null) {
FluidStack fluidStack = getFluid();
Fluid fluid = fluidStack.getFluid();
ChemthrowerEffect effect = ChemthrowerHandler.getEffect(fluid);
boolean fire = fluid.getTemperature(fluidStack) > 1000;
if (effect != null) {
ItemStack thrower = null;
EntityPlayer shooter = (EntityPlayer) this.getShooter();
if (shooter != null)
thrower = shooter.getHeldItem(EnumHand.MAIN_HAND);
if (mop.typeOfHit == Type.ENTITY)
effect.applyToEntity((EntityLivingBase) mop.entityHit, shooter, thrower, fluidStack);
else if (mop.typeOfHit == Type.BLOCK)
effect.applyToBlock(worldObj, mop, shooter, thrower, fluidStack);
} else if (mop.entityHit != null && fluid.getTemperature(fluidStack) > 500) {
int tempDiff = fluid.getTemperature(fluidStack) - 300;
int damage = Math.abs(tempDiff) / 500;
if (mop.entityHit.attackEntityFrom(DamageSource.lava, damage))
mop.entityHit.hurtResistantTime = (int) (mop.entityHit.hurtResistantTime * .75);
}
if (mop.entityHit != null) {
int f = this.isBurning() ? this.fire : fire ? 3 : 0;
if (f > 0) {
mop.entityHit.setFire(f);
if (mop.entityHit.attackEntityFrom(DamageSource.inFire, 2))
mop.entityHit.hurtResistantTime = (int) (mop.entityHit.hurtResistantTime * .75);
}
}
}
}
use of net.minecraft.entity.EntityLivingBase in project NetherEx by LogicTechCorp.
the class ExplosionSpore method doExplosionA.
@Override
public void doExplosionA() {
if (!world.isRemote) {
Set<BlockPos> set = Sets.newHashSet();
for (int j = 0; j < 16; ++j) {
for (int k = 0; k < 16; ++k) {
for (int l = 0; l < 16; ++l) {
if (j == 0 || j == 15 || k == 0 || k == 15 || l == 0 || l == 15) {
double d0 = (double) ((float) j / 15.0F * 2.0F - 1.0F);
double d1 = (double) ((float) k / 15.0F * 2.0F - 1.0F);
double d2 = (double) ((float) l / 15.0F * 2.0F - 1.0F);
double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2);
d0 = d0 / d3;
d1 = d1 / d3;
d2 = d2 / d3;
float f = explosionSize * (0.7F + world.rand.nextFloat() * 0.6F);
double d4 = explosionX;
double d6 = explosionY;
double d8 = explosionZ;
for (float f1 = 0.3F; f > 0.0F; f -= 0.22500001F) {
BlockPos blockpos = new BlockPos(d4, d6, d8);
IBlockState iblockstate = world.getBlockState(blockpos);
if (iblockstate.getMaterial() != Material.AIR) {
float f2 = exploder != null ? exploder.getExplosionResistance(this, world, blockpos, iblockstate) : iblockstate.getBlock().getExplosionResistance(world, blockpos, (Entity) null, this);
f -= (f2 + 0.3F) * 0.3F;
}
if (f > 0.0F && (exploder == null || exploder.verifyExplosion(this, world, blockpos, iblockstate, f))) {
set.add(blockpos);
}
d4 += d0 * 0.30000001192092896D;
d6 += d1 * 0.30000001192092896D;
d8 += d2 * 0.30000001192092896D;
}
}
}
}
}
affectedBlockPositions.addAll(set);
float f3 = explosionSize * 2.0F;
int k1 = MathHelper.floor(explosionX - (double) f3 - 1.0D);
int l1 = MathHelper.floor(explosionX + (double) f3 + 1.0D);
int i2 = MathHelper.floor(explosionY - (double) f3 - 1.0D);
int i1 = MathHelper.floor(explosionY + (double) f3 + 1.0D);
int j2 = MathHelper.floor(explosionZ - (double) f3 - 1.0D);
int j1 = MathHelper.floor(explosionZ + (double) f3 + 1.0D);
List<Entity> list = world.getEntitiesWithinAABBExcludingEntity(exploder, new AxisAlignedBB((double) k1, (double) i2, (double) j2, (double) l1, (double) i1, (double) j1));
ForgeEventFactory.onExplosionDetonate(world, this, list, f3);
Vec3d vec3d = new Vec3d(explosionX, explosionY, explosionZ);
for (Entity entity : list) {
if (!entity.isImmuneToExplosions()) {
double d12 = entity.getDistance(explosionX, explosionY, explosionZ) / (double) f3;
if (d12 <= 1.0D) {
double d5 = entity.posX - explosionX;
double d7 = entity.posY + (double) entity.getEyeHeight() - explosionY;
double d9 = entity.posZ - explosionZ;
double d13 = (double) MathHelper.sqrt(d5 * d5 + d7 * d7 + d9 * d9);
if (d13 != 0.0D) {
d5 = d5 / d13;
d7 = d7 / d13;
d9 = d9 / d13;
double d14 = (double) world.getBlockDensity(vec3d, entity.getEntityBoundingBox());
double d10 = (1.0D - d12) * d14;
if (!(entity instanceof EntitySporeCreeper) && !(entity instanceof EntitySpore)) {
entity.attackEntityFrom(DamageSource.causeExplosionDamage(this), (float) ((int) ((d10 * d10 + d10) / 2.0D * 7.0D * (double) f3 + 1.0D)));
}
if (entity instanceof EntityLivingBase) {
((EntityLivingBase) entity).addPotionEffect(new PotionEffect(NetherExEffects.SPORE, 2400, 0));
}
double d11 = d10;
if (entity instanceof EntityLivingBase) {
d11 = EnchantmentProtection.getBlastDamageReduction((EntityLivingBase) entity, d10);
}
entity.motionX += d5 * d11;
entity.motionY += d7 * d11;
entity.motionZ += d9 * d11;
if (entity instanceof EntityPlayer) {
EntityPlayer entityplayer = (EntityPlayer) entity;
if (!entityplayer.isSpectator() && (!entityplayer.isCreative() || !entityplayer.capabilities.isFlying)) {
playerKnockbackMap.put(entityplayer, new Vec3d(d5 * d10, d7 * d10, d9 * d10));
}
}
}
}
}
}
}
}
use of net.minecraft.entity.EntityLivingBase in project BetterWithAddons by DaedalusGame.
the class ButcherHandler method playerTick.
@SubscribeEvent
public void playerTick(AttackEntityEvent attackEvent) {
Entity target = attackEvent.getTarget();
EntityLivingBase attacker = attackEvent.getEntityLiving();
if (attacker == null || target == null)
return;
World world = attacker.getEntityWorld();
BlockPos pos = EntityUtil.getEntityFloor(target, 2);
if (!world.isRemote) {
IBlockState state = world.getBlockState(pos);
if (isChopBlock(state) && isSuitableWeapon(attacker.getHeldItemMainhand())) {
attacker.addPotionEffect(new PotionEffect(MobEffects.STRENGTH, 200));
attacker.addPotionEffect(new PotionEffect(MobEffects.HUNGER, 200));
splatter(world, pos, 1);
}
}
}
use of net.minecraft.entity.EntityLivingBase in project Bookshelf by Darkhax-Minecraft.
the class ModelArmorExtended method syncModel.
/**
* Updates the pose/state of the model to reflect that of the entity it's attatched to.
*
* @param entity The entity to sync the model with.
* @param partialTicks The partial ticks.
*/
private void syncModel(Entity entity, float partialTicks) {
final EntityLivingBase living = (EntityLivingBase) entity;
this.isSneak = living != null ? living.isSneaking() : false;
this.isChild = living != null ? living.isChild() : false;
if (living != null && living instanceof EntityPlayer) {
final EntityPlayer player = (EntityPlayer) living;
final ArmPose poseMainhand = this.getArmPose(player.getHeldItemMainhand(), player);
final ArmPose poseOffhand = this.getArmPose(player.getHeldItemOffhand(), player);
final boolean isRightHanded = player.getPrimaryHand() == EnumHandSide.RIGHT;
this.rightArmPose = isRightHanded ? poseMainhand : poseOffhand;
this.leftArmPose = isRightHanded ? poseOffhand : poseMainhand;
this.swingProgress = player.getSwingProgress(partialTicks);
}
}
Aggregations