package tv.mineinthebox.essentials.minigames.plugin.arena;
import java.util.Set;
import org.bukkit.Sound;
import tv.mineinthebox.essentials.minigames.plugin.MinigameType;
public interface MinigameArena {
/**
* returns the name
*
* @author xize
* @return String
*/
public String getName();
/**
* returns the type of minigame
*
* @author xize
* @return MinigameType
*/
public MinigameType getType();
/**
* returns true if the arena has max players, otherwise false
*
* @author xize
* @return boolean
*/
public boolean hasMaxPlayers();
/**
* returns the max amount of players allowed!
*
* @author xize
* @return int
*/
public int getMaxPlayers();
/**
* returns a status String for e.g buttons in inventory menus
*
* @author xize
* @return String
*/
public String getArenaStatus();
/**
* returns true if the game is started otherwise false
*
* @author xize
* @return boolean
*/
public boolean isStarted();
/**
* sets the game to started or stopped
*
* @author xize
* @param bol - the boolean
*/
public void setStarted(boolean bol);
/**
* returns true if the arena some sort of score system, otherwise false
*
* @author xize
* @return boolean
*/
public boolean hasScore();
/**
* returns the max score!
*
* @author xize
* @return int
*/
public int getMaxScore();
/**
* lets a player join the arena
*
* @author xize
* @param mp - the player
*/
public void joinArena(MinigamePlayer mp);
/**
* lets a player leave the arena
*
* @author xize
* @param xp - the player
*/
public void leaveArena(MinigamePlayer xp);
/**
* returns true if the player exists inside the arena, otherwise false
*
* @author xize
* @param xp - the player
* @return boolean
*/
public boolean isInArena(MinigamePlayer xp);
/**
* returns true if the arena is full
*
* @author xize
* @return boolean
*/
public boolean isFull();
/**
* returns true if the arena has teams
*
* @author xize
* @return boolean
*/
public boolean hasTeams();
/**
* returns the players
*
* @author xize
* @return Set<String>
*/
public Set<MinigamePlayer> getPlayers();
/**
* a simple countdown method
*
* @author xize
* @param seconds - the seconds
* @param clocktick - the clock tick sound
* @param gamestart - the starters sound
*/
public void doCountdown(final int seconds, final Sound clocktick, final Sound gamestart);
public boolean hasLeaderBoard();
public LeaderBoard getLeaderBoard();
/**
* resets the arena to default
*
* @author xize
*/
public void reset();
/**
* removes the arena, from whenever the storage is
*
* @author xize
*/
public void remove();
}