mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
85 lines
2.9 KiB
Java
85 lines
2.9 KiB
Java
package com.hbm.entity.mob;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
|
import com.hbm.handler.threading.PacketThreading;
|
|
import com.hbm.items.ModItems;
|
|
import com.hbm.items.weapon.sedna.factory.XFactory762mm;
|
|
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
|
import com.hbm.potion.HbmPotion;
|
|
import com.hbm.tileentity.machine.TileEntityTesla;
|
|
|
|
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.SharedMonsterAttributes;
|
|
import net.minecraft.entity.ai.EntityAIArrowAttack;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.potion.PotionEffect;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.util.Vec3;
|
|
import net.minecraft.world.World;
|
|
|
|
public class EntityTaintCrab extends EntityCyberCrab {
|
|
|
|
public List<double[]> targets = new ArrayList();
|
|
|
|
public EntityTaintCrab(World p_i1733_1_) {
|
|
super(p_i1733_1_);
|
|
this.setSize(1.25F, 1.25F);
|
|
this.ignoreFrustumCheck = true;
|
|
}
|
|
|
|
protected EntityAIArrowAttack arrowAI() {
|
|
return new EntityAIArrowAttack(this, 0.5D, 5, 5, 50.0F);
|
|
}
|
|
|
|
@Override
|
|
protected void applyEntityAttributes() {
|
|
super.applyEntityAttributes();
|
|
this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(25.0D);
|
|
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5F);
|
|
}
|
|
|
|
public void onLivingUpdate() {
|
|
|
|
targets = TileEntityTesla.zap(worldObj, posX, posY + 1.25, posZ, 10, this);
|
|
|
|
List<EntityLivingBase> targets = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5));
|
|
|
|
for(EntityLivingBase e : targets) {
|
|
if(!(e instanceof EntityCyberCrab)) e.addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 10, 15));
|
|
}
|
|
|
|
super.onLivingUpdate();
|
|
}
|
|
|
|
@Override
|
|
protected Item getDropItem() {
|
|
return ModItems.coil_advanced_alloy;
|
|
}
|
|
|
|
protected void dropRareDrop(int p_70600_1_) {
|
|
this.dropItem(ModItems.coil_magnetized_tungsten, 1);
|
|
}
|
|
|
|
@Override
|
|
public void attackEntityWithRangedAttack(EntityLivingBase entity, float f) {
|
|
|
|
EntityBulletBaseMK4 bullet = new EntityBulletBaseMK4(this, XFactory762mm.r762_fmj, 10F, 0F, 0F, 0F, 0F);
|
|
Vec3 motion = Vec3.createVectorHelper(posX - entity.posX, posY - entity.posZ - entity.height / 2, posZ - entity.posZ);
|
|
motion = motion.normalize();
|
|
NBTTagCompound data = new NBTTagCompound();
|
|
data.setString("type", "vanilla");
|
|
data.setString("mode", "flame");
|
|
data.setDouble("mX", bullet.motionX * 0.3);
|
|
data.setDouble("mY", bullet.motionY * 0.3);
|
|
data.setDouble("mZ", bullet.motionZ * 0.3);
|
|
PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(this.dimension, posX, posY, posZ, 50));
|
|
this.worldObj.spawnEntityInWorld(bullet);
|
|
this.playSound("hbm:weapon.sawShoot", 1.0F, 0.5F);
|
|
}
|
|
}
|