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 }