ProjectAres/PGM/src/main/java/tc/oc/pgm/eventrules/EventRule.java

112 lines
2.8 KiB
Java

package tc.oc.pgm.eventrules;
import javax.annotation.Nullable;
import net.md_5.bungee.api.chat.BaseComponent;
import org.bukkit.util.Vector;
import tc.oc.pgm.features.FeatureDefinition;
import tc.oc.pgm.filters.Filter;
import tc.oc.pgm.kits.Kit;
import tc.oc.pgm.regions.Region;
public interface EventRule extends FeatureDefinition {
EventRuleScope scope();
Region region();
Filter filter();
Kit kit();
boolean lendKit();
Vector velocity();
@Nullable BaseComponent message();
boolean earlyWarning();
static EventRule newEventFilter(EventRuleScope scope, Region region, Filter filter, @Nullable BaseComponent message, boolean earlyWarning) {
return new EventRuleImpl(scope, region, filter, null, false, null, message, earlyWarning);
}
static EventRule newKitRegion(EventRuleScope scope, Region region, Filter filter, Kit kit, boolean lendKit) {
return new EventRuleImpl(scope, region, filter, kit, lendKit, null, null, false);
}
static EventRule newVelocityRegion(EventRuleScope scope, Region region, Filter filter, Vector velocity) {
return new EventRuleImpl(scope, region, filter, null, false, velocity, null, false);
}
}
class EventRuleImpl extends FeatureDefinition.Impl implements EventRule {
private final @Inspect EventRuleScope scope;
private final @Inspect Region region;
private final @Inspect Filter filter;
private final @Inspect Kit kit;
private final @Inspect boolean lendKit;
private final @Inspect Vector velocity;
private final @Inspect @Nullable BaseComponent message;
private final @Inspect boolean earlyWarning;
EventRuleImpl(EventRuleScope scope,
Region region,
Filter filter,
Kit kit,
boolean lendKit,
Vector velocity,
@Nullable BaseComponent message,
boolean earlyWarning) {
this.scope = scope;
this.region = region;
this.filter = filter;
this.kit = kit;
this.lendKit = lendKit;
this.velocity = velocity;
this.message = message;
this.earlyWarning = earlyWarning;
}
@Override
public EventRuleScope scope() {
return scope;
}
@Override
public Region region() {
return region;
}
@Override
public Filter filter() {
return filter;
}
@Override
public Kit kit() {
return kit;
}
@Override
public boolean lendKit() {
return lendKit;
}
@Override
public Vector velocity() {
return velocity;
}
@Override
@Nullable
public BaseComponent message() {
return message;
}
@Override
public boolean earlyWarning() {
return earlyWarning;
}
}