package joshie.progression.api.criteria; import net.minecraft.entity.player.EntityPlayer; public interface IFilter<O, A> extends IRule<IFilterProvider> { /** Return true if the pass in object, matches this filter. * Keep in mind this can pass in entities, itemstack, * Lists or anything really, so make sure to validate * all objects */ public boolean matches(Object object); /** Returns a list of all things that match this filter * May pass in something, or it can be null **/ public O getRandom(EntityPlayer player); /** Called after generated to apply any special effects **/ public void apply(A object); /** Returns the type of filter this is **/ public IFilterType getType(); }