package net.knarcraft.stargate.utility; import net.knarcraft.stargate.config.material.BukkitMaterialSpecifier; import net.knarcraft.stargate.config.material.BukkitTagSpecifier; import net.knarcraft.stargate.config.material.MaterialSpecifier; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.Tag; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; /** * This class helps decide properties of materials not already present in the Spigot API */ public final class MaterialHelper { private MaterialHelper() { } /** * Checks whether the given material is a dead or alive wall coral * * @param material
The material to check
* @returnTrue if the material is a wall coral
*/ public static boolean isWallCoral(@NotNull Material material) { //Unfortunately, there is no tag for dead wall corals, so they need to be checked manually return Tag.WALL_CORALS.isTagged(material) || material.equals(Material.DEAD_BRAIN_CORAL_WALL_FAN) || material.equals(Material.DEAD_BUBBLE_CORAL_WALL_FAN) || material.equals(Material.DEAD_FIRE_CORAL_WALL_FAN) || material.equals(Material.DEAD_HORN_CORAL_WALL_FAN) || material.equals(Material.DEAD_TUBE_CORAL_WALL_FAN); } /** * Checks whether the given material is a container * * @param materialThe material to check
* @returnTrue if the material is a container
*/ public static boolean isContainer(@NotNull Material material) { return Tag.SHULKER_BOXES.isTagged(material) || material == Material.CHEST || material == Material.TRAPPED_CHEST || material == Material.ENDER_CHEST; } /** * Checks whether the given material can be used as a button * * @param materialThe material to check
* @returnTrue if the material can be used as a button
*/ public static boolean isButtonCompatible(@NotNull Material material) { return Tag.BUTTONS.isTagged(material) || isWallCoral(material) || isContainer(material); } @NotNull public static String specifiersToString(@NotNull ListThe material specifiers to convert
* @returnThe materials the specifiers represent
*/ @NotNull public static SetThe input string to parse
* @returnAll material specifiers found
*/ @NotNull public static List