From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jake Potrebic <jake.m.potrebic@gmail.com>
Date: Sat, 16 Oct 2021 22:57:10 -0700
Subject: [PATCH] Add missing block data API

General purpose patch adding missing getters/setters to BlockData and
its child types.

Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
Co-authored-by: Fabrizio La Rosa <lr.fabrizio@gmail.com>

diff --git a/src/main/java/org/bukkit/block/data/Levelled.java b/src/main/java/org/bukkit/block/data/Levelled.java
index 5255538fecae6da413546be3adacd2a99f6c74e9..860f072dee391b300cb1629058a3f9c23dfd95e2 100644
--- a/src/main/java/org/bukkit/block/data/Levelled.java
+++ b/src/main/java/org/bukkit/block/data/Levelled.java
@@ -36,4 +36,13 @@ public interface Levelled extends BlockData {
      * @return the maximum 'level' value
      */
     int getMaximumLevel();
+
+    // Paper start
+    /**
+     * Gets the minimum allowed value of the 'level' property.
+     *
+     * @return the minimum 'level' value
+     */
+    int getMinimumLevel();
+    // Paper end
 }
diff --git a/src/main/java/org/bukkit/block/data/type/Bed.java b/src/main/java/org/bukkit/block/data/type/Bed.java
index ed519bfebe5b921f60867a3900edfce9859058b6..6e7a456dc5e9bfc28a19029a3381e53fa6453d30 100644
--- a/src/main/java/org/bukkit/block/data/type/Bed.java
+++ b/src/main/java/org/bukkit/block/data/type/Bed.java
@@ -35,6 +35,15 @@ public interface Bed extends Directional {
      */
     boolean isOccupied();
 
+    // Paper start
+    /**
+     * Sets the value of the 'occupied' property.
+     *
+     * @param occupied the new 'occupied' value
+     */
+    void setOccupied(boolean occupied);
+    // Paper end
+
     /**
      * Horizontal half of a bed.
      */
diff --git a/src/main/java/org/bukkit/block/data/type/Candle.java b/src/main/java/org/bukkit/block/data/type/Candle.java
index d4d08bd424f84523200d1a2012f4d37c07cc3497..7baccce27f2db2242f628ea92a9d040267caef75 100644
--- a/src/main/java/org/bukkit/block/data/type/Candle.java
+++ b/src/main/java/org/bukkit/block/data/type/Candle.java
@@ -28,4 +28,13 @@ public interface Candle extends Lightable, Waterlogged {
      * @return the maximum 'candles' value
      */
     int getMaximumCandles();
+
+    // Paper start
+    /**
+     * Gets the minimum allowed value of the 'candles' property.
+     *
+     * @return the minimum 'candles' value
+     */
+    int getMinimumCandles();
+    // Paper end
 }
diff --git a/src/main/java/org/bukkit/block/data/type/DecoratedPot.java b/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
index eb0ffa977450ef0c79caa78302cfe75ee35b34b7..b3d290dbfdcbadcbadcb54e6b414e423eba80cc6 100644
--- a/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
+++ b/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
@@ -4,4 +4,17 @@ import org.bukkit.block.data.Directional;
 import org.bukkit.block.data.Waterlogged;
 
 public interface DecoratedPot extends Directional, Waterlogged {
+    // Paper start - add missing block data api
+    /**
+     * @return whether the pot is cracked
+     */
+    public boolean isCracked();
+
+    /**
+     * Set whether the pot is cracked.
+     *
+     * @param cracked whether the pot is cracked
+     */
+    public void setCracked(boolean cracked);
+    // Paper end - add missing block data api
 }
diff --git a/src/main/java/org/bukkit/block/data/type/Leaves.java b/src/main/java/org/bukkit/block/data/type/Leaves.java
index 3ea21dfad26222ee70fbc627595f54de1a28aa96..cd013a7c42648d819d1e91c7cf9f97a8190c1fad 100644
--- a/src/main/java/org/bukkit/block/data/type/Leaves.java
+++ b/src/main/java/org/bukkit/block/data/type/Leaves.java
@@ -39,4 +39,20 @@ public interface Leaves extends Waterlogged {
      * @param distance the new 'distance' value
      */
     void setDistance(int distance);
+
+    // Paper start
+    /**
+     * Gets the maximum allowed value of the 'distance' property.
+     *
+     * @return the maximum 'distance' value
+     */
+    int getMaximumDistance();
+
+    /**
+     * Gets the minimum allowed value of the 'distance' property.
+     *
+     * @return the minimum 'distance' value
+     */
+    int getMinimumDistance();
+    // Paper end
 }
diff --git a/src/main/java/org/bukkit/block/data/type/PinkPetals.java b/src/main/java/org/bukkit/block/data/type/PinkPetals.java
index a84b36f7587eb2ed9e9177973b3166dc94cdf3df..eae9c9cdd0f47a7480ee23ac7b655692f5ee9c1e 100644
--- a/src/main/java/org/bukkit/block/data/type/PinkPetals.java
+++ b/src/main/java/org/bukkit/block/data/type/PinkPetals.java
@@ -21,6 +21,15 @@ public interface PinkPetals extends Directional {
      */
     void setFlowerAmount(int flower_amount);
 
+    // Paper start
+    /**
+     * Gets the minimum allowed value of the 'flower_amount' property.
+     *
+     * @return the minimum 'flower_amount' value
+     */
+    int getMinimumFlowerAmount();
+    // Paper end
+
     /**
      * Gets the maximum allowed value of the 'flower_amount' property.
      *