
EntityZombieSoldier:
Spoiler:
package Dungeons;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
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.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class EntityZombieSoldier extends EntityMob {
public EntityZombieSoldier(World par1World) {
super(par1World);
this.texture = "/dungeons/mobs/zombie.png";
this.moveSpeed = 0.25F;
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, this.moveSpeed, false));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(4, new EntityAIWander(this, this.moveSpeed));
this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false));
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 16.0F, 0, true));
}
@Override
public int getMaxHealth() {
return 40;
}
public EnumCreatureAttribute getCreatureAttribute()
{
return EnumCreatureAttribute.UNDEAD;
}
public int getAttackStrength(Entity par1Entity)
{
return 6;
}
protected boolean isAIEnabled()
{
return true;
}
public String getTexture()
{
return "/dungeons/mobs/zombie.png";
}
public int getTotalArmorValue()
{
return 10;
}
public void onLivingUpdate()
{
if (this.worldObj.isDaytime() && !this.worldObj.isRemote)
{
float var1 = this.getBrightness(1.0F);
if (var1 > 0.5F && this.worldObj.canBlockSeeTheSky(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ)) && this.rand.nextFloat() * 30.0F < (var1 - 0.4F) * 2.0F)
{
this.setFire(8);
}
}
super.onLivingUpdate();
}
protected String getLivingSound()
{
return "mob.zombie.say";
}
protected String getHurtSound()
{
return "mob.zombie.hurt";
}
protected String getDeathSound()
{
return "mob.zombie.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.worldObj.playSoundAtEntity(this, "mob.zombie.step", 0.15F, 1.0F);
}
protected int getDropItemId()
{
return Item.ingotGold.itemID;
}
protected void dropRareDrop(int par1)
{
switch (this.rand.nextInt(2))
{
case 0:
this.dropItem(Item.ingotIron.itemID, 4);
break;
case 1:
this.dropItem(Item.helmetSteel.itemID, 1);
break;
}
}
}
RenderMobZombieSoldier:
Spoiler:
package Dungeons;
import net.minecraft.client.renderer.entity.RenderLiving;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
public class RenderMobZombieSoldier extends RenderLiving {
protected ModelZombieSoldier model;
public RenderMobZombieSoldier (ModelZombieSoldier ModelZombieSoldier, float f)
{
super(ModelZombieSoldier, f);
model = ((ModelZombieSoldier)mainModel);
}
public void renderMobZombieSoldier(EntityZombieSoldier entity, double par2, double par4, double par6, float par8, float par9)
{
super.doRenderLiving(entity, par2, par4, par6, par8, par9);
}
public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
{
renderMobZombieSoldier((EntityZombieSoldier)par1EntityLiving, par2, par4, par6, par8, par9);
}
public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
{
renderMobZombieSoldier((EntityZombieSoldier)par1Entity, par2, par4, par6, par8, par9);
}
}
ModelZombieSoldier:
Spoiler:
package Dungeons;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class ModelZombieSoldier extends ModelBiped
{
public ModelZombieSoldier()
{
this(0.0F, false);
}
protected ModelZombieSoldier(float par1, float par2, int par3, int par4)
{
super(par1, par2, par3, par4);
}
public ModelZombieSoldier(float par1, boolean par2)
{
super(par1, 0.0F, 64, par2 ? 32 : 64);
}
/**
* Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms
* and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how
* "far" arms and legs can swing at most.
*/
public void setRotationAngles(float par1, float par2, float par3, float par4, float par5, float par6, Entity par7Entity)
{
super.setRotationAngles(par1, par2, par3, par4, par5, par6, par7Entity);
float var8 = MathHelper.sin(this.onGround * (float)Math.PI);
float var9 = MathHelper.sin((1.0F - (1.0F - this.onGround) * (1.0F - this.onGround)) * (float)Math.PI);
this.bipedRightArm.rotateAngleZ = 0.0F;
this.bipedLeftArm.rotateAngleZ = 0.0F;
this.bipedRightArm.rotateAngleY = -(0.1F - var8 * 0.6F);
this.bipedLeftArm.rotateAngleY = 0.1F - var8 * 0.6F;
this.bipedRightArm.rotateAngleX = -((float)Math.PI / 2F);
this.bipedLeftArm.rotateAngleX = -((float)Math.PI / 2F);
this.bipedRightArm.rotateAngleX -= var8 * 1.2F - var9 * 0.4F;
this.bipedLeftArm.rotateAngleX -= var8 * 1.2F - var9 * 0.4F;
this.bipedRightArm.rotateAngleZ += MathHelper.cos(par3 * 0.09F) * 0.05F + 0.05F;
this.bipedLeftArm.rotateAngleZ -= MathHelper.cos(par3 * 0.09F) * 0.05F + 0.05F;
this.bipedRightArm.rotateAngleX += MathHelper.sin(par3 * 0.067F) * 0.05F;
this.bipedLeftArm.rotateAngleX -= MathHelper.sin(par3 * 0.067F) * 0.05F;
}
}
ClientProxyDungeons:
Spoiler:
package Dungeons;
import net.minecraftforge.client.MinecraftForgeClient;
import cpw.mods.fml.client.registry.RenderingRegistry;
public class ClientProxyDungeons extends CommonProxyDungeons
{
public static void registerRenderThings()
{
RenderingRegistry.registerEntityRenderingHandler(EntityZombieSoldier.class, new RenderMobZombieSoldier(new ModelZombieSoldier(), 0.3F));
MinecraftForgeClient.preloadTexture("/dungeons/textures.png");
}
}
Main mod class:
Spoiler:
EntityRegistry.registerModEntity(EntityZombieSoldier.class, "ZombieSoldier", 1, this, 80, 3, true);
Just wondering if anyone can see an issue? I can't but I am most likely missing something obvious.
Thanks in advance.









