    001package net.minecraft.block;
    002
    003import net.minecraft.block.material.Material;
    004import net.minecraft.creativetab.CreativeTabs;
    005import net.minecraft.entity.player.EntityPlayer;
    006import net.minecraft.tileentity.TileEntity;
    007import net.minecraft.tileentity.TileEntityNote;
    008import net.minecraft.world.World;
    009
    010public 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}