package com.pixelutilitys.blocks; import com.pixelutilitys.creativetabs.PixelUtilitysCreativeTabs; import com.pixelutilitys.tileentitys.BoxEntity; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import java.util.Random; public class BoxBlock extends BlockContainer { public BoxBlock() { super(Material.cloth); this.setBlockBounds(0.4F, 0.0F, 1.0F, 0.6F, 3.0F, 0.6F); setCreativeTab(PixelUtilitysCreativeTabs.tabPokefurniture); } /** * Returns a bounding box from the pool of bounding boxes (this means this * box can change after the pool has been cleared to be reused) */ @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { this.setBlockBounds(par1World.getBlockMetadata(par2, par3, par4)); return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4); } /** * Returns the bounding box of the wired rectangular prism to render. */ @SideOnly(Side.CLIENT) @Override public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) { this.setBlockBounds(par1World.getBlockMetadata(par2, par3, par4)); return super.getSelectedBoundingBoxFromPool(par1World, par2, par3, par4); } @Override public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) { int l = par1IBlockAccess.getBlockMetadata(par2, par3, par4); if ((l & 4) != 0) { this.setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); } else { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons(IIconRegister par1IconRegister) { blockIcon = par1IconRegister.registerIcon("pixelutilitys:Box"); } public void setBlockBounds(int stage) { this.setBlockBounds(0f, 0, 0f, 1f, 1.0f, 1f); } @Override public int quantityDropped(Random random) { return 1; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public int getRenderType() { return -1; } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new BoxEntity(); } @Override public void onBlockAdded(World par1World, int par2, int par3, int par4) { super.onBlockAdded(par1World, par2, par3, par4); this.setDefaultDirection(par1World, par2, par3, par4); } /** * set a blocks direction */ private void setDefaultDirection(World par1World, int par2, int par3, int par4) { if (!par1World.isRemote) { Block l = par1World.getBlock(par2, par3, par4 - 1); Block i1 = par1World.getBlock(par2, par3, par4 + 1); Block j1 = par1World.getBlock(par2 - 1, par3, par4); Block k1 = par1World.getBlock(par2 + 1, par3, par4); byte b0 = 3; if (l.func_149730_j() && !i1.func_149730_j()) { b0 = 3; } if (i1.func_149730_j() && !l.func_149730_j()) { b0 = 2; } if (j1.func_149730_j() && !k1.func_149730_j()) { b0 = 5; } if (k1.func_149730_j() && !j1.func_149730_j()) { b0 = 4; } par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2); } } }