package tc.oc.pgm.goals;
import javax.annotation.Nullable;
import net.md_5.bungee.api.chat.BaseComponent;
import tc.oc.pgm.features.FeatureFactory;
import tc.oc.pgm.features.FeatureInfo;
import tc.oc.pgm.features.SluggedFeatureDefinition;
import tc.oc.pgm.match.Match;
/**
* Definition of a goal/objective feature. Provides a name field, used to identify
* the goal to players, and to generate a default ID. There is also a visibility
* flag. An invisible goal does not appear in any scoreboards, chat messages, or
* anything else that would directly indicate its existence.
*/
@FeatureInfo(name = "objective")
public interface GoalDefinition<G extends Goal<?>> extends SluggedFeatureDefinition, FeatureFactory<G> {
String getName();
String getColoredName();
BaseComponent getComponentName();
boolean isShared();
@Nullable Boolean isRequired();
boolean isVisible();
default G getGoal(Match match) {
return match.features().get(this);
}
}