    001    package net.minecraft.src;
    002
    003    import java.util.ArrayList;
    004
    005    import net.minecraftforge.common.IShearable;
    006
    007    public class EntityMooshroom extends EntityCow implements IShearable
    008    {
    009        public EntityMooshroom(World par1World)
    010        {
    011            super(par1World);
    012            this.texture = "/mob/redcow.png";
    013            this.setSize(0.9F, 1.3F);
    014        }
    015
    016        /**
    017         * Called when a player interacts with a mob. e.g. gets milk from a cow, gets into the saddle on a pig.
    018         */
    019        public boolean interact(EntityPlayer par1EntityPlayer)
    020        {
    021            ItemStack var2 = par1EntityPlayer.inventory.getCurrentItem();
    022
    023            if (var2 != null && var2.itemID == Item.bowlEmpty.shiftedIndex && this.getGrowingAge() >= 0)
    024            {
    025                if (var2.stackSize == 1)
    026                {
    027                    par1EntityPlayer.inventory.setInventorySlotContents(par1EntityPlayer.inventory.currentItem, new ItemStack(Item.bowlSoup));
    028                    return true;
    029                }
    030
    031                if (par1EntityPlayer.inventory.addItemStackToInventory(new ItemStack(Item.bowlSoup)) && !par1EntityPlayer.capabilities.isCreativeMode)
    032                {
    033                    par1EntityPlayer.inventory.decrStackSize(par1EntityPlayer.inventory.currentItem, 1);
    034                    return true;
    035                }
    036            }
    037
    038            return super.interact(par1EntityPlayer);
    039        }
    040
    041        /**
    042         * This function is used when two same-species animals in 'love mode' breed to generate the new baby animal.
    043         */
    044        public EntityAnimal spawnBabyAnimal(EntityAnimal par1EntityAnimal)
    045        {
    046            return new EntityMooshroom(this.worldObj);
    047        }
    048
    049        @Override
    050        public boolean isShearable(ItemStack item, World world, int X, int Y, int Z)
    051        {
    052            return getGrowingAge() >= 0;
    053        }
    054
    055        @Override
    056        public ArrayList<ItemStack> onSheared(ItemStack item, World world, int X, int Y, int Z, int fortune)
    057        {
    058            setDead();
    059            EntityCow entitycow = new EntityCow(worldObj);
    060            entitycow.setLocationAndAngles(posX, posY, posZ, rotationYaw, rotationPitch);
    061            entitycow.setEntityHealth(getHealth());
    062            entitycow.renderYawOffset = renderYawOffset;
    063            worldObj.spawnEntityInWorld(entitycow);
    064            worldObj.spawnParticle("largeexplode", posX, posY + (double)(height / 2.0F), posZ, 0.0D, 0.0D, 0.0D);
    065
    066            ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
    067            for (int x = 0; x < 5; x++)
    068            {
    069                ret.add(new ItemStack(Block.mushroomRed));
    070            }
    071            return ret;
    072        }
    073    }