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}