package com.bernard.torch.blocks; import com.bernard.torch.TorchMod; import com.bernard.torch.blocks.tileentities.TorchRechargerTileEntity; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class TorchRechargerBlock extends Block { private IIcon iconTop; private IIcon iconBottom; private IIcon iconFaces; public static String[] names = { "torch_recharger", "coal_torch_recharger", "iron_torch_recharger", "quartz_torch_recharger", "gold_torch_recharger", "redstone_torch_recharger", "lapis_torch_recharger", "diamond_torch_recharger", "emerald_torch_recharger" }; public IIcon[][] textures = new IIcon[names.length][3]; public TorchRechargerBlock() { super(Material.iron); setHarvestLevel("pickaxe", 2); setHardness(10.0F); setCreativeTab(CreativeTabs.tabDecorations); setLightLevel(10.0F); setResistance(1000.0F); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { if (!world.isRemote) { TorchRechargerTileEntity te = (TorchRechargerTileEntity)world.getTileEntity(x, y, z); player.openGui(TorchMod.MOD_INSTANCE, 0, world, x, y, z); } return true; } public void breakBlock(World world, int x, int y, int z, Block block, int meta) { TileEntity te = world.getTileEntity(x, y, z); if ((te instanceof TorchRechargerTileEntity)) { TorchRechargerTileEntity torchRecharger = (TorchRechargerTileEntity)te; int torches = Math.floorDiv(torchRecharger.getTorchValue(), 4); int sticks = Math.floorDiv(torchRecharger.getStickValue(), 4); int coals = Math.floorDiv(torchRecharger.getCoalValue(), 4); double dropX = x + world.rand.nextFloat() * 0.8F + 0.1F;double dropY = y + world.rand.nextFloat() * 0.8F + 0.1F; double dropZ = z + world.rand.nextFloat() * 0.8F + 0.1F; while ((torches > 0) || (sticks > 0) || (coals > 0)) { if (torches > 0) { EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Blocks.torch, Math.min(torches, 64), 0)); item.motionX = ((float)world.rand.nextGaussian() * 0.05F); item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); torches -= Math.min(torches, 64); world.spawnEntityInWorld(item); } if (sticks > 0) { EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.stick, Math.min(sticks, 64), 0)); item.motionX = ((float)world.rand.nextGaussian() * 0.05F); item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); sticks -= Math.min(sticks, 64); world.spawnEntityInWorld(item); } if (coals > 0) { EntityItem item = new EntityItem(world, dropX, dropY, dropZ, new ItemStack(Items.coal, Math.min(coals, 64), 0)); item.motionX = ((float)world.rand.nextGaussian() * 0.05F); item.motionY = ((float)world.rand.nextGaussian() * 0.05F + 0.2F); item.motionZ = ((float)world.rand.nextGaussian() * 0.05F); coals -= Math.min(coals, 64); world.spawnEntityInWorld(item); } } world.updateNeighborsAboutBlockChange(x, y, z, block); world.removeTileEntity(x, y, z); } super.breakBlock(world, x, y, z, block, meta); } public boolean hasTileEntity(int metadata) { return true; } public TileEntity createTileEntity(World world, int metadata) { return new TorchRechargerTileEntity(); } public void getSubBlocks(Item item, CreativeTabs tab, List l) { for (int i = 0; i < names.length; i++) { l.add(new ItemStack(item, 1, i)); } } public void registerIcons(IIconRegister r) { for (int i = 0; i < this.textures.length; i++) { this.textures[i][0] = r.registerIcon("torch_mod:" + names[i] + "_bottom"); this.textures[i][1] = r.registerIcon("torch_mod:" + names[i] + "_top"); this.textures[i][2] = r.registerIcon("torch_mod:" + names[i] + "_side"); } } public int damageDropped(int meta) { return meta; } public IIcon getIcon(int side, int meta) { if ((meta >= this.textures.length) || (meta < 0)) return this.textures[0][0]; switch (side) { case 0: return this.textures[meta][0]; case 1: return this.textures[meta][1]; } return this.textures[meta][2]; } }