package com.RainbowCraft.Plants.pots;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import com.RainbowCraft.RainbowCraftMain;
import com.RainbowCraft.Tiles.NewTileEntityHopper;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.BlockCrops;
import net.minecraft.block.BlockHopper;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.tileentity.TileEntityHopper;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.Facing;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
public class ImprovedRainbowFlowerPot extends BlockHopper{
private final Random field_149922_a = new Random();
private IIcon[] Texture_1 = new IIcon[] {null, null, null, null};
private IIcon Texture_2;
private IIcon Texture_3;
public int stage;
public int plus = -1;
public ImprovedRainbowFlowerPot(int Stage) {
super();
stage = Stage;
GameRegistry.registerBlock(this, "ImprovedRainbowFlowerPot" + stage);
LanguageRegistry.addName(this, "Improved Rainbow Flower Pot");
this.setBlockName("Improved Rainbow Flower Pot");
if(Stage == 3)
this.setCreativeTab(RainbowCraftMain.BlockTab);
else
this.setCreativeTab(null);
this.textureName = RainbowCraftMain.modid + ":ImprovedRainbowFlowerPot";
this.blockHardness = 7.0F;
this.setHarvestLevel("pickaxe", 2);
this.setResistance(7.0f);
this.setLightLevel(0.4F);
}
public ImprovedRainbowFlowerPot(int Stage, int Plus) {
super();
plus = Plus;
stage = Stage;
GameRegistry.registerBlock(this, "ImprovedRainbowFlowerPot" + stage + "_" + plus);
LanguageRegistry.addName(this, "Improved Rainbow Flower Pot");
this.setBlockName("Improved Rainbow Flower Pot");
if(Stage == 3)
this.setCreativeTab(RainbowCraftMain.BlockTab);
else
this.setCreativeTab(null);
this.textureName = RainbowCraftMain.modid + ":ImprovedRainbowFlowerPot";
this.blockHardness = 7.0F;
this.setHarvestLevel("pickaxe", 2);
this.setResistance(7.0f);
this.setLightLevel(0.4F);
}
public void registerBlockIcons(IIconRegister p_149651_1_)
{
this.Texture_1[0] = p_149651_1_.registerIcon(this.getTextureName() + "_top_0");
this.Texture_1[1] = p_149651_1_.registerIcon(this.getTextureName() + "_top_1");
this.Texture_1[2] = p_149651_1_.registerIcon(this.getTextureName() + "_top_2");
this.Texture_1[3] = p_149651_1_.registerIcon(this.getTextureName() + "_top_3");
this.Texture_2 = p_149651_1_.registerIcon(this.getTextureName() + "_front");
this.Texture_3 = p_149651_1_.registerIcon(this.getTextureName() + "_down");
}
public IIcon getIcon(int p_149691_1_, int p_149691_2_)
{
return p_149691_1_ == 1 ? this.Texture_1[stage] : (p_149691_1_ == 0 ? Texture_3 : Texture_2);
}
public void addCollisionBoxesToList(World p_149743_1_, int p_149743_2_, int p_149743_3_, int p_149743_4_, AxisAlignedBB p_149743_5_, List p_149743_6_, Entity p_149743_7_)
{
AxisAlignedBB axisalignedbb1 = this.getCollisionBoundingBoxFromPool(p_149743_1_, p_149743_2_, p_149743_3_, p_149743_4_);
if (axisalignedbb1 != null && p_149743_5_.intersectsWith(axisalignedbb1))
{
p_149743_6_.add(axisalignedbb1);
}
}
/**
* Returns a new instance of a block's tile entity class. Called on placing the block.
*/
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_)
{
return new NewTileEntityHopper(stage, plus);
}
/**
* Called when the block is placed in the world.
*/
public void onBlockPlacedBy(World p_149689_1_, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_)
{
super.onBlockPlacedBy(p_149689_1_, p_149689_2_, p_149689_3_, p_149689_4_, p_149689_5_, p_149689_6_);
if (p_149689_6_.hasDisplayName())
{
NewTileEntityHopper var7 = (NewTileEntityHopper)func_149920_e(p_149689_1_, p_149689_2_, p_149689_3_, p_149689_4_);
var7.func_145886_a(p_149689_6_.getDisplayName());
}
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i1, float f1, float f2, float f3)
{
if (world.isRemote)
{
return true;
}
else
{
NewTileEntityHopper tile = func_149920_e(world, x, y, z);
if (tile != null)
{
player.func_146093_a(tile);
}
return true;
}
}
public void breakBlock(World world, int x, int y, int z, Block block, int i1)
{
NewTileEntityHopper tile = (NewTileEntityHopper)world.getTileEntity(x, y, z);
if (tile != null)
{
for (int i = 0; i < tile.getSizeInventory(); ++i)
{
ItemStack stack = tile.getStackInSlot(i);
if (stack != null)
{
float f1 = this.field_149922_a.nextFloat() * 0.8F + 0.1F;
float f2 = this.field_149922_a.nextFloat() * 0.8F + 0.1F;
float f3 = this.field_149922_a.nextFloat() * 0.8F + 0.1F;
while (stack.stackSize > 0)
{
int ii = this.field_149922_a.nextInt(21) + 10;
if (ii > stack.stackSize)
{
ii = stack.stackSize;
}
stack.stackSize -= ii;
EntityItem item = new EntityItem(world, (double)((float)x + f1), (double)((float)y + f2), (double)((float)z + f3), new ItemStack(stack.getItem(), ii, stack.getItemDamage()));
if (stack.hasTagCompound())
{
item.getEntityItem().setTagCompound((NBTTagCompound)stack.getTagCompound().copy());
}
float f4 = 0.05F;
item.motionX = (double)((float)this.field_149922_a.nextGaussian() * f4);
item.motionY = (double)((float)this.field_149922_a.nextGaussian() * f4 + 0.2F);
item.motionZ = (double)((float)this.field_149922_a.nextGaussian() * f4);
world.spawnEntityInWorld(item);
}
}
}
world.func_147453_f(x, y, z, block);
}
super.breakBlock(world, x, y, z, block, i1);
}
/**
* The type of render function that is called for this block
*/
public int getRenderType()
{
return 0;
}
public boolean isOpaqueCube()
{
return true;
}
public String getItemIconName()
{
return null;
}
public static NewTileEntityHopper func_149920_e(IBlockAccess p_149920_0_, int p_149920_1_, int p_149920_2_, int p_149920_3_)
{
return (NewTileEntityHopper)p_149920_0_.getTileEntity(p_149920_1_, p_149920_2_, p_149920_3_);
}
}