From defe56d4a9b1d09d5750a3370ecedd10b84cba00 Mon Sep 17 00:00:00 2001
From: CraftBukkit/Spigot <noreply+git-craftbukkit@papermc.io>
Date: Tue, 1 Feb 2011 23:18:25 +0000
Subject: [PATCH] Added CraftNoteBlock.play

By: Dinnerbone <dinnerbone@dinnerbone.com>
---
 .../craftbukkit/block/CraftNoteBlock.java     | 76 +++++++++++--------
 1 file changed, 45 insertions(+), 31 deletions(-)

diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java
index 9927730bf7..333b1cb09d 100644
--- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java
+++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftNoteBlock.java
@@ -1,31 +1,45 @@
-package org.bukkit.craftbukkit.block;
-
-import net.minecraft.server.TileEntityNote;
-import org.bukkit.block.Block;
-import org.bukkit.block.NoteBlock;
-import org.bukkit.craftbukkit.CraftWorld;
-
-/**
- * Represents a note block.
- * 
- * @author sk89q
- */
-public class CraftNoteBlock extends CraftBlockState implements NoteBlock {
-    private final CraftWorld world;
-    private final TileEntityNote note;
-
-    public CraftNoteBlock(final Block block) {
-        super(block);
-
-        world = (CraftWorld)block.getWorld();
-        note = (TileEntityNote)world.getTileEntityAt(getX(), getY(), getZ());
-    }
-
-    public byte getNote() {
-        return note.e;
-    }
-
-    public void setNote(byte n) {
-        note.e = n;
-    }
-}
+package org.bukkit.craftbukkit.block;
+
+import net.minecraft.server.TileEntityNote;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.NoteBlock;
+import org.bukkit.craftbukkit.CraftWorld;
+
+/**
+ * Represents a note block.
+ * 
+ * @author sk89q
+ */
+public class CraftNoteBlock extends CraftBlockState implements NoteBlock {
+    private final CraftWorld world;
+    private final TileEntityNote note;
+
+    public CraftNoteBlock(final Block block) {
+        super(block);
+
+        world = (CraftWorld)block.getWorld();
+        note = (TileEntityNote)world.getTileEntityAt(getX(), getY(), getZ());
+    }
+
+    public byte getNote() {
+        return note.e;
+    }
+
+    public void setNote(byte n) {
+        note.e = n;
+    }
+
+    public boolean play() {
+        Block block = getBlock();
+
+        synchronized (block) {
+            if (block.getType() == Material.NOTE_BLOCK) {
+                note.a(world.getHandle(), getX(), getY(), getZ());
+                return true;
+            } else {
+                return false;
+            }
+        }
+    }
+}