package tc.oc.pgm.goals.events; import javax.annotation.Nullable; import com.google.common.base.Preconditions; import org.bukkit.event.HandlerList; import java.time.Instant; import tc.oc.pgm.goals.TouchableGoal; import tc.oc.pgm.match.Competitor; import tc.oc.pgm.match.ParticipantState; /** * Raised when a player touches a goal. */ public class GoalTouchEvent extends GoalEvent { private static final HandlerList handlers = new HandlerList(); private final TouchableGoal goal; private final @Nullable Competitor competitor; private final boolean firstForCompetitor; private final @Nullable ParticipantState player; private final boolean firstForPlayer; private final boolean firstForPlayerLife; private final Instant time; private boolean cancelToucherMessage; /** * Creates a new {@link GoalTouchEvent}. * @param goal The {@link TouchableGoal} that was touched. * @param competitor Team that touched the goal, only if it was their first * @param firstForCompetitor * @param player The player that touched the goal. * @param firstForPlayer * @param firstForPlayerLife * @param time The time at which the touch occurred. */ public GoalTouchEvent(TouchableGoal goal, @Nullable Competitor competitor, boolean firstForCompetitor, @Nullable ParticipantState player, boolean firstForPlayer, boolean firstForPlayerLife, Instant time) { super(goal); this.competitor = competitor; this.firstForCompetitor = firstForCompetitor; this.firstForPlayer = firstForPlayer; this.firstForPlayerLife = firstForPlayerLife; this.goal = Preconditions.checkNotNull(goal, "Goal"); this.player = player; this.time = Preconditions.checkNotNull(time, "Time"); } public GoalTouchEvent(TouchableGoal goal, Instant time) { this(goal, null, false, null, false, false, time); } public Instant getTime() { return this.time; } public Competitor getCompetitor() { return competitor; } public boolean isFirstForCompetitor() { return firstForCompetitor; } public @Nullable ParticipantState getPlayer() { return this.player; } public boolean isFirstForPlayer() { return firstForPlayer; } public boolean isFirstForPlayerLife() { return firstForPlayerLife; } @Override public TouchableGoal getGoal() { return this.goal; } public boolean getCancelToucherMessage() { return cancelToucherMessage; } public void setCancelToucherMessage(boolean cancelToucherMessage) { this.cancelToucherMessage = cancelToucherMessage; } public static HandlerList getHandlerList() { return handlers; } @Override public HandlerList getHandlers() { return handlers; } }