Class MiniGame

java.lang.Object
com.minigameworld.frames.MiniGame
All Implemented Interfaces:
GameEventListener
Direct Known Subclasses:
FakeMiniGame, SoloBattleMiniGame, SoloMiniGame, TeamBattleMiniGame, TeamMiniGame

public abstract class MiniGame extends Object implements GameEventListener
MiniGame class of all minigames
- Custom minigame frame can be made with extending this class
- Message only send to same minigame players
  • Field Details

    • messenger

      protected Messenger messenger
      Language messenger
  • Constructor Details

    • MiniGame

      protected MiniGame(String title, org.bukkit.Location location, int minPlayers, int maxPlayers, int playTime, int waitingTime)
      Constructor with location
      Parameters:
      title - Used title in the server (different with class name)
      location - Playing location
      minPlayers - Minimum player count to play
      maxPlayers - Maximum player count to play
      playTime - Minigame playing time
      waitingTime - Waiting time before join minigame
    • MiniGame

      protected MiniGame(String title, int minPlayers, int maxPlayers, int playTime, int waitingTime)
      Base constructor
      Location set to default (Bukkit.getWorld("world"))
      Parameters:
      title - Used title in the server (different with class name)
      minPlayers - Minimum player count to play
      maxPlayers - Maximum player count to play
      playTime - Minigame playing time
      waitingTime - Waiting time before join minigame
  • Method Details

    • tutorial

      protected abstract List<String> tutorial()
      Register minigame tutorial
    • initGame

      protected void initGame()
      Executed every time when game starts
    • onStart

      protected void onStart()
      Executed immediately after game started
    • onFinishDelay

      protected void onFinishDelay()
      Executed when finish delay starts
    • onFinish

      protected void onFinish()
      Executed after finish delay end and before the game finished (players remains)
    • onJoin

      public void onJoin(org.bukkit.entity.Player p)
      Called after the player joined after isolated from the outside
      [IMPORTANT] Player state is already saved and now pure state
      Parameters:
      p - Joined player
    • onLeave

      public void onLeave(org.bukkit.entity.Player p)
      Called when the player leave this game before start
      [IMPORTANT] Player state is still isolated from the outside (player state will be restored after this method)
      [IMPORTANT] Only called before the game starts
      Parameters:
      p - Leaving player
    • onView

      public void onView(org.bukkit.entity.Player p)
      Called after the player enter viewing after isolated from the outside
      [IMPORTANT] Player state is already saved and now pure state
      Parameters:
      p - Viewing player
    • onUnview

      public void onUnview(org.bukkit.entity.Player p)
      Called before the player unview this game
      [IMPORTANT] Player state is still isolated from the outside (player state will be restored after this method)
      Parameters:
      p - Unviewing player
    • onException

      protected void onException(MiniGameExceptionEvent exception)
      Called only in play state and when exception is passed
      Exception
    • initCustomData

      protected void initCustomData()
      Init custom data with this method
    • loadCustomData

      public void loadCustomData()
      Load custom data with this method
    • updateScoreboard

      public void updateScoreboard()
      Update(fix) scoreboard
      Hook method
    • initSettings

      public void initSettings()
      Init(reset) minigame settings
      [IMPORTANT]
      - Initialize settings on every start
    • joinGame

      public boolean joinGame(org.bukkit.entity.Player p)
      Join player to minigame
      Parameters:
      p - Player who tries to join
      Returns:
      Result of try to join
    • leaveGame

      public boolean leaveGame(org.bukkit.entity.Player p)
      When a player tries to leave minigame before start
      [IMPORTANT] This method must be called by the MiniGameManager.leaveGame(Player) ONLY. (If player needs to be left in this MiniGame class, use onPlayerLeave(Player, String))
      Parameters:
      p - leaving player
      Returns:
      Result of try to leave
    • startGame

      public boolean startGame()
      Start minigame after check min player count
      Notify START to observers

      Execute "onStart()"
    • finishGame

      public void finishGame()
      [IMPORTANT] Use finishGame() for endpoint of a minigame, never run anything after finishGame()
      Finish minigame
      Notify FINISH to observers
      Execute "onFinish()" at first
    • printScores

      protected void printScores()
      Print scores to all players
      Can print format differently depending on game type
    • rank

      public List<? extends MiniGameRank> rank()
      Get rank data
      Returns:
      Ordered data
    • handleException

      public final void handleException(MiniGameExceptionEvent exception)
      - Handle exception
      - If player exception
      - calls onException(MiniGameExceptionEvent)
      - player will leave the game
      - checks MiniGameSetting.GameFinishCondition

      - If server exception
      - minigame will be finished
      Parameters:
      exception - Minigame exception
      See Also:
      MiniGameExceptionEvent
    • checkGameFinishCondition

      public void checkGameFinishCondition()
      Check game finish condition
    • isEmpty

      public boolean isEmpty()
      Check minigame has players
      Returns:
      True if no players in minigame
    • isFull

      public boolean isFull()
      Check minigame is full of players
      Returns:
      True if players = max player count
    • containsPlayer

      public boolean containsPlayer(org.bukkit.entity.Player p)
      Check player is playing this minigame (not check player is viewing)
      To check player is viewing this minigame, get viewManager() and use MiniGameViewManager.isViewing(Player)
      Parameters:
      p - Target player
      Returns:
      True if player is playing minigame
    • players

      public List<org.bukkit.entity.Player> players()
      Get copied player list
      Returns:
      Copied Player list
    • playerCount

      public int playerCount()
      Get playing players count
      Returns:
      playing players count
    • sendMessage

      public void sendMessage(org.bukkit.entity.Player p, String msg)
      Send message to player with minigame title prefix
      Parameters:
      p - Audience
      msg - message
    • sendMessage

      public void sendMessage(org.bukkit.entity.Player p, String msg, boolean prefix)
    • sendMessages

      public void sendMessages(String msg)
      Send message to all players with minigame title prefix
      Parameters:
      msg - message
    • sendMessages

      public void sendMessages(String msg, boolean prefix)
    • sendTitle

      public void sendTitle(org.bukkit.entity.Player p, String title, String subTitle, int fadeIn, int stay, int fadeOut)
      Send title with minigame title prefix
      Parameters:
      p - Audience
      title - Title string
      subTitle - Subtitle string
      fadeIn - Fade in time (tick)
      stay - Stay time (tick)
      fadeOut - Fade out time (tick)
    • sendTitle

      public void sendTitle(org.bukkit.entity.Player p, String title, String subTitle)
      Send title with minigame title prefix with default time settings
      Parameters:
      p - Audience
      title - Title string
      subTitle - Subtitle string
    • sendTitles

      public void sendTitles(String title, String subTitle, int fadeIn, int stay, int fadeOut)
      Send title to all players with minigame title prefix
      Parameters:
      title - Title string
      subTitle - Subtitle string
      fadeIn - Fade in time (tick)
      stay - Stay time (tick)
      fadeOut - Fade out time (tick)
    • sendTitles

      public void sendTitles(String title, String subTitle)
      Send title to all players with minigame title prefix with default time settings
      Parameters:
      title - Title string
      subTitle - Subtitle string
    • playSound

      public void playSound(org.bukkit.entity.Player p, org.bukkit.Sound sound)
      Play sound to a player
      Parameters:
      p - Listener
      sound - to play
    • playSounds

      public void playSounds(org.bukkit.Sound sound)
      Play sound to all players
      Parameters:
      sound - to play
    • particle

      public void particle(org.bukkit.entity.Player p, org.bukkit.Particle particle, int count, double speed)
      Spawn particle around of the player
      Parameters:
      p - Player
      particle - Particle type
      count - particle count
      speed - particle spreading speed
    • particles

      public void particles(org.bukkit.Particle particle, int count, double speed)
      Spawn particle around of all the players
      Parameters:
      particle - Particle type
      count - particle count
      speed - particle spreading speed
    • particle

      public void particle(org.bukkit.Location loc, org.bukkit.Particle particle, int count, double speed)
      Spawn particles around of the location
      Parameters:
      loc - Particle spawn location
      particle - Particle type
      count - particle count
      speed - particle spreading speed
    • gamePlayer

      public MiniGamePlayer gamePlayer(org.bukkit.entity.Player p)
      Get PlayerData
      Parameters:
      p - Target player
      Returns:
      PlayerData of p
    • gamePlayers

      public List<MiniGamePlayer> gamePlayers()
      Get all player data list
      Returns:
      PlayerData list
    • score

      public int score(org.bukkit.entity.Player p)
      Get score of player
      Parameters:
      p - Target player
      Returns:
      Player's score
    • plusScore

      protected void plusScore(org.bukkit.entity.Player p, int amount)
      Plus player score
      Parameters:
      p - Target player
      amount - Score amount
    • plusEveryoneScore

      protected void plusEveryoneScore(int amount)
      Plus everyone's score
      Parameters:
      amount - Score amount
    • minusScore

      protected void minusScore(org.bukkit.entity.Player p, int amount)
      Minus player score
      Parameters:
      p - Target player
      amount - Score amount
    • minusEveryoneScore

      protected void minusEveryoneScore(int amount)
      Minus everyone's score
      Parameters:
      amount - Score amount
    • setLive

      protected void setLive(org.bukkit.entity.Player p, boolean live)
      Mark player's live
      Parameters:
      p - Target player
      live - False to mark death
    • isLive

      protected boolean isLive(org.bukkit.entity.Player p)
      Check player is live
      Parameters:
      p - Target player
      Returns:
      True if player is live
    • livePlayers

      protected List<org.bukkit.entity.Player> livePlayers()
      Get live players list
      Returns:
      Live players list
    • livePlayersCount

      protected int livePlayersCount()
      Get live players count
      Returns:
      Live players count
    • isLessThanPlayersLive

      protected boolean isLessThanPlayersLive()
      Returns:
      True if livePlayersCount() is less than MiniGameSetting.getGameFinishConditionPlayerCount()
    • isMoreThanPlayersLive

      protected boolean isMoreThanPlayersLive()
      Returns:
      True if livePlayersCount() is more than MiniGameSetting.getGameFinishConditionPlayerCount()
    • isLessThanPlayersLeft

      protected boolean isLessThanPlayersLeft()
      Returns:
      True if playerCount() is less than MiniGameSetting.getGameFinishConditionPlayerCount()
    • title

      public String title()
      Shortcut method
      Returns:
      Minigame title
    • coloredTitle

      public String coloredTitle()
      Shortcut method
      Returns:
      Colored minigame title
    • location

      public org.bukkit.Location location()
      Shortcut method
      Returns:
      Minigame playing location
    • waitingTime

      public int waitingTime()
      Shortcut method
      Returns:
      Minigame waiting time
    • playTime

      public int playTime()
      Shortcut method
      Returns:
      Minigame play time
    • minPlayers

      public int minPlayers()
      Shortcut method
      Returns:
      Minigame max player count
    • maxPlayers

      public int maxPlayers()
      Shortcut method
      Returns:
      Minigame min player count
    • isActive

      public boolean isActive()
      Shortcut method
      Returns:
      True if minigame is active
    • id

      public String id()
      Shortcut method
      Returns:
      minigame id
    • isStarted

      public boolean isStarted()
      Shortcut method
      Returns:
      True if minigame has started
    • tutorials

      public final List<String> tutorials()
      Shortcut method
      Returns:
      Minigame tutorial list
    • customData

      public Map<String,​Object> customData()
      Shortcut method
      Returns:
      Minigame custom data map
    • titleWithClassName

      public String titleWithClassName()
      Get minigame title with class name
      Returns:
      title with class name
    • className

      public String className()
      Get just class name
      Returns:
      Simple class name
    • setting

      public MiniGameSetting setting()
      Get Minigame setting
      Returns:
      setting
    • leftWaitingTime

      public int leftWaitingTime()
      Get left waiting time (sec)
      Returns:
      Left waiting time
    • leftPlayTime

      public int leftPlayTime()
      Get left play time (sec)
      Returns:
      Left play time
    • taskManager

      public com.wbm.plugin.util.instance.TaskManager taskManager()
      Get task manager
      Returns:
      Task manager
    • dataManager

      public MiniGameDataManager dataManager()
      Get data manager
      Returns:
      Data manager
    • locationManager

      public LocationManager locationManager()
      Get location manager
      Returns:
      Location manager
    • customOption

      public MiniGameCustomOption customOption()
      Get custom option
      Returns:
      Custom option
    • viewManager

      public MiniGameViewManager viewManager()
      Get view manager
      Returns:
      View manager
    • scoreboardManager

      public MiniGameScoreboardManager scoreboardManager()
      Get scoreboard manager
      Returns:
      Scoreboard manager
    • inventoryManager

      public MiniGameInventoryManager inventoryManager()
      Get inventory manager
      Returns:
      Inventory manager
    • randomPlayer

      protected org.bukkit.entity.Player randomPlayer()
      Get random player of all players
      Returns:
      Random player
    • topPlayer

      protected org.bukkit.entity.Player topPlayer()
      Get player who has the highest score of all
      Returns:
      Null if there are no players
    • frameType

      public String frameType()
      Gets minigame frame type (e.g. "Solo", "SoloBattle", "Team", "TeamBattle")
      Override this method for custom frame minigame class
      Returns:
      Minigame frame type
      See Also:
      SoloMiniGame, SoloBattleMiniGame, TeamMiniGame, TeamBattleMiniGame
    • isSameTemplate

      public boolean isSameTemplate(MiniGame game)
      Check two games drived from the same template game or not
      Parameters:
      game - Checking game
      Returns:
      True if two games are derived from the same template game
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • minigame

      public MiniGame minigame()
      Specified by:
      minigame in interface GameEventListener