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