Posted February 9, 201312 yr Hey guys, I really need some help with something I am trying to code. Before I start don't ask about the weird stuff I am trying to create So I am trying to create a Wooden Bucket, that when you right click on a pig with, you get a bucket of urine. I have declared the WoodenBucket and WoodenBucketUrine in the main class and I have made ItemWoodenBucket and ItemWoodenBucketUrine. From there I tried copying the code from bucket where it allows you to milk a cow, over to the ItemWoodenBucket (And renamed everything obviously). I tried with that and it didn't work. After that I made a GemcraftPig class where I made it extend EntityPig and copied over the bit of code from EntityCow where you can milk it. It still didn't work. Could someone help me out? I basically need to know how to make my Wooden Bucket "Milk" a pig, when you right click one, to get my Wooden Bucket of Urine.
February 9, 201312 yr Author It's a bit of a mess at the moment (btw I am a little inexperienced in java modding). This is what I have for the ItemWoodenBucket class: public class ItemWoodenBucket extends Item{ public ItemWoodenBucket(int par1) { super(par1); setMaxStackSize(64); setCreativeTab(CreativeTabs.tabMisc); } public String getTextureFile(){ return "/gemcraft/gemcraft_textures.png"; } private int isFull; public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { float var4 = 1.0F; double var5 = par3EntityPlayer.prevPosX + (par3EntityPlayer.posX - par3EntityPlayer.prevPosX) * (double)var4; double var7 = par3EntityPlayer.prevPosY + (par3EntityPlayer.posY - par3EntityPlayer.prevPosY) * (double)var4 + 1.62D - (double)par3EntityPlayer.yOffset; double var9 = par3EntityPlayer.prevPosZ + (par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ) * (double)var4; boolean var11 = this.isFull == 0; MovingObjectPosition var12 = this.getMovingObjectPositionFromPlayer(par2World, par3EntityPlayer, var11); if (this.isFull == 0 && var12.entityHit instanceof GemcraftPig) { return new ItemStack(gemcraft.WoodenBucketUrine); } return par1ItemStack; } } And this is what I have for my GemcraftPig class: public class GemcraftPig extends EntityPig{ private final EntityAIControlledByPlayer aiControlledByPlayer; public GemcraftPig(World par1World) { super(par1World); this.texture = "/mob/pig.png"; this.setSize(0.9F, 0.9F); this.getNavigator().setAvoidsWater(true); float var2 = 0.25F; this.tasks.addTask(0, new EntityAISwimming(this)); this.tasks.addTask(1, new EntityAIPanic(this, 0.38F)); this.tasks.addTask(2, this.aiControlledByPlayer = new EntityAIControlledByPlayer(this, 0.34F)); this.tasks.addTask(3, new EntityAIMate(this, var2)); this.tasks.addTask(4, new EntityAITempt(this, 0.3F, Item.carrotOnAStick.itemID, false)); this.tasks.addTask(4, new EntityAITempt(this, 0.3F, Item.carrot.itemID, false)); this.tasks.addTask(5, new EntityAIFollowParent(this, 0.28F)); this.tasks.addTask(6, new EntityAIWander(this, var2)); this.tasks.addTask(7, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); } public boolean interact(EntityPlayer par1EntityPlayer) { ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem(); if (var2 != null && var2.itemID == gemcraft.WoodenBucket.itemID) { if (--var2.stackSize <= 0) { par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, new ItemStack(gemcraft.WoodenBucketUrine)); } else if (!par1EntityPlayer.inventory.addItemStackToInventory(new ItemStack(gemcraft.WoodenBucketUrine))) { par1EntityPlayer.dropPlayerItem(new ItemStack(gemcraft.WoodenBucketUrine.itemID, 1, 0)); } return true; } else { return super.interact(par1EntityPlayer); } } }
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.