mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-03-12 04:35:36 +00:00
123 lines
4.7 KiB
Java
123 lines
4.7 KiB
Java
package com.hbm.entity.mob;
|
|
|
|
import com.hbm.items.ModItems;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.entity.EnumCreatureAttribute;
|
|
import net.minecraft.entity.IEntityLivingData;
|
|
import net.minecraft.entity.SharedMonsterAttributes;
|
|
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.monster.EntityMob;
|
|
import net.minecraft.entity.passive.EntityVillager;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.world.EnumDifficulty;
|
|
import net.minecraft.world.World;
|
|
|
|
public class EntityUndeadSoldier extends EntityMob {
|
|
|
|
public static final int DW_TYPE = 12;
|
|
public static final byte TYPE_ZOMBIE = 0;
|
|
public static final byte TYPE_SKELETON = 1;
|
|
|
|
public EntityUndeadSoldier(World world) {
|
|
super(world);
|
|
this.tasks.addTask(0, new EntityAISwimming(this));
|
|
this.tasks.addTask(4, new EntityAIWander(this, 1.0D));
|
|
this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F));
|
|
this.tasks.addTask(6, new EntityAILookIdle(this));
|
|
this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
|
|
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));
|
|
this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityVillager.class, 0, true));
|
|
}
|
|
|
|
protected void entityInit() {
|
|
super.entityInit();
|
|
this.getDataWatcher().addObject(DW_TYPE, Byte.valueOf((byte) 0));
|
|
}
|
|
|
|
@Override
|
|
protected void applyEntityAttributes() {
|
|
super.applyEntityAttributes();
|
|
this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D);
|
|
this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D);
|
|
this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5.0D);
|
|
}
|
|
|
|
@Override
|
|
protected boolean isAIEnabled() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public IEntityLivingData onSpawnWithEgg(IEntityLivingData data) {
|
|
this.addRandomArmor();
|
|
this.dataWatcher.updateObject(DW_TYPE, rand.nextBoolean() ? TYPE_ZOMBIE : TYPE_SKELETON);
|
|
return super.onSpawnWithEgg(data);
|
|
}
|
|
|
|
@Override
|
|
protected void addRandomArmor() {
|
|
this.setCurrentItemOrArmor(4, new ItemStack(ModItems.taurun_helmet));
|
|
this.setCurrentItemOrArmor(3, new ItemStack(ModItems.taurun_plate));
|
|
this.setCurrentItemOrArmor(2, new ItemStack(ModItems.taurun_legs));
|
|
this.setCurrentItemOrArmor(1, new ItemStack(ModItems.taurun_boots));
|
|
|
|
int gun = rand.nextInt(5);
|
|
if(gun == 0) this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_heavy_revolver));
|
|
if(gun == 1) this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_light_revolver));
|
|
if(gun == 2) this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_carbine));
|
|
if(gun == 3) this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_maresleg));
|
|
if(gun == 4) this.setCurrentItemOrArmor(0, new ItemStack(ModItems.gun_greasegun));
|
|
}
|
|
|
|
@Override
|
|
protected String getLivingSound() {
|
|
byte type = this.dataWatcher.getWatchableObjectByte(DW_TYPE);
|
|
if(type == TYPE_ZOMBIE) return "mob.zombie.say";
|
|
if(type == TYPE_SKELETON) return "mob.skeleton.say";
|
|
return super.getLivingSound();
|
|
}
|
|
|
|
@Override
|
|
protected String getHurtSound() {
|
|
byte type = this.dataWatcher.getWatchableObjectByte(DW_TYPE);
|
|
if(type == TYPE_ZOMBIE) return "mob.zombie.hurt";
|
|
if(type == TYPE_SKELETON) return "mob.skeleton.hurt";
|
|
return super.getHurtSound();
|
|
}
|
|
|
|
@Override
|
|
protected String getDeathSound() {
|
|
byte type = this.dataWatcher.getWatchableObjectByte(DW_TYPE);
|
|
if(type == TYPE_ZOMBIE) return "mob.zombie.death";
|
|
if(type == TYPE_SKELETON) return "mob.skeleton.death";
|
|
return super.getDeathSound();
|
|
}
|
|
|
|
@Override
|
|
protected void func_145780_a(int x, int y, int z, Block blck) {
|
|
byte type = this.dataWatcher.getWatchableObjectByte(DW_TYPE);
|
|
if(type == TYPE_ZOMBIE) this.playSound("mob.zombie.step", 0.15F, 1.0F);
|
|
if(type == TYPE_SKELETON) this.playSound("mob.skeleton.step", 0.15F, 1.0F);
|
|
}
|
|
|
|
@Override
|
|
public EnumCreatureAttribute getCreatureAttribute() {
|
|
return EnumCreatureAttribute.UNDEAD;
|
|
}
|
|
|
|
@Override
|
|
public boolean getCanSpawnHere() {
|
|
return this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL && this.worldObj.checkNoEntityCollision(this.boundingBox) && this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && !this.worldObj.isAnyLiquid(this.boundingBox);
|
|
}
|
|
|
|
@Override protected void dropFewItems(boolean player, int loot) { }
|
|
@Override protected void dropEquipment(boolean player, int loot) { }
|
|
}
|