diff --git a/ChestsPlusPlus_1_15/ChestsPlusPlus_1_15.iml b/ChestsPlusPlus_1_15/ChestsPlusPlus_1_15.iml
new file mode 100644
index 0000000..5d3839d
--- /dev/null
+++ b/ChestsPlusPlus_1_15/ChestsPlusPlus_1_15.iml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ SPIGOT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_15/pom.xml b/ChestsPlusPlus_1_15/pom.xml
new file mode 100644
index 0000000..42e73cb
--- /dev/null
+++ b/ChestsPlusPlus_1_15/pom.xml
@@ -0,0 +1,39 @@
+
+
+
+ ChestsPlusPlus
+ com.jamesdpeters.chests
+ 1.5-BETA-3
+ ../ChestsPlusPlus_Main/pom.xml
+
+
+ 4.0.0
+ pom
+ ChestsPlusPlus_1_15
+
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ com.jamesdpeters.chests
+ ChestsPlusPlus
+ 1.5-BETA-3
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.15.2-R0.1-SNAPSHOT
+ provided
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_15/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_15.java b/ChestsPlusPlus_1_15/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_15.java
new file mode 100644
index 0000000..f336d4e
--- /dev/null
+++ b/ChestsPlusPlus_1_15/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_15.java
@@ -0,0 +1,26 @@
+package com.jamesdpeters.minecraft.chests;
+
+import com.jamesdpeters.minecraft.chests.api_interfaces.MaterialChecker;
+import org.bukkit.Material;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MaterialChecker_1_15 extends MaterialChecker {
+
+ private List materials;
+
+ MaterialChecker_1_15(){
+ materials = new ArrayList<>();
+ materials.addAll(DEFAULT_ITEMS);
+ materials.addAll(Arrays.asList(
+// Material.DIRT
+ ));
+ }
+
+ @Override
+ protected List graphically2DList() {
+ return materials;
+ }
+}
diff --git a/ChestsPlusPlus_1_16/ChestsPlusPlus_1_16.iml b/ChestsPlusPlus_1_16/ChestsPlusPlus_1_16.iml
new file mode 100644
index 0000000..8040e34
--- /dev/null
+++ b/ChestsPlusPlus_1_16/ChestsPlusPlus_1_16.iml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ SPIGOT
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_16/pom.xml b/ChestsPlusPlus_1_16/pom.xml
new file mode 100644
index 0000000..b809fd5
--- /dev/null
+++ b/ChestsPlusPlus_1_16/pom.xml
@@ -0,0 +1,40 @@
+
+
+
+ ChestsPlusPlus
+ com.jamesdpeters.chests
+ 1.5-BETA-3
+ ../ChestsPlusPlus_Main/pom.xml
+
+
+ 4.0.0
+ pom
+ ChestsPlusPlus_1_16
+
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+
+
+ com.jamesdpeters.chests
+ ChestsPlusPlus
+ 1.5-BETA-3
+ compile
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.16.1-R0.1-SNAPSHOT
+ provided
+
+
+
+
+
\ No newline at end of file
diff --git a/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_16.java b/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_16.java
new file mode 100644
index 0000000..ee0986b
--- /dev/null
+++ b/ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_16.java
@@ -0,0 +1,29 @@
+package com.jamesdpeters.minecraft.chests;
+
+import com.jamesdpeters.minecraft.chests.api_interfaces.MaterialChecker;
+import org.bukkit.Material;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class MaterialChecker_1_16 extends MaterialChecker {
+
+ private List materials;
+
+ MaterialChecker_1_16(){
+ materials = new ArrayList<>();
+ materials.addAll(DEFAULT_ITEMS);
+ //Add previous API additions.
+ materials.addAll(new MaterialChecker_1_15().graphically2DList());
+ materials.addAll(Arrays.asList(
+// Material.DIRT
+ ));
+ }
+
+ @Override
+ protected List graphically2DList() {
+ return materials;
+ }
+
+}
diff --git a/ChestsPlusPlus_Main/pom.xml b/ChestsPlusPlus_Main/pom.xml
index cde5727..53b4a77 100644
--- a/ChestsPlusPlus_Main/pom.xml
+++ b/ChestsPlusPlus_Main/pom.xml
@@ -86,6 +86,20 @@
1.7
+
+ com.jamesdpeters.chests
+ ChestsPlusPlus_1_16
+ 1.5-BETA-3
+ compile
+
+
+
+ com.jamesdpeters.chests
+ ChestsPlusPlus_1_15
+ 1.5-BETA-3
+ compile
+
+
@@ -158,11 +172,6 @@
3.0.0-M1
-
- org.apache.maven.plugins
- maven-site-plugin
- 3.7.1
-
diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/APISpecific.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/APISpecific.java
new file mode 100644
index 0000000..2ac3e34
--- /dev/null
+++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/APISpecific.java
@@ -0,0 +1,40 @@
+package com.jamesdpeters.minecraft.chests.api_interfaces;
+
+import com.jamesdpeters.minecraft.chests.MaterialChecker_1_15;
+import com.jamesdpeters.minecraft.chests.MaterialChecker_1_16;
+import org.bukkit.Bukkit;
+
+public class APISpecific {
+
+ private static MaterialChecker materialChecker;
+ private static Version version;
+
+ static {
+ version = getVersion();
+ }
+
+ enum Version {
+ API_1_16,
+ API_1_15,
+ API_1_14;
+ }
+
+ private static Version getVersion(){
+ String version = Bukkit.getBukkitVersion().split("-")[0];
+ switch (version){
+ //Assume default API is latest.
+ default: return Version.API_1_16;
+ case "1.15": return Version.API_1_15;
+ case "1.14": return Version.API_1_14;
+
+ }
+ }
+
+ private MaterialChecker getMaterialChecker(Version version){
+ switch (version){
+ case API_1_16: return new MaterialChecker_1_16();
+ case API_1_15: return new MaterialChecker_1_15();
+ default: return MaterialChecker.DEFAULT;
+ }
+ }
+}
diff --git a/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/MaterialChecker.java b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/MaterialChecker.java
new file mode 100644
index 0000000..cc8a2b0
--- /dev/null
+++ b/ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/MaterialChecker.java
@@ -0,0 +1,68 @@
+package com.jamesdpeters.minecraft.chests.api_interfaces;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.inventory.ItemStack;
+
+import java.util.Arrays;
+import java.util.List;
+
+public abstract class MaterialChecker {
+
+ public static List DEFAULT_ITEMS = Arrays.asList(
+ //Signs
+ Material.ACACIA_SIGN,
+ Material.ACACIA_WALL_SIGN,
+ Material.BIRCH_SIGN,
+ Material.BIRCH_WALL_SIGN,
+ Material.DARK_OAK_SIGN,
+ Material.DARK_OAK_WALL_SIGN,
+ Material.JUNGLE_SIGN,
+ Material.JUNGLE_WALL_SIGN,
+ Material.OAK_SIGN,
+ Material.OAK_WALL_SIGN,
+ Material.SPRUCE_SIGN,
+ Material.SPRUCE_WALL_SIGN,
+ //Doors
+ Material.ACACIA_DOOR,
+ Material.BIRCH_DOOR,
+ Material.DARK_OAK_DOOR,
+ Material.JUNGLE_DOOR,
+ Material.OAK_DOOR,
+ Material.SPRUCE_DOOR,
+ Material.IRON_DOOR,
+ //Saplings
+ Material.SPRUCE_SAPLING,
+ Material.ACACIA_SAPLING,
+ Material.BAMBOO_SAPLING,
+ Material.BIRCH_SAPLING,
+ Material.DARK_OAK_SAPLING,
+ Material.JUNGLE_SAPLING,
+ Material.OAK_SAPLING
+ );
+
+ public static MaterialChecker DEFAULT = new MaterialChecker() {
+ @Override
+ protected List graphically2DList() {
+ return DEFAULT_ITEMS;
+ }
+ };
+
+ /**
+ * API-Specific implementation for materials checks.
+ * Should return a list of materials where the texture for this item is displayed as 2D rather than a 3D model.
+ * @return
+ * List of Materials.
+ */
+ protected abstract List graphically2DList();
+
+ /**
+ * Used to test if an item is graphically a block (e.g a sign is a block but is held like an item.)
+ * @param itemStack
+ * @return
+ */
+ public boolean isGraphically2D(ItemStack itemStack){
+ return graphically2DList().contains(itemStack.getType());
+ }
+
+}