    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        /**
    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         * Returns a new instance of a block's tile entity class. Called on placing the block.
    107         */
    108        public TileEntity createNewTileEntity(World par1World)
    109        {
    110            return new TileEntityRecordPlayer();
    111        }
    112    }