    001    package net.minecraft.src;
    002
    003    public class BlockNote extends BlockContainer
    004    {
    005        public BlockNote(int par1)
    006        {
    007            super(par1, 74, Material.wood);
    008            this.setCreativeTab(CreativeTabs.tabRedstone);
    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;
    017        }
    018
    019        /**
    020         * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
    021         * their own) Args: x, y, z, neighbor blockID
    022         */
    023        public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5)
    024        {
    025            if (par5 > 0)
    026            {
    027                boolean var6 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4);
    028                TileEntityNote var7 = (TileEntityNote)par1World.getBlockTileEntity(par2, par3, par4);
    029
    030                if (var7 != null && var7.previousRedstoneState != var6)
    031                {
    032                    if (var6)
    033                    {
    034                        var7.triggerNote(par1World, par2, par3, par4);
    035                    }
    036
    037                    var7.previousRedstoneState = var6;
    038                }
    039            }
    040        }
    041
    042        /**
    043         * Called upon block activation (right click on the block.)
    044         */
    045        public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
    046        {
    047            if (par1World.isRemote)
    048            {
    049                return true;
    050            }
    051            else
    052            {
    053                TileEntityNote var10 = (TileEntityNote)par1World.getBlockTileEntity(par2, par3, par4);
    054
    055                if (var10 != null)
    056                {
    057                    var10.changePitch();
    058                    var10.triggerNote(par1World, par2, par3, par4);
    059                }
    060
    061                return true;
    062            }
    063        }
    064
    065        /**
    066         * Called when the block is clicked by a player. Args: x, y, z, entityPlayer
    067         */
    068        public void onBlockClicked(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer)
    069        {
    070            if (!par1World.isRemote)
    071            {
    072                TileEntityNote var6 = (TileEntityNote)par1World.getBlockTileEntity(par2, par3, par4);
    073
    074                if (var6 != null)
    075                {
    076                    var6.triggerNote(par1World, par2, par3, par4);
    077                }
    078            }
    079        }
    080
    081        /**
    082         * Returns a new instance of a block's tile entity class. Called on placing the block.
    083         */
    084        public TileEntity createNewTileEntity(World par1World)
    085        {
    086            return new TileEntityNote();
    087        }
    088
    089        /**
    090         * Called when the block receives a BlockEvent - see World.addBlockEvent. By default, passes it on to the tile
    091         * entity at this location. Args: world, x, y, z, blockID, EventID, event parameter
    092         */
    093        public void onBlockEventReceived(World par1World, int par2, int par3, int par4, int par5, int par6)
    094        {
    095            float var7 = (float)Math.pow(2.0D, (double)(par6 - 12) / 12.0D);
    096            String var8 = "harp";
    097
    098            if (par5 == 1)
    099            {
    100                var8 = "bd";
    101            }
    102
    103            if (par5 == 2)
    104            {
    105                var8 = "snare";
    106            }
    107
    108            if (par5 == 3)
    109            {
    110                var8 = "hat";
    111            }
    112
    113            if (par5 == 4)
    114            {
    115                var8 = "bassattack";
    116            }
    117
    118            par1World.playSoundEffect((double)par2 + 0.5D, (double)par3 + 0.5D, (double)par4 + 0.5D, "note." + var8, 3.0F, var7);
    119            par1World.spawnParticle("note", (double)par2 + 0.5D, (double)par3 + 1.2D, (double)par4 + 0.5D, (double)par6 / 24.0D, 0.0D, 0.0D);
    120        }
    121    }