package joshie.progression.criteria.filters.entity; import com.google.common.collect.Lists; 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.helpers.EntityHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import java.util.List; public abstract class FilterBaseEntity implements IFilter<List<EntityLivingBase>, EntityLivingBase> { private IFilterProvider provider; @Override public IFilterProvider getProvider() { return provider; } @Override public void setProvider(IFilterProvider provider) { this.provider = provider; } @Override public List<EntityLivingBase> getRandom(EntityPlayer player) { return Lists.newArrayList(EntityHelper.getRandomEntity(player.worldObj, this.getProvider())); } @Override public void apply(EntityLivingBase entity) {} @Override public boolean matches(Object object) { if (!(object instanceof EntityLivingBase)) return false; return matches((EntityLivingBase) object); } @Override public IFilterType getType() { return ProgressionAPI.filters.getEntityFilter(); } protected abstract boolean matches(EntityLivingBase entity); }