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 }