package minefantasy.block; import java.util.Random; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import minefantasy.api.aesthetic.IChimney; import minefantasy.block.tileentity.TileEntityBFurnace; import minefantasy.system.data_minefantasy; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; public class BlockChimney extends Block implements IChimney{ private Icon[] icons = new Icon[14]; private String[] names = new String[]{"ChimneyIron_Side", "ChimneyIron_Top", "ChimneySteel_Side", "ChimneySteel_Top", "ChimneyCobblestone_Side", "ChimneyCobblestone_Top", "ChimneyBrick_Side", "ChimneyBrick_Top", "ChimneyBronze_Side", "ChimneyBronze_Top", "ChimneyDeepIron_Side", "ChimneyDeepIron_Top"}; public BlockChimney(int id) { super(id, Material.rock); setCreativeTab(CreativeTabs.tabDecorations); float f = 3F/16F; setBlockBounds(f, 0F, f, 1-f, 1F, 1-f); } @Override public boolean renderAsNormalBlock() { return false; } @Override public boolean isOpaqueCube() { return false; } @Override public Icon getIcon(int side, int metadata) { int ic = metadata*2; if(side <= 1)ic ++; return icons[ic]; } @Override public boolean puffSmoke(World world, int x, int y, int z, float num, float speedX, float speedY) { IChimney chimney = (IChimney)Block.blocksList[world.getBlockId(x, y, z)]; if(chimney == null) { return false; } Random rand = new Random(); if(Block.blocksList[world.getBlockId(x, y+1, z)] instanceof IChimney) { IChimney chimney2 = (IChimney)Block.blocksList[world.getBlockId(x, y+1, z)]; return chimney2.puffSmoke(world, x, y+1, z, num, speedX, speedY); } for(int a = 0; a < 30*num ; a ++) { if(!world.isBlockSolidOnSide(x, y+1, z, ForgeDirection.DOWN)) world.spawnParticle("largesmoke", x+0.5F, y+1, z+0.5F, (rand.nextFloat()-0.5F)/6*speedX, 0.065F*speedY, (rand.nextFloat()-0.5F)/6*speedX); } return true; } @Override public int damageDropped(int meta) { return meta; } @SideOnly(Side.CLIENT) /** * When this method is called, your block should register all the icons it needs with the given IconRegister. This * is the only chance you get to register icons. */ public void registerIcons(IconRegister reg) { icons = new Icon[names.length]; for(int a = 0; a < names.length; a++) { icons[a] = reg.registerIcon("minefantasy:Furn/" + names [a]); } } }