From c90abd16885c3de895702047e9347c72d94c3035 Mon Sep 17 00:00:00 2001 From: jameslfc19 <jameslfc19@gmail.com> Date: Fri, 3 Jul 2020 00:42:55 +0100 Subject: [PATCH] API Specific Implementations --- ChestsPlusPlus_1_15/ChestsPlusPlus_1_15.iml | 40 +++++++++++ ChestsPlusPlus_1_15/pom.xml | 39 +++++++++++ .../chests/MaterialChecker_1_15.java | 26 +++++++ ChestsPlusPlus_1_16/ChestsPlusPlus_1_16.iml | 41 +++++++++++ ChestsPlusPlus_1_16/pom.xml | 40 +++++++++++ .../chests/MaterialChecker_1_16.java | 29 ++++++++ ChestsPlusPlus_Main/pom.xml | 19 ++++-- .../chests/api_interfaces/APISpecific.java | 40 +++++++++++ .../api_interfaces/MaterialChecker.java | 68 +++++++++++++++++++ 9 files changed, 337 insertions(+), 5 deletions(-) create mode 100644 ChestsPlusPlus_1_15/ChestsPlusPlus_1_15.iml create mode 100644 ChestsPlusPlus_1_15/pom.xml create mode 100644 ChestsPlusPlus_1_15/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_15.java create mode 100644 ChestsPlusPlus_1_16/ChestsPlusPlus_1_16.iml create mode 100644 ChestsPlusPlus_1_16/pom.xml create mode 100644 ChestsPlusPlus_1_16/src/main/java/com/jamesdpeters/minecraft/chests/MaterialChecker_1_16.java create mode 100644 ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/APISpecific.java create mode 100644 ChestsPlusPlus_Main/src/main/java/com/jamesdpeters/minecraft/chests/api_interfaces/MaterialChecker.java 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="minecraft" name="Minecraft"> + <configuration> + <autoDetectTypes> + <platformType>SPIGOT</platformType> + </autoDetectTypes> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="ChestsPlusPlus" /> + <orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" /> + <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" /> + <orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.15-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.25" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" /> + <orderEntry type="library" name="Maven: org.spigotmc:plugin-annotations:1.2.3-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.bukkit:bukkit:1.13-R0.1-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" /> + <orderEntry type="library" name="Maven: junit:junit:4.10" level="project" /> + <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" /> + <orderEntry type="library" name="Maven: fr.minuskube.inv:smart-invs:1.3.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.bstats:bstats-bukkit:1.7" level="project" /> + <orderEntry type="module" module-name="ChestsPlusPlus_1_16" /> + </component> +</module> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>ChestsPlusPlus</artifactId> + <groupId>com.jamesdpeters.chests</groupId> + <version>1.5-BETA-3</version> + <relativePath>../ChestsPlusPlus_Main/pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <packaging>pom</packaging> + <artifactId>ChestsPlusPlus_1_15</artifactId> + + <repositories> + <repository> + <id>spigotmc-repo</id> + <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> + </repository> + </repositories> + + <dependencies> + <dependency> + <groupId>com.jamesdpeters.chests</groupId> + <artifactId>ChestsPlusPlus</artifactId> + <version>1.5-BETA-3</version> + </dependency> + + <dependency> + <groupId>org.spigotmc</groupId> + <artifactId>spigot-api</artifactId> + <version>1.15.2-R0.1-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> + + +</project> \ 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<Material> materials; + + MaterialChecker_1_15(){ + materials = new ArrayList<>(); + materials.addAll(DEFAULT_ITEMS); + materials.addAll(Arrays.asList( +// Material.DIRT + )); + } + + @Override + protected List<Material> 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="minecraft" name="Minecraft"> + <configuration> + <autoDetectTypes> + <platformType>SPIGOT</platformType> + </autoDetectTypes> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8"> + <output url="file://$MODULE_DIR$/target/classes" /> + <output-test url="file://$MODULE_DIR$/target/test-classes" /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/target" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="module" module-name="ChestsPlusPlus_1_16 (1)" /> + <orderEntry type="module" module-name="ChestsPlusPlus" /> + <orderEntry type="library" scope="PROVIDED" name="Maven: org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> + <orderEntry type="library" name="Maven: com.google.guava:guava:21.0" level="project" /> + <orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.0" level="project" /> + <orderEntry type="library" scope="PROVIDED" name="Maven: net.md-5:bungeecord-chat:1.16-R0.1" level="project" /> + <orderEntry type="library" name="Maven: org.yaml:snakeyaml:1.26" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.4" level="project" /> + <orderEntry type="library" name="Maven: org.spigotmc:plugin-annotations:1.2.3-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.bukkit:bukkit:1.13-R0.1-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: com.googlecode.json-simple:json-simple:1.1.1" level="project" /> + <orderEntry type="library" name="Maven: junit:junit:4.10" level="project" /> + <orderEntry type="library" name="Maven: org.hamcrest:hamcrest-core:1.1" level="project" /> + <orderEntry type="library" name="Maven: fr.minuskube.inv:smart-invs:1.3.0-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.bstats:bstats-bukkit:1.7" level="project" /> + <orderEntry type="module" module-name="ChestsPlusPlus_1_15" /> + </component> +</module> \ 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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>ChestsPlusPlus</artifactId> + <groupId>com.jamesdpeters.chests</groupId> + <version>1.5-BETA-3</version> + <relativePath>../ChestsPlusPlus_Main/pom.xml</relativePath> + </parent> + + <modelVersion>4.0.0</modelVersion> + <packaging>pom</packaging> + <artifactId>ChestsPlusPlus_1_16</artifactId> + + <repositories> + <repository> + <id>spigotmc-repo</id> + <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> + </repository> + </repositories> + + <dependencies> + <dependency> + <groupId>com.jamesdpeters.chests</groupId> + <artifactId>ChestsPlusPlus</artifactId> + <version>1.5-BETA-3</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>org.spigotmc</groupId> + <artifactId>spigot-api</artifactId> + <version>1.16.1-R0.1-SNAPSHOT</version> + <scope>provided</scope> + </dependency> + </dependencies> + + +</project> \ 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<Material> 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<Material> 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 @@ <version>1.7</version> </dependency> + <dependency> + <groupId>com.jamesdpeters.chests</groupId> + <artifactId>ChestsPlusPlus_1_16</artifactId> + <version>1.5-BETA-3</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>com.jamesdpeters.chests</groupId> + <artifactId>ChestsPlusPlus_1_15</artifactId> + <version>1.5-BETA-3</version> + <scope>compile</scope> + </dependency> + </dependencies> <!--Tell maven how to prepare and build our jar file from our source and dependancies--> @@ -158,11 +172,6 @@ <version>3.0.0-M1</version> </plugin> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-site-plugin</artifactId> - <version>3.7.1</version> - </plugin> </plugins> <!--Tell maven to enable resource filtering so we can use macros like '${project.version}' inside of our plugin.yml--> 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<Material> 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<Material> 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<Material> 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()); + } + +}