001package com.ericlam.mc.minigames.core.event.player;
002
003import com.ericlam.mc.minigames.core.game.GameState;
004import com.ericlam.mc.minigames.core.game.InGameState;
005import org.bukkit.entity.Player;
006import org.bukkit.event.Cancellable;
007import org.bukkit.event.HandlerList;
008import org.bukkit.event.player.PlayerEvent;
009
010import javax.annotation.Nonnull;
011import javax.annotation.Nullable;
012
013/**
014 * 遊戲玩家準備加入時觸發的事件。
015 * <p>
016 * 此事件可以被取消。當取消事件後,小遊戲系統將不會把該玩家加入為遊戲玩家。
017 */
018public final class GamePlayerPreJoinEvent extends PlayerEvent implements Cancellable {
019
020    private static final HandlerList handerlist = new HandlerList();
021    private boolean cancelled;
022    private GameState state;
023    private InGameState inGameState;
024
025    public GamePlayerPreJoinEvent(Player who, GameState state, @Nullable InGameState inGameState) {
026        super(who);
027        this.cancelled = false;
028        this.state = state;
029        this.inGameState = inGameState;
030    }
031
032    @Nonnull
033    @Override
034    public HandlerList getHandlers() {
035        return handerlist;
036    }
037
038    @Override
039    public boolean isCancelled() {
040        return cancelled;
041    }
042
043    @Override
044    public void setCancelled(boolean b) {
045        this.cancelled = b;
046    }
047
048    /**
049     * 獲取遊戲狀態
050     *
051     * @return 遊戲狀態
052     */
053    public GameState getState() {
054        return state;
055    }
056
057    /**
058     * 獲取場地狀態
059     *
060     * @return 場地狀態
061     */
062    @Nullable
063    public InGameState getInGameState() {
064        return inGameState;
065    }
066}