package universalelectricity.prefab.multiblock; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import universalelectricity.core.UniversalElectricity; import universalelectricity.core.vector.Vector3; public class BlockMulti extends BlockContainer { public String textureName = null; public String channel = ""; public BlockMulti() { super(UniversalElectricity.machine); this.setHardness(0.8F); //TODO WTF //this.setUnlocalizedName("multiBlock"); } public BlockMulti setChannel(String channel) { this.channel = channel; return this; } public BlockMulti setTextureName(String name) { this.textureName = name; return this; } public void makeFakeBlock(World worldObj, Vector3 position, Vector3 mainBlock) { worldObj.setBlock(position.intX(), position.intY(), position.intZ(), this); ((TileEntityMulti)worldObj.getTileEntity(position.intX(), position.intY(), position.intZ())).setMainBlock(mainBlock); } @SideOnly(Side.CLIENT) @Override public void registerBlockIcons(IIconRegister iconRegister) { if(this.textureName != null) { this.blockIcon = iconRegister.registerIcon(this.textureName); } else { super.registerBlockIcons(iconRegister); } } @Override public void breakBlock(World world, int x, int y, int z, Block par5, int par6) { TileEntity tileEntity = world.getTileEntity(x, y, z); if(tileEntity instanceof TileEntityMulti) { ((TileEntityMulti)tileEntity).onBlockRemoval(); } super.breakBlock(world, x, y, z, par5, par6); } @Override public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { TileEntityMulti tileEntity = (TileEntityMulti)par1World.getTileEntity(x, y, z); return tileEntity.onBlockActivated(par1World, x, y, z, par5EntityPlayer); } @Override public int quantityDropped(Random par1Random) { return 0; } @Override public int getRenderType() { return -1; } @Override public boolean isOpaqueCube() { return false; } @Override public boolean renderAsNormalBlock() { return false; } @Override public TileEntity createNewTileEntity(World var1, int meta) { return new TileEntityMulti(this.channel); } public ItemStack getPickBlock(MovingObjectPosition target, World par1World, int x, int y, int z) { TileEntity tileEntity = par1World.getTileEntity(x, y, z); Vector3 mainBlockPosition = ((TileEntityMulti)tileEntity).mainBlockPosition; if(mainBlockPosition != null) { Block mainBlockID = par1World.getBlock(mainBlockPosition.intX(), mainBlockPosition.intY(), mainBlockPosition.intZ()); if(mainBlockID != Blocks.air) { return mainBlockID.getPickBlock(target, par1World, mainBlockPosition.intX(), mainBlockPosition.intY(), mainBlockPosition.intZ()); } } return null; } }