package minefantasy.block.special; import java.util.ArrayList; import java.util.Random; import minefantasy.block.tileentity.TileEntityLantern; import minefantasy.system.cfg; import minefantasy.system.data_minefantasy; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Icon; import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * * @author Anonymous Productions * * Sources are provided for educational reasons. * though small bits of code, or methods can be used in your own creations. */ public class BlockLantern extends BlockContainer { public BlockLantern(int i, int n, Material m) { super(i, m); this.setCreativeTab(CreativeTabs.tabDecorations); } public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { float offset = 0.25F; return AxisAlignedBB.getAABBPool().getAABB((double) ((float) x + offset), (double) y, (double) ((float) z + offset), (double) ((float) (x + 1) - offset), (double) ((float) (y + 1) - offset), (double) ((float) (z + 1) - offset)); } @Override public Icon getIcon(int side, int meta) { return Block.torchWood.getIcon(side, meta); } public void randomDisplayTick(World world, int x, int y, int z, Random rand) { float partX = (float) x + 0.5F; float partY = (float) y + 0.5F + rand.nextFloat() * 6.0F / 16.0F; float partZ = (float) z + 0.5F; float zRand = rand.nextFloat() * 0.6F - 0.3F; float xRand = rand.nextFloat() * 0.6F - 0.3F; world.spawnParticle("smoke", (double) (partX + xRand), (double) partY, (double) (partZ + zRand), 0.0D, 0.0D, 0.0D); world.spawnParticle("flame", (double) (partX + xRand), (double) partY, (double) (partZ + zRand), 0.0D, 0.0D, 0.0D); } /** * Returns the bounding box of the wired rectangular prism to render. */ public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { float offset = 0.25F; return AxisAlignedBB.getAABBPool().getAABB((double) ((float) x + offset), (double) y, (double) ((float) z + offset), (double) ((float) (x + 1) - offset), (double) ((float) (y + 1) - offset), (double) ((float) (z + 1) - offset)); } public boolean isOpaqueCube() { return false; } public boolean renderAsNormalBlock() { return false; } @Override public void addCreativeItems(ArrayList itemList) { itemList.add(new ItemStack(this)); } @SideOnly(Side.CLIENT) public int getRenderType() { return cfg.renderId; } @Override public TileEntity createNewTileEntity(World w) { return new TileEntityLantern(); } @SideOnly(Side.CLIENT) @Override public void registerIcons(IconRegister reg){} }