package buildcraftAdditions.blocks; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraftforge.common.util.ForgeDirection; import buildcraftAdditions.BuildcraftAdditions; import buildcraftAdditions.reference.Variables; import buildcraftAdditions.tileEntities.TileHeatedFurnace; import buildcraftAdditions.utils.RenderUtils; import buildcraftAdditions.utils.Utils; /** * Copyright (c) 2014-2015, AEnterprise * http://buildcraftadditions.wordpress.com/ * Buildcraft Additions is distributed under the terms of GNU GPL v3.0 * Please check the contents of the license located in * http://buildcraftadditions.wordpress.com/wiki/licensing-stuff/ */ public class BlockHeatedFurnace extends BlockBase { @SideOnly(Side.CLIENT) private IIcon front, back, sides, top, bottom, frontActivated; public BlockHeatedFurnace() { super("blockHeatedFurnace"); } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new TileHeatedFurnace(); } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int par6, float par7, float par8, float par9) { if (!world.isRemote) entityplayer.openGui(BuildcraftAdditions.instance, Variables.Gui.HEATED_FURNACE.ordinal(), world, x, y, z); return true; } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { TileEntity tile = world.getTileEntity(x, y, z); if (tile instanceof TileHeatedFurnace) { TileHeatedFurnace furnace = (TileHeatedFurnace) tile; furnace.updateCoils(); } } @Override public void onPostBlockPlaced(World world, int x, int y, int z, int meta) { TileEntity tile = world.getTileEntity(x, y, z); if (tile instanceof TileHeatedFurnace) { TileHeatedFurnace furnace = (TileHeatedFurnace) tile; furnace.updateCoils(); } } @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { world.setBlockMetadataWithNotify(x, y, z, Utils.get2dOrientation(entity).getOpposite().ordinal(), 3); } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { int meta = world.getBlockMetadata(x, y, z); if (meta == 0 && side == 3) return front; if (side == meta && meta > 1) { TileHeatedFurnace furnace = (TileHeatedFurnace) world.getTileEntity(x, y, z); if (furnace.isCooking) { return frontActivated; } return front; } switch (side) { case 0: return bottom; case 1: return top; case 5: return back; default: return sides; } } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { if (meta == 0 && side == 3) return front; if (side == meta && meta > 1) return front; if (side == ForgeDirection.getOrientation(meta).getOpposite().ordinal()) switch (side) { case 0: return bottom; case 1: return top; } return sides; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister register) { front = RenderUtils.registerIcon(register, "heatedFurnace/Front"); frontActivated = RenderUtils.registerIcon(register, "heatedFurnace/Front_on"); top = RenderUtils.registerIcon(register, "heatedFurnace/Top"); back = RenderUtils.registerIcon(register, "heatedFurnace/Back"); bottom = RenderUtils.registerIcon(register, "heatedFurnace/Bottom"); sides = RenderUtils.registerIcon(register, "heatedFurnace/Side"); } }