package tc.oc.pgm.loot;
import java.util.Optional;
import java.time.Duration;
import tc.oc.commons.core.util.TimeUtils;
import tc.oc.pgm.features.FeatureDefinition;
import tc.oc.pgm.features.FeatureInfo;
import tc.oc.pgm.filters.Filter;
import tc.oc.pgm.filters.matcher.StaticFilter;
@FeatureInfo(name = "fill", plural = "lootables", singular = "fill")
public interface Filler extends FeatureDefinition {
/**
* Items to fill with
*/
@Property Loot loot();
/**
* Blocks/entities that are fillable
*/
@Property default Filter filter() {
return StaticFilter.ALLOW;
}
/**
* Refill all blocks/entities when this filter goes high
*/
@Property Optional<Filter> refill_trigger();
/**
* Refill an individual block/entity this much time after it was last filled
*/
@Property default Duration refill_interval() {
return TimeUtils.INF_POSITIVE;
}
/**
* Clear contents before refilling
*/
@Property default boolean refill_clear() {
return true;
}
}