From 4e67614c99511b658d31cff8f3ec26f076e48c95 Mon Sep 17 00:00:00 2001
From: simpleauthority <jacob@algorithmjunkie.com>
Date: Tue, 28 May 2019 03:41:28 -0700
Subject: [PATCH] Add BlockSoundGroup interface

This PR adds the getSoundGroup() method in Block which returns a BlockSoundGroup

diff --git a/src/main/java/com/destroystokyo/paper/block/BlockSoundGroup.java b/src/main/java/com/destroystokyo/paper/block/BlockSoundGroup.java
new file mode 100644
index 000000000..8cf87d228
--- /dev/null
+++ b/src/main/java/com/destroystokyo/paper/block/BlockSoundGroup.java
@@ -0,0 +1,52 @@
+package com.destroystokyo.paper.block;
+
+import org.bukkit.Sound;
+import org.bukkit.block.Block;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Represents the sounds that a {@link Block} makes in certain situations
+ * <p>
+ * The sound group includes break, step, place, hit, and fall sounds.
+ */
+public interface BlockSoundGroup {
+    /**
+     * Gets the sound that plays when breaking this block
+     *
+     * @return The break sound
+     */
+    @NotNull
+    Sound getBreakSound();
+
+    /**
+     * Gets the sound that plays when stepping on this block
+     *
+     * @return The step sound
+     */
+    @NotNull
+    Sound getStepSound();
+
+    /**
+     * Gets the sound that plays when placing this block
+     *
+     * @return The place sound
+     */
+    @NotNull
+    Sound getPlaceSound();
+
+    /**
+     * Gets the sound that plays when hitting this block
+     *
+     * @return The hit sound
+     */
+    @NotNull
+    Sound getHitSound();
+
+    /**
+     * Gets the sound that plays when this block falls
+     *
+     * @return The fall sound
+     */
+    @NotNull
+    Sound getFallSound();
+}
diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java
index 87185a812..038de5a64 100644
--- a/src/main/java/org/bukkit/block/Block.java
+++ b/src/main/java/org/bukkit/block/Block.java
@@ -1,6 +1,7 @@
 package org.bukkit.block;
 
 import java.util.Collection;
+
 import org.bukkit.Chunk;
 import org.bukkit.FluidCollisionMode;
 import org.bukkit.Location;
@@ -527,4 +528,16 @@ public interface Block extends Metadatable {
      */
     @NotNull
     BoundingBox getBoundingBox();
+
+    // Paper start
+    /**
+     * Gets the {@link com.destroystokyo.paper.block.BlockSoundGroup} for this block.
+     * <p>
+     * This object contains the block, step, place, hit, and fall sounds.
+     *
+     * @return the sound group for this block
+     */
+    @NotNull
+    com.destroystokyo.paper.block.BlockSoundGroup getSoundGroup();
+    // Paper end
 }
-- 
2.21.0

