001package net.minecraft.block; 002 003import cpw.mods.fml.relauncher.Side; 004import cpw.mods.fml.relauncher.SideOnly; 005import net.minecraft.block.material.Material; 006import net.minecraft.client.renderer.texture.IconRegister; 007import net.minecraft.creativetab.CreativeTabs; 008import net.minecraft.entity.EntityLiving; 009import net.minecraft.entity.player.EntityPlayer; 010import net.minecraft.item.ItemStack; 011import net.minecraft.tileentity.TileEntity; 012import net.minecraft.tileentity.TileEntityBeacon; 013import net.minecraft.util.Icon; 014import net.minecraft.world.World; 015 016public class BlockBeacon extends BlockContainer 017{ 018 @SideOnly(Side.CLIENT) 019 private Icon theIcon; 020 021 public BlockBeacon(int par1) 022 { 023 super(par1, Material.glass); 024 this.setHardness(3.0F); 025 this.setCreativeTab(CreativeTabs.tabMisc); 026 } 027 028 /** 029 * Returns a new instance of a block's tile entity class. Called on placing the block. 030 */ 031 public TileEntity createNewTileEntity(World par1World) 032 { 033 return new TileEntityBeacon(); 034 } 035 036 /** 037 * Called upon block activation (right click on the block.) 038 */ 039 public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) 040 { 041 if (par1World.isRemote) 042 { 043 return true; 044 } 045 else 046 { 047 TileEntityBeacon tileentitybeacon = (TileEntityBeacon)par1World.getBlockTileEntity(par2, par3, par4); 048 049 if (tileentitybeacon != null) 050 { 051 par5EntityPlayer.displayGUIBeacon(tileentitybeacon); 052 } 053 054 return true; 055 } 056 } 057 058 /** 059 * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two 060 * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. 061 */ 062 public boolean isOpaqueCube() 063 { 064 return false; 065 } 066 067 /** 068 * If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc) 069 */ 070 public boolean renderAsNormalBlock() 071 { 072 return false; 073 } 074 075 /** 076 * The type of render function that is called for this block 077 */ 078 public int getRenderType() 079 { 080 return 34; 081 } 082 083 @SideOnly(Side.CLIENT) 084 085 /** 086 * When this method is called, your block should register all the icons it needs with the given IconRegister. This 087 * is the only chance you get to register icons. 088 */ 089 public void registerIcons(IconRegister par1IconRegister) 090 { 091 super.registerIcons(par1IconRegister); 092 this.theIcon = par1IconRegister.registerIcon("beacon"); 093 } 094 095 /** 096 * Called when the block is placed in the world. 097 */ 098 public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLiving par5EntityLiving, ItemStack par6ItemStack) 099 { 100 super.onBlockPlacedBy(par1World, par2, par3, par4, par5EntityLiving, par6ItemStack); 101 102 if (par6ItemStack.hasDisplayName()) 103 { 104 ((TileEntityBeacon)par1World.getBlockTileEntity(par2, par3, par4)).func_94047_a(par6ItemStack.getDisplayName()); 105 } 106 } 107 108 @SideOnly(Side.CLIENT) 109 public Icon func_94446_i() 110 { 111 return this.theIcon; 112 } 113}