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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/Levelled.java
+++ b/src/main/java/org/bukkit/block/data/Levelled.java
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/type/Bed.java
+++ b/src/main/java/org/bukkit/block/data/type/Bed.java
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/type/Candle.java
+++ b/src/main/java/org/bukkit/block/data/type/Candle.java
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
+++ b/src/main/java/org/bukkit/block/data/type/DecoratedPot.java
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/type/Leaves.java
+++ b/src/main/java/org/bukkit/block/data/type/Leaves.java
@@ -0,0 +0,0 @@ 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 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
--- a/src/main/java/org/bukkit/block/data/type/PinkPetals.java
+++ b/src/main/java/org/bukkit/block/data/type/PinkPetals.java
@@ -0,0 +0,0 @@ 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.
      *