package net.tropicraft.entity.koa; import net.minecraft.entity.Entity; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.tropicraft.entity.EntityCoroAI; import CoroUtil.componentAI.AIAgent; import CoroUtil.componentAI.jobSystem.JobBase; import CoroUtil.componentAI.jobSystem.JobHunt; import CoroUtil.diplomacy.DiplomacyHelper; import CoroUtil.diplomacy.TeamTypes; public class EntityKoaBase extends EntityCoroAI { public boolean wasInWater = false; public int inWaterTick, outWaterTick; public float waterOffsetY = 0f; public String koaName = ""; public final String[] tribalMaleNames = new String[]{"Akamu", "Ekewaka", "Ikaika", "Iukini", "Kai", "Kaimana", "Kaimi", "Kanoa", "Kapena", "Keahi", "Keaweaheulu","Kekipi", "Kekoa", "Konani", "Makani", "Mano", "Nahele"}; public EntityKoaBase(World par1World) { super(par1World); //texture = "/mods/TropicraftMod/textures/entities/koa/KoaMan3.png"; agent.jobMan.clearJobs(); JobBase jb = new JobHunt(agent.jobMan); jb.dontStrayFromHome = true; agent.jobMan.addPrimaryJob(jb); agent.collideResistPathing = 0.7F; //agent.setMoveSpeed(0.35F); //agent.fleeSpeed = 0.4F; agent.dipl_info = TeamTypes.getType("koa"); /*agent.entInv.shouldLookForPickups = true;*/ agent.entInv.grabItems = true; agent.scanForHomeChest = true; agent.shouldFixBadYPathing = true; //agent.PFRangePathing = 64; agent.collideResistClose = agent.collideResistFormation = agent.collideResistPathing = entityCollisionReduction = 0.9F; this.experienceValue = 15; this.func_110163_bv(); } @Override protected void applyEntityAttributes() { super.applyEntityAttributes(); //agent.setSpeedFleeAdditive(0.1F); //additive //agent.setSpeedNormalBase(0.6F); agent.applyEntityAttributes(); this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(30.0D); } @Override public void readEntityFromNBT(NBTTagCompound par1nbtTagCompound) { super.readEntityFromNBT(par1nbtTagCompound); koaName = par1nbtTagCompound.getString("koaName"); } @Override public void writeEntityToNBT(NBTTagCompound par1nbtTagCompound) { super.writeEntityToNBT(par1nbtTagCompound); par1nbtTagCompound.setString("koaName", koaName); } @Override public void checkNewAgent() { if (agent == null) { agent = new AIAgent(this, true); } } @Override protected boolean canDespawn() { return false; } /*@Override public void postInitFakePlayer() { if (koaName == null || koaName.equals("")) { koaName = tribalMaleNames[worldObj.rand.nextInt(tribalMaleNames.length)]; } this.setCustomNameTag(koaName); }*/ @Override public boolean isEnemy(Entity ent) { //if (ent instanceof EntityPlayer && !((EntityPlayer) ent).capabilities.isCreativeMode) return true; return DiplomacyHelper.shouldTargetEnt(this, ent); } @Override public void onLivingUpdate() { // TODO Auto-generated method stub super.onLivingUpdate(); if(isInWater()){ if(this.outWaterTick != 0){ this.outWaterTick = 0; } this.inWaterTick++; }else{ if(this.inWaterTick != 0){ this.inWaterTick = 0; } this.outWaterTick++; } if (!isInWater() && wasInWater == true && isCollidedHorizontally) motionY = 0.54F; wasInWater = isInWater(); if (isInWater() && motionY < -0.001) motionY = -0.001; if (isInWater() && isCollidedHorizontally) { motionX *= 1.2F; motionZ *= 1.2F; } } /*@Override public String getLocalizedName() { return "a Koa"; }*/ }