package in.twizmwaz.cardinal.module.modules.filter.type;
import in.twizmwaz.cardinal.module.modules.filter.FilterModule;
import in.twizmwaz.cardinal.module.modules.filter.FilterState;
import in.twizmwaz.cardinal.module.modules.filter.parsers.KillstreakFilterParser;
import org.bukkit.entity.Player;
import static in.twizmwaz.cardinal.module.modules.filter.FilterState.*;
public class KillStreakFilter extends FilterModule {
private final int min;
private final int max;
private final int count;
private final boolean repeat;
public KillStreakFilter(final KillstreakFilterParser parser) {
super(parser.getName(), parser.getParent());
this.min = parser.getMin();
this.max = parser.getMax();
this.count = parser.getCount();
this.repeat = parser.isRepeat();
}
@Override
public FilterState evaluate(final Object... objects) {
for (Object object : objects) {
if (object instanceof Player) {
try {
int killStreak = ((Player) object).getMetadata("killstreak").get(0).asInt();
if (this.min > -1 && this.max > -1) {
if (killStreak > min && killStreak < max)
return ALLOW;
else
return DENY;
} else if (killStreak == count)
return ALLOW;
else if (repeat && killStreak % count == 0)
return ALLOW;
else
return DENY;
} catch (IndexOutOfBoundsException e) {
return (getParent() == null ? ABSTAIN : getParent().evaluate(objects));
}
}
}
return (getParent() == null ? ABSTAIN : getParent().evaluate(objects));
}
}