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
}