--- ../src-base/minecraft/net/minecraft/block/BlockNote.java
+++ ../src-work/minecraft/net/minecraft/block/BlockNote.java
@@ -58,7 +58,9 @@
             if (tileentity instanceof TileEntityNote)
             {
                 TileEntityNote tileentitynote = (TileEntityNote)tileentity;
+                int old = tileentitynote.field_145879_a;
                 tileentitynote.func_145877_a();
+                if (old == tileentitynote.field_145879_a) return false;
                 tileentitynote.func_175108_a(p_180639_1_, p_180639_2_);
             }
 
@@ -96,6 +98,10 @@
 
     public boolean func_180648_a(World p_180648_1_, BlockPos p_180648_2_, IBlockState p_180648_3_, int p_180648_4_, int p_180648_5_)
     {
+        net.minecraftforge.event.world.NoteBlockEvent.Play e = new net.minecraftforge.event.world.NoteBlockEvent.Play(p_180648_1_, p_180648_2_, p_180648_3_, p_180648_5_, p_180648_4_);
+        if (net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(e)) return false;
+        p_180648_4_ = e.instrument.ordinal();
+        p_180648_5_ = e.getVanillaNoteId();
         float f = (float)Math.pow(2.0D, (double)(p_180648_5_ - 12) / 12.0D);
         p_180648_1_.func_72908_a((double)p_180648_2_.func_177958_n() + 0.5D, (double)p_180648_2_.func_177956_o() + 0.5D, (double)p_180648_2_.func_177952_p() + 0.5D, "note." + this.func_176433_b(p_180648_4_), 3.0F, f);
         p_180648_1_.func_175688_a(EnumParticleTypes.NOTE, (double)p_180648_2_.func_177958_n() + 0.5D, (double)p_180648_2_.func_177956_o() + 1.2D, (double)p_180648_2_.func_177952_p() + 0.5D, (double)p_180648_5_ / 24.0D, 0.0D, 0.0D, new int[0]);
