001 package net.minecraft.src;
002
003 public class BlockJukeBox extends BlockContainer
004 {
005 protected BlockJukeBox(int par1, int par2)
006 {
007 super(par1, par2, Material.wood);
008 this.setCreativeTab(CreativeTabs.tabDecorations);
009 }
010
011 /**
012 * Returns the block texture based on the side being looked at. Args: side
013 */
014 public int getBlockTextureFromSide(int par1)
015 {
016 return this.blockIndexInTexture + (par1 == 1 ? 1 : 0);
017 }
018
019 /**
020 * Called upon block activation (right click on the block.)
021 */
022 public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
023 {
024 if (par1World.getBlockMetadata(par2, par3, par4) == 0)
025 {
026 return false;
027 }
028 else
029 {
030 this.ejectRecord(par1World, par2, par3, par4);
031 return true;
032 }
033 }
034
035 public void func_85106_a(World par1World, int par2, int par3, int par4, ItemStack par5ItemStack)
036 {
037 if (!par1World.isRemote)
038 {
039 TileEntityRecordPlayer var6 = (TileEntityRecordPlayer)par1World.getBlockTileEntity(par2, par3, par4);
040
041 if (var6 != null)
042 {
043 var6.record = par5ItemStack.copy();
044 var6.onInventoryChanged();
045 par1World.setBlockMetadataWithNotify(par2, par3, par4, 1);
046 }
047 }
048 }
049
050 /**
051 * Ejects the current record inside of the jukebox.
052 */
053 public void ejectRecord(World par1World, int par2, int par3, int par4)
054 {
055 if (!par1World.isRemote)
056 {
057 TileEntityRecordPlayer var5 = (TileEntityRecordPlayer)par1World.getBlockTileEntity(par2, par3, par4);
058
059 if (var5 != null)
060 {
061 ItemStack var6 = var5.record;
062
063 if (var6 != null)
064 {
065 par1World.playAuxSFX(1005, par2, par3, par4, 0);
066 par1World.playRecord((String)null, par2, par3, par4);
067 var5.record = null;
068 var5.onInventoryChanged();
069 par1World.setBlockMetadataWithNotify(par2, par3, par4, 0);
070 float var7 = 0.7F;
071 double var8 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D;
072 double var10 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.2D + 0.6D;
073 double var12 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D;
074 ItemStack var14 = var6.copy();
075 EntityItem var15 = new EntityItem(par1World, (double)par2 + var8, (double)par3 + var10, (double)par4 + var12, var14);
076 var15.delayBeforeCanPickup = 10;
077 par1World.spawnEntityInWorld(var15);
078 }
079 }
080 }
081 }
082
083 /**
084 * ejects contained items into the world, and notifies neighbours of an update, as appropriate
085 */
086 public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6)
087 {
088 this.ejectRecord(par1World, par2, par3, par4);
089 super.breakBlock(par1World, par2, par3, par4, par5, par6);
090 }
091
092 /**
093 * Drops the block items with a specified chance of dropping the specified items
094 */
095 public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7)
096 {
097 if (!par1World.isRemote)
098 {
099 super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, 0);
100 }
101 }
102
103 /**
104 * Returns a new instance of a block's tile entity class. Called on placing the block.
105 */
106 public TileEntity createNewTileEntity(World par1World)
107 {
108 return new TileEntityRecordPlayer();
109 }
110 }