package net.knarcraft.knarlib.util; import net.knarcraft.knarlib.formatting.StringFormatter; 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.HashSet; import java.util.List; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * A helper class for dealing with and parsing materials */ @SuppressWarnings("unused") public final class MaterialHelper { private MaterialHelper() { } /** * Loads the materials specified in the given list * * @param materials
The list of material strings to load
* @param tagPrefixThe prefix differentiating a tag from a material
* @param loggerThe logger to use for logging parsing errors
*/ public static @NotNull SetThe material string to parse
* @param tagPrefixThe prefix differentiating a tag from a material
* @param loggerThe logger to use for logging parsing errors
* @returnThe materials defined by the material string, or an empty list if none were found
*/ public static @NotNull SetThe material string to parse
* @param loggerThe logger to use for logging parsing errors
* @returnThe materials defined by the material string, or an empty list if none were found
*/ public static @Nullable Material loadMaterialString(@NotNull String materialString, @NotNull Logger logger) { // Try to parse a material name Material matched = Material.matchMaterial(materialString.replace("-", "_")); if (matched != null) { return matched; } else { logger.log(Level.WARNING, StringFormatter.replacePlaceholder("Unable to parse material: {material}", "{material}", materialString)); return null; } } /** * Tries to parse the material tag in the specified material name * * @param targetSetThe set all parsed materials should be added to
* @param materialNameThe material name that might be a material tag
* @param tagPrefixThe prefix differentiating a tag from a material
* @param loggerThe logger to use for logging parsing errors
* @returnTrue if a tag was found
*/ private static boolean parseMaterialTag(@NotNull Set