package tc.oc.pgm.goals; import javax.annotation.Nullable; import org.bukkit.DyeColor; import tc.oc.api.docs.virtual.MatchDoc; import tc.oc.commons.bukkit.util.BukkitUtils; import tc.oc.pgm.match.Match; import tc.oc.pgm.teams.Team; import tc.oc.pgm.teams.TeamMatchModule; /** * A goal with an owning team. Match-time companion to {@link OwnedGoal} */ public abstract class OwnedGoal<T extends OwnableGoalDefinition> extends SimpleGoal<T> { protected final Team owner; public OwnedGoal(T definition, Match match) { super(definition, match); this.owner = definition.getOwner() == null ? null : match.needMatchModule(TeamMatchModule.class).team(definition.getOwner()); } public @Nullable Team getOwner() { return this.owner; } @Override public DyeColor getDyeColor() { return owner != null ? BukkitUtils.chatColorToDyeColor(owner.getColor()) : DyeColor.WHITE; } @Override public abstract MatchDoc.OwnedGoal getDocument(); class Document extends SimpleGoal.Document implements MatchDoc.OwnedGoal { @Override public @Nullable String owner_id() { return getOwner() == null ? null : getOwner().slug(); } @Override public @Nullable String owner_name() { return getOwner() == null ? null : getOwner().getName(); } } }