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.tabDeco); 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 /** 036 * Inserts the given record into the JukeBox. 037 */ 038 public void insertRecord(World par1World, int par2, int par3, int par4, int par5) 039 { 040 if (!par1World.isRemote) 041 { 042 TileEntityRecordPlayer var6 = (TileEntityRecordPlayer)par1World.getBlockTileEntity(par2, par3, par4); 043 044 if (var6 != null) 045 { 046 var6.record = par5; 047 var6.onInventoryChanged(); 048 par1World.setBlockMetadataWithNotify(par2, par3, par4, 1); 049 } 050 } 051 } 052 053 /** 054 * Ejects the current record inside of the jukebox. 055 */ 056 public void ejectRecord(World par1World, int par2, int par3, int par4) 057 { 058 if (!par1World.isRemote) 059 { 060 TileEntityRecordPlayer var5 = (TileEntityRecordPlayer)par1World.getBlockTileEntity(par2, par3, par4); 061 062 if (var5 != null) 063 { 064 int var6 = var5.record; 065 066 if (var6 != 0) 067 { 068 par1World.playAuxSFX(1005, par2, par3, par4, 0); 069 par1World.playRecord((String)null, par2, par3, par4); 070 var5.record = 0; 071 var5.onInventoryChanged(); 072 par1World.setBlockMetadataWithNotify(par2, par3, par4, 0); 073 float var7 = 0.7F; 074 double var8 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; 075 double var10 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.2D + 0.6D; 076 double var12 = (double)(par1World.rand.nextFloat() * var7) + (double)(1.0F - var7) * 0.5D; 077 EntityItem var14 = new EntityItem(par1World, (double)par2 + var8, (double)par3 + var10, (double)par4 + var12, new ItemStack(var6, 1, 0)); 078 var14.delayBeforeCanPickup = 10; 079 par1World.spawnEntityInWorld(var14); 080 } 081 } 082 } 083 } 084 085 /** 086 * ejects contained items into the world, and notifies neighbours of an update, as appropriate 087 */ 088 public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6) 089 { 090 this.ejectRecord(par1World, par2, par3, par4); 091 super.breakBlock(par1World, par2, par3, par4, par5, par6); 092 } 093 094 /** 095 * Drops the block items with a specified chance of dropping the specified items 096 */ 097 public void dropBlockAsItemWithChance(World par1World, int par2, int par3, int par4, int par5, float par6, int par7) 098 { 099 if (!par1World.isRemote) 100 { 101 super.dropBlockAsItemWithChance(par1World, par2, par3, par4, par5, par6, 0); 102 } 103 } 104 105 /** 106 * each class overrdies this to return a new <className> 107 */ 108 public TileEntity createNewTileEntity(World par1World) 109 { 110 return new TileEntityRecordPlayer(); 111 } 112 }