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