package joshie.progression.criteria.filters.action; import joshie.progression.api.ProgressionAPI; import joshie.progression.api.criteria.IFilter; import joshie.progression.api.criteria.IFilterProvider; import joshie.progression.api.criteria.IFilterType; import joshie.progression.api.special.IAdditionalTooltip; import joshie.progression.crafting.ActionType; import net.minecraft.item.ItemStack; import java.util.List; public abstract class FilterBaseAction implements IFilter<ItemStack, ItemStack>, IAdditionalTooltip<ItemStack> { private IFilterProvider provider; @Override public IFilterProvider getProvider() { return provider; } @Override public void setProvider(IFilterProvider provider) { this.provider = provider; } @Override public void apply(ItemStack stack) {} @Override public boolean matches(Object object) { if (!(object instanceof ItemStack)) return false; ItemStack stack = ((ItemStack) object); boolean accepted = false; for (ActionType type : ActionType.values()) { if ((type.getIcon().getItem() == stack.getItem() && type.getIcon().getItemDamage() == stack.getItemDamage())) { accepted = true; break; } } return accepted ? matches(stack) : false; } @Override public IFilterType getType() { return ProgressionAPI.filters.getActionFilter(); } @Override public void addHoverTooltip(String field, ItemStack stack, List<String> tooltip) { tooltip.clear(); //How dare you try to display the itemstacks tooltip! tooltip.add(ActionType.getCraftingActionFromIcon(stack).getDisplayName()); } protected abstract boolean matches(ItemStack stack); }