package net.glowstone.inventory.crafting; import org.bukkit.Material; import org.bukkit.inventory.ItemMatcher; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; import java.util.ArrayList; public class GlowBannerCopyMatcher extends ItemMatcher { /* - Must be exactly two banners - 1 with no pattern, and 1 with at least one layer - Must be same colour - No other items allowed in matrix */ @Override public ItemStack getResult(ItemStack[] matrix) { ArrayList<ItemStack> banners = new ArrayList<>(); for (ItemStack item : matrix) { if (item == null) continue; if (item.getType() == Material.BANNER) { banners.add(item); continue; } return null; // Non-banner item in matrix } if (banners.size() != 2) return null; // Must have 2 banners only if (banners.get(0).getDurability() != banners.get(1).getDurability()) return null; // Not same color ItemStack original = null; ItemStack blank = null; for (ItemStack banner : banners) { BannerMeta meta = (BannerMeta) banner.getItemMeta(); if (meta.getPatterns().isEmpty()) { if (blank != null) { return null; // More than 1 blank } blank = banner; } else { if (original != null) { return null; // More than 1 original } original = banner; } } if (original == null || blank == null) return null; // Haven't got both needed banners return original.clone(); } //TODO: Keep banner in matrix after crafting }