I have a few problems with my mobs:
1) Why doesn't my mobs render their items which they hold? (this worked perfectly with ModLoader)
2) Why is "EntityPigmanB" normal-sized even though I changes its size with "this.setSize" (this also worked perfectly with ModLoader)
3) When I right click EntityPigmanA & B, no message shows up and when I right click the three other pigmans, the message shows twice. Why?
My code:
ModPigmanVillages:
package pigmanvillages;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.entity.RenderBiped;
import net.minecraft.client.renderer.entity.RenderZombie;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.potion.Potion;
import net.minecraft.stats.Achievement;
import net.minecraft.stats.AchievementList;
import net.minecraft.stats.StatBase;
import net.minecraft.world.World;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.IPickupNotifier;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
@Mod(modid = "Pigman Villages Mod", name = "Pigman Villages Mod", version = "2.1.0")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class ModPigmanVillages {
public static Item BaconRaw;
public static Item BaconCooked;
public static Item BaconGolden;
public static Item MilkBottle;
public static Item EmptyBottle;
public static Achievement getBacon;
public static Achievement cookBacon;
public static Achievement craftGoldenBacon;
@PreInit()
public void PreInitTutorial(FMLPreInitializationEvent e){
PVMConfig cc = new PVMConfig();
PVMConfig.loadConfig(e);
BaconRaw = new ItemFood(cc.itemRawBaconID, 3, 0.3F, true).setCreativeTab(this.tabPVM).setUnlocalizedName("rawbacon");
BaconCooked = new ItemFood(cc.itemCookedBaconID, 6, 0.5F, true).setCreativeTab(this.tabPVM).setUnlocalizedName("cookedbacon");
BaconGolden = new ItemBaconGold(cc.itemGoldenBaconID, 16, 1.5F, true).setPotionEffect(Potion.waterBreathing.id, 600, 0, 1.0F).setAlwaysEdible().setCreativeTab(this.tabPVM).setUnlocalizedName("goldenbacon");;
EmptyBottle = new ItemBottle(cc.itemEmptyBottleID, 0).setCreativeTab(this.tabPVM).setUnlocalizedName("emptybottle");
MilkBottle = new ItemMilkBottle(cc.itemMilkBottleID, 2, 0.2F, false).setPotionEffect(Potion.moveSpeed.id, 30, 0, 0.5F).setCreativeTab(this.tabPVM).setUnlocalizedName("milkbottle");
}
@Init
public void load(FMLInitializationEvent event)
{
EntityRegistry.registerGlobalEntityID(EntityPigman.class, "Miner Pigman", EntityRegistry.findGlobalUniqueEntityId(), 433534534, 768873);
EntityRegistry.registerGlobalEntityID(EntityPigmanA.class, "Farmer Pigman", EntityRegistry.findGlobalUniqueEntityId(), 633534534, 968873);
EntityRegistry.registerGlobalEntityID(EntityPigmanB.class, "Baby Pigman", EntityRegistry.findGlobalUniqueEntityId(), 133534534, 368873);
EntityRegistry.registerGlobalEntityID(EntityPigmanC.class, "Hunter Pigman", EntityRegistry.findGlobalUniqueEntityId(), 233534534, 568873);
EntityRegistry.registerGlobalEntityID(EntityPigmanD.class, "Mayor Pigman", EntityRegistry.findGlobalUniqueEntityId(), 833534534, 768873);
GameRegistry.registerItem(BaconRaw, "rawbacon");
LanguageRegistry.addName(BaconRaw, "Raw Bacon");
GameRegistry.registerItem(BaconCooked, "cookedbacon");
LanguageRegistry.addName(BaconCooked, "Cooked Bacon");
GameRegistry.registerItem(BaconGolden, "goldenbacon");
LanguageRegistry.addName(BaconGolden, "Golden Bacon");
GameRegistry.registerItem(MilkBottle, "milkbottle");
LanguageRegistry.addName(MilkBottle, "Milk Bottle");
GameRegistry.registerItem(EmptyBottle, "emptybottle");
LanguageRegistry.addName(EmptyBottle, "Empty Bottle");
LanguageRegistry.instance().addStringLocalization("achievement.getBacon", "en_US", "Mm, bacon!");
LanguageRegistry.instance().addStringLocalization("achievement.getBacon.desc", "en_US", "Kill a Pigman to get Raw Bacon");
LanguageRegistry.instance().addStringLocalization("achievement.cookBacon", "en_US", "Even more delicious!");
LanguageRegistry.instance().addStringLocalization("achievement.cookBacon.desc", "en_US", "Cook Raw Bacon to get Cooked Bacon");
LanguageRegistry.instance().addStringLocalization("achievement.craftGoldenBacon", "en_US", "Oh, shiny!");
LanguageRegistry.instance().addStringLocalization("achievement.craftGoldenBacon.desc", "en_US", "Craft a Golden Bacon by using some Golden Ingots, a Diamond and a Cooked Bacon");
LanguageRegistry.instance().addStringLocalization("itemGroup.tabPVM", "en_US", "Pigman Villages Mod");
LanguageRegistry.instance().addStringLocalization("entity.Miner Pigman.name", "Miner Pigman");
LanguageRegistry.instance().addStringLocalization("entity.Farmer Pigman.name", "Farmer Pigman");
LanguageRegistry.instance().addStringLocalization("entity.Baby Pigman.name", "Baby Pigman");
LanguageRegistry.instance().addStringLocalization("entity.Hunter Pigman.name", "Hunter Pigman");
LanguageRegistry.instance().addStringLocalization("entity.Mayor Pigman.name", "Mayor Pigman");
recipesInit();
GameRegistry.registerCraftingHandler(new PVMCraftingHandler());
GameRegistry.registerPickupHandler(new PVMPickup());
getBacon = new Achievement(100, "getBacon", 6, 1, BaconRaw, AchievementList.buildSword).registerAchievement();
cookBacon = new Achievement(101, "cookBacon", 8, 1, BaconCooked, this.getBacon).registerAchievement();
craftGoldenBacon = new Achievement(102, "craftGoldenBacon", 10, 1, BaconGolden, this.cookBacon).setSpecial().registerAchievement();
}
public static void recipesInit(){
GameRegistry.addRecipe(new ItemStack(ModPigmanVillages.BaconGolden, 1), new Object[]{
"XYX", "XZX", "XXX", Character.valueOf('X'),Item.ingotGold, Character.valueOf('Y'),Item.diamond, Character.valueOf('Z'), ModPigmanVillages.BaconCooked
});
GameRegistry.addRecipe(new ItemStack(ModPigmanVillages.EmptyBottle, 2), new Object[]{
"X X", "X X", " X ", Character.valueOf('X'), Block.glass
});
GameRegistry.addShapelessRecipe(new ItemStack(ModPigmanVillages.MilkBottle, 1), new Object[]{
new ItemStack(Item.bucketMilk.setContainerItem(Item.bucketEmpty)), new ItemStack(ModPigmanVillages.EmptyBottle)
});
GameRegistry.addShapelessRecipe(new ItemStack(ModPigmanVillages.BaconRaw, 4), new Object[]{
new ItemStack(ModPigmanVillages.BaconBlock)
});
FurnaceRecipes.smelting().addSmelting(ModPigmanVillages.BaconRaw.itemID, 0, new ItemStack(BaconCooked), 0.35F);
}
public static CreativeTabs tabPVM = new CreativeTabs("tabPVM") {
public ItemStack getIconItemStack() {
return new ItemStack(ModPigmanVillages.BaconRaw, 1, 0);
}
};
public void registerRenderInformation(){
RenderingRegistry.registerEntityRenderingHandler(EntityPigman.class, new RenderBiped(new ModelBiped(), 1.0F));
RenderingRegistry.registerEntityRenderingHandler(EntityPigmanA.class, new RenderBiped(new ModelBiped(), 1.0F));
RenderingRegistry.registerEntityRenderingHandler(EntityPigmanB.class, new RenderBiped(new ModelBiped(), 1.0F));
RenderingRegistry.registerEntityRenderingHandler(EntityPigmanC.class, new RenderBiped(new ModelBiped(), 1.0F));
RenderingRegistry.registerEntityRenderingHandler(EntityPigmanD.class, new RenderBiped(new ModelBiped(), 1.0F));
}
}
EntityPigman:
package pigmanvillages;
import java.io.PrintStream;
import java.util.*;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.INpc;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMoveIndoors;
import net.minecraft.entity.ai.EntityAIOpenDoor;
import net.minecraft.entity.ai.EntityAIPanic;
import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityPig;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraft.world.World;
public class EntityPigman extends EntityMob
{
private static final ItemStack defaultHeldItem;
public String npcName;
public EntityPigman(World world)
{
this(world, 0);
}
public EntityPigman(World world, int i)
{
super(world);
moveSpeed = 0.5F;
npcName = "Miner Pigman";
texture = "/pvm/pigmanm.png";
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 0.5F));
this.tasks.addTask(2, new EntityAIWander(this, 0.2F));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(4, new EntityAILookIdle(this));
this.tasks.addTask(5, new EntityAIMoveIndoors(this));
this.tasks.addTask(6, new EntityAIRestrictOpenDoor(this));
this.tasks.addTask(7, new EntityAIOpenDoor(this, true));
}
public boolean interact(EntityPlayer entityplayer)
{
entityplayer.addChatMessage("Hello");
return true;
}
public int getMaxHealth()
{
return 20;
}
public boolean isAIEnabled(){
return true;
}
protected void updateAITasks()
{
super.updateAITasks();
}
protected boolean canDespawn()
{
return false;
}
protected String getLivingSound()
{
return "mob.pig.say";
}
protected String getHurtSound()
{
return "mob.pig.hurt";
}
protected String getDeathSound()
{
return "mob.pig.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.playSound("mob.pig.step", 0.15F, 1.0F);
}
protected int getDropItemId()
{
return Block.cobblestone.blockID;
}
protected void dropFewItems(boolean par1, int par2)
{
int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2);
int var4;
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Block.cobblestone.blockID, 8);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.pickaxeIron.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
if (this.isBurning())
{
this.dropItem(ModPigmanVillages.BaconCooked.itemID, 1);
}
else
{
this.dropItem(ModPigmanVillages.BaconRaw.itemID, 1);
}
}
}
public void onStruckByLightning(EntityLightningBolt par1EntityLightningBolt)
{
if (!this.worldObj.isRemote)
{
EntityPigZombie var2 = new EntityPigZombie(this.worldObj);
var2.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
this.worldObj.spawnEntityInWorld(var2);
this.setDead();
}
}
protected boolean canTriggerWalking()
{
return false;
}
public ItemStack getHeldItem()
{
return defaultHeldItem;
}
static
{
defaultHeldItem=new ItemStack(Item.pickaxeIron, 1);
}
}
EntityPigmanA:
package pigmanvillages;
import java.io.PrintStream;
import java.util.*;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMoveIndoors;
import net.minecraft.entity.ai.EntityAIOpenDoor;
import net.minecraft.entity.ai.EntityAIPanic;
import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraft.world.World;
@SideOnly(Side.CLIENT)
public class EntityPigmanA extends EntityMob
{
public EntityPigmanA(World world)
{
this(world, 0);
}
public EntityPigmanA(World world, int i)
{
super(world);
moveSpeed = 0.5F;
npcName = PVMConfig.farmerPigmanName;
texture = "/pvm/pigmanf.png";
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 0.5F));
this.tasks.addTask(2, new EntityAIWander(this, 0.2F));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(4, new EntityAILookIdle(this));
this.tasks.addTask(5, new EntityAIMoveIndoors(this));
this.tasks.addTask(6, new EntityAIRestrictOpenDoor(this));
this.tasks.addTask(7, new EntityAIOpenDoor(this, true));
}
public boolean interact(EntityPlayer entityplayer)
{
entityplayer.addChatMessage("Hello.");
return true;
}
public int getMaxHealth()
{
return 20;
}
public boolean isAIEnabled(){
return true;
}
public void onLivingUpdate()
{
super.onLivingUpdate();
}
protected boolean canDespawn()
{
return false;
}
protected String getLivingSound()
{
return "mob.pig.say";
}
protected String getHurtSound()
{
return "mob.pig.hurt";
}
protected String getDeathSound()
{
return "mob.pig.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.playSound("mob.pig.step", 0.15F, 1.0F);
}
protected int getDropItemId()
{
return Item.seeds.itemID;
}
protected void dropFewItems(boolean par1, int par2)
{
int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2);
int var4;
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.seeds.itemID, 6);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.hoeIron.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
if (this.isBurning())
{
this.dropItem(ModPigmanVillages.BaconCooked.itemID, 1);
}
else
{
this.dropItem(ModPigmanVillages.BaconRaw.itemID, 1);
}
}
}
public ItemStack getHeldItem()
{
return defaultHeldItem;
}
static
{
defaultHeldItem=new ItemStack(Item.hoeIron, 1);
}
public void onStruckByLightning(EntityLightningBolt par1EntityLightningBolt)
{
if (!this.worldObj.isRemote)
{
EntityPigZombie var2 = new EntityPigZombie(this.worldObj);
var2.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
this.worldObj.spawnEntityInWorld(var2);
this.setDead();
}
}
public int npcName;
private static final ItemStack defaultHeldItem;
}
EntityPigmanB:
package pigmanvillages;
import java.io.PrintStream;
import java.util.*;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMoveIndoors;
import net.minecraft.entity.ai.EntityAIOpenDoor;
import net.minecraft.entity.ai.EntityAIPanic;
import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraft.world.World;
public class EntityPigmanB extends EntityMob
{
public EntityPigmanB(World world)
{
this(world, 0);
}
public EntityPigmanB(World world, int i)
{
super(world);
moveSpeed = 0.3F;
this.setSize (0.3F, 0.2F);
npcName = "Baby Pigman";
texture = "/pvm/pigmanb.png";
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 0.4F));
this.tasks.addTask(2, new EntityAIWander(this, 0.2F));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(4, new EntityAILookIdle(this));
this.tasks.addTask(5, new EntityAIMoveIndoors(this));
this.tasks.addTask(6, new EntityAIRestrictOpenDoor(this));
this.tasks.addTask(7, new EntityAIOpenDoor(this, true));
}
public boolean interact(EntityPlayer entityplayer)
{
entityplayer.addChatMessage("Hello");
return true;
}
public int getMaxHealth()
{
return 10;
}
public boolean isAIEnabled(){
return true;
}
public void onLivingUpdate()
{
super.onLivingUpdate();
}
protected boolean canDespawn()
{
return false;
}
protected String getLivingSound()
{
return "mob.pig.say";
}
protected String getHurtSound()
{
return "mob.pig.hurt";
}
protected String getDeathSound()
{
return "mob.pig.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.playSound("mob.pig.step", 0.15F, 1.0F);
}
protected void dropFewItems(boolean par1, int par2)
{
int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2);
int var4;
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(ModPigmanVillages.MilkBottle.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
if (this.isBurning())
{
this.dropItem(ModPigmanVillages.BaconCooked.itemID, 1);
}
else
{
this.dropItem(ModPigmanVillages.BaconRaw.itemID, 1);
}
}
}
public void onStruckByLightning(EntityLightningBolt par1EntityLightningBolt)
{
if (!this.worldObj.isRemote)
{
EntityPigZombie var2 = new EntityPigZombie(this.worldObj);
var2.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
this.worldObj.spawnEntityInWorld(var2);
this.setDead();
}
}
public ItemStack getHeldItem()
{
return defaultHeldItem;
}
static
{
defaultHeldItem=new ItemStack(ModPigmanVillages.MilkBottle, 1);
}
private static final ItemStack defaultHeldItem;
public String npcName;
}
EntityPigmanC:
package pigmanvillages;
import java.io.PrintStream;
import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.ai.EntityAIAttackOnCollide;
import net.minecraft.entity.ai.EntityAIHurtByTarget;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMoveIndoors;
import net.minecraft.entity.ai.EntityAINearestAttackableTarget;
import net.minecraft.entity.ai.EntityAIOpenDoor;
import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.monster.EntitySkeleton;
import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraft.world.World;
public class EntityPigmanC extends EntityMob
{
public EntityPigmanC(World world)
{
this(world, 0);
}
public EntityPigmanC(World world, int i)
{
super(world);
moveSpeed = 0.5F;
npcName = PVMConfig.hunterPigmanName;
texture = "/pvm/pigmanh.png";
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIWander(this, 0.2F));
this.tasks.addTask(2, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(3, new EntityAILookIdle(this));
this.tasks.addTask(4, new EntityAIMoveIndoors(this));
this.tasks.addTask(5, new EntityAIRestrictOpenDoor(this));
this.tasks.addTask(6, new EntityAIOpenDoor(this, true));
this.tasks.addTask(7, new EntityAIAttackOnCollide(this, EntityCow.class, this.moveSpeed, true));
this.tasks.addTask(8, new EntityAIAttackOnCollide(this, EntityChicken.class, this.moveSpeed, true));
this.tasks.addTask(9, new EntityAIAttackOnCollide(this, EntityZombie.class, this.moveSpeed, true));
this.tasks.addTask(10, new EntityAIAttackOnCollide(this, EntitySkeleton.class, this.moveSpeed, true));
this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true));
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityCow.class, 4.0F, 0, false));
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityChicken.class, 4.0F, 0, false));
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityZombie.class, 4.0F, 0, true));
this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntitySkeleton.class, 4.0F, 0, true));
}
public boolean interact(EntityPlayer entityplayer)
{
entityplayer.addChatMessage("Hello");
return true;
}
public int getMaxHealth()
{
return 25;
}
public boolean isAIEnabled(){
return true;
}
public void onLivingUpdate()
{
super.onLivingUpdate();
}
public int getAttackStrength(Entity par1Entity)
{
ItemStack var2 = this.getHeldItem();
int var3 = 5;
if (var2 != null)
{
var3 += var2.getDamageVsEntity(this);
}
return var3;
}
protected boolean canDespawn()
{
return false;
}
protected String getLivingSound()
{
return "mob.pig.say";
}
protected String getHurtSound()
{
return "mob.pig.hurt";
}
protected String getDeathSound()
{
return "mob.pig.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.playSound("mob.pig.step", 0.15F, 1.0F);
}
protected int getDropItemId()
{
return Block.cobblestone.blockID;
}
protected void dropFewItems(boolean par1, int par2)
{
int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2);
int var4;
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Block.cobblestone.blockID, 6);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.pickaxeIron.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
if (this.isBurning())
{
this.dropItem(ModPigmanVillages.BaconCooked.itemID, 1);
}
else
{
this.dropItem(ModPigmanVillages.BaconRaw.itemID, 1);
}
}
}
public void onStruckByLightning(EntityLightningBolt par1EntityLightningBolt)
{
if (!this.worldObj.isRemote)
{
EntityPigZombie var2 = new EntityPigZombie(this.worldObj);
var2.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
this.worldObj.spawnEntityInWorld(var2);
this.setDead();
}
}
public ItemStack getHeldItem()
{
return defaultHeldItem;
}
static
{
defaultHeldItem=new ItemStack(Item.swordIron, 1);
}
private static final ItemStack defaultHeldItem;
public int npcName;
}
EntityPigmanD:
package pigmanvillages;
import java.io.PrintStream;
import java.util.*;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityAgeable;
import net.minecraft.entity.ai.EntityAILookIdle;
import net.minecraft.entity.ai.EntityAIMoveIndoors;
import net.minecraft.entity.ai.EntityAIOpenDoor;
import net.minecraft.entity.ai.EntityAIPanic;
import net.minecraft.entity.ai.EntityAIRestrictOpenDoor;
import net.minecraft.entity.ai.EntityAISwimming;
import net.minecraft.entity.ai.EntityAIWander;
import net.minecraft.entity.ai.EntityAIWatchClosest;
import net.minecraft.entity.effect.EntityLightningBolt;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.entity.monster.EntityPigZombie;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.src.ModLoader;
import net.minecraft.world.World;
public class EntityPigmanD extends EntityMob
{
public EntityPigmanD(World world)
{
this(world, 0);
}
public EntityPigmanD(World world, int i)
{
super(world);
moveSpeed = 0.5F;
npcName = "Mayor Pigman";
texture = "/pvm/pigmanm2.png";
this.tasks.addTask(0, new EntityAISwimming(this));
this.tasks.addTask(1, new EntityAIPanic(this, 0.5F));
this.tasks.addTask(2, new EntityAIWander(this, 0.2F));
this.tasks.addTask(3, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F));
this.tasks.addTask(4, new EntityAILookIdle(this));
this.tasks.addTask(5, new EntityAIMoveIndoors(this));
this.tasks.addTask(6, new EntityAIRestrictOpenDoor(this));
this.tasks.addTask(7, new EntityAIOpenDoor(this, true));
}
public boolean interact(EntityPlayer entityplayer)
{
entityplayer.addChatMessage("Hello");
return true;
}
public int getMaxHealth()
{
return 20;
}
public boolean isAIEnabled(){
return true;
}
public void onLivingUpdate()
{
super.onLivingUpdate();
}
protected boolean canDespawn()
{
return false;
}
protected String getLivingSound()
{
return "mob.pig.say";
}
protected String getHurtSound()
{
return "mob.pig.hurt";
}
protected String getDeathSound()
{
return "mob.pig.death";
}
protected void playStepSound(int par1, int par2, int par3, int par4)
{
this.playSound("mob.pig.step", 0.15F, 1.0F);
}
protected int getDropItemId()
{
return Item.diamond.itemID;
}
protected void dropFewItems(boolean par1, int par2)
{
int var3 = this.rand.nextInt(3) + this.rand.nextInt(1 + par2);
int var4;
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.diamond.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
this.dropItem(Item.blazeRod.itemID, 1);
}
var3 = this.rand.nextInt(3) + 1 + this.rand.nextInt(1 + par2);
for (var4 = 0; var4 < var3; ++var4)
{
if (this.isBurning())
{
this.dropItem(ModPigmanVillages.BaconCooked.itemID, 1);
}
else
{
this.dropItem(ModPigmanVillages.BaconRaw.itemID, 1);
}
}
}
public void onStruckByLightning(EntityLightningBolt par1EntityLightningBolt)
{
if (!this.worldObj.isRemote)
{
EntityPigZombie var2 = new EntityPigZombie(this.worldObj);
var2.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch);
this.worldObj.spawnEntityInWorld(var2);
this.setDead();
}
}
public ItemStack getHeldItem()
{
return defaultHeldItem;
}
static
{
defaultHeldItem=new ItemStack(Item.blazeRod, 1);
}
private static final ItemStack defaultHeldItem;
public String npcName;
}
I have a few problems with my mobs:
1) Why doesn't my mobs render their items which they hold? (this worked perfectly with ModLoader)
2) Why is "EntityPigmanB" normal-sized even though I changes its size with "this.setSize" (this also worked perfectly with ModLoader)
3) When I right click EntityPigmanA & B, no message shows up and when I right click the three other pigmans, the message shows twice. Why?
My code:
ModPigmanVillages:
EntityPigman:
EntityPigmanA: