100 lines
3.5 KiB
Java
100 lines
3.5 KiB
Java
![]() |
package WayofTime.bloodmagic.entity.mob;
|
||
|
|
||
|
import net.minecraft.block.Block;
|
||
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||
|
import net.minecraft.entity.ai.EntityAIAttackMelee;
|
||
|
import net.minecraft.entity.ai.EntityAIHurtByTarget;
|
||
|
import net.minecraft.entity.ai.EntityAILookIdle;
|
||
|
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
|
||
|
import net.minecraft.entity.ai.EntityAISwimming;
|
||
|
import net.minecraft.entity.ai.EntityAIWander;
|
||
|
import net.minecraft.entity.ai.EntityAIWatchClosest;
|
||
|
import net.minecraft.entity.item.EntityBoat;
|
||
|
import net.minecraft.entity.monster.EntityMob;
|
||
|
import net.minecraft.entity.passive.EntityAnimal;
|
||
|
import net.minecraft.entity.passive.EntityVillager;
|
||
|
import net.minecraft.entity.player.EntityPlayer;
|
||
|
import net.minecraft.init.SoundEvents;
|
||
|
import net.minecraft.inventory.EntityEquipmentSlot;
|
||
|
import net.minecraft.item.ItemStack;
|
||
|
import net.minecraft.nbt.NBTTagCompound;
|
||
|
import net.minecraft.pathfinding.PathNavigateGround;
|
||
|
import net.minecraft.util.SoundEvent;
|
||
|
import net.minecraft.util.math.BlockPos;
|
||
|
import net.minecraft.world.World;
|
||
|
|
||
|
public class EntitySentientSpecter extends EntityMob
|
||
|
{
|
||
|
public EntitySentientSpecter(World worldIn)
|
||
|
{
|
||
|
super(worldIn);
|
||
|
this.setSize(0.6F, 1.95F);
|
||
|
// ((PathNavigateGround) getNavigator()).setCanSwim(false);
|
||
|
this.tasks.addTask(0, new EntityAISwimming(this));
|
||
|
this.tasks.addTask(2, new EntityAIAttackMelee(this, 1, false));
|
||
|
// this.tasks.addTask(2, new AIAttackOnCollide(this, EntityPlayer.class, 1.0D, false));
|
||
|
// this.tasks.addTask(3, new AIAttackOnCollide(this, EntityVillager.class, 1.0D, true));
|
||
|
this.tasks.addTask(5, new EntityAIWander(this, 1.0D));
|
||
|
this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
|
||
|
this.tasks.addTask(7, new EntityAILookIdle(this));
|
||
|
// this.tasks.addTask(8, new AIAttackOnCollide(this, EntityAnimal.class, 1.0D, false));
|
||
|
this.targetTasks.addTask(0, new EntityAIHurtByTarget(this, true, new Class[0]));
|
||
|
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, true));
|
||
|
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityVillager.class, false));
|
||
|
this.targetTasks.addTask(8, new EntityAINearestAttackableTarget(this, EntityAnimal.class, false));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void applyEntityAttributes()
|
||
|
{
|
||
|
super.applyEntityAttributes();
|
||
|
getEntityAttribute(SharedMonsterAttributes.MAX_HEALTH).setBaseValue(40.0D);
|
||
|
getEntityAttribute(SharedMonsterAttributes.ATTACK_DAMAGE).setBaseValue(6.0D);
|
||
|
getEntityAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).setBaseValue(0.27D);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void writeEntityToNBT(NBTTagCompound tag)
|
||
|
{
|
||
|
super.writeEntityToNBT(tag);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void readEntityFromNBT(NBTTagCompound tag)
|
||
|
{
|
||
|
super.readEntityFromNBT(tag);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected SoundEvent getAmbientSound()
|
||
|
{
|
||
|
return SoundEvents.ENTITY_COW_AMBIENT;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected SoundEvent getHurtSound()
|
||
|
{
|
||
|
return SoundEvents.ENTITY_COW_HURT;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected SoundEvent getDeathSound()
|
||
|
{
|
||
|
return SoundEvents.ENTITY_COW_DEATH;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void playStepSound(BlockPos pos, Block block)
|
||
|
{
|
||
|
this.playSound(SoundEvents.ENTITY_COW_STEP, 0.15F, 1.0F);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns the volume for the sounds this mob makes.
|
||
|
*/
|
||
|
@Override
|
||
|
protected float getSoundVolume()
|
||
|
{
|
||
|
return 0.4F;
|
||
|
}
|
||
|
}
|