类 GameStateManager

java.lang.Object
com.playerblocklife.GameStateManager

public class GameStateManager extends Object
游戏状态管理器 - PBL生存游戏模式的核心管理器

主要功能包括:

  • 管理游戏状态(等待中/游戏中/已结束)
  • 为非OP玩家分配独特颜色的生命方块
  • 处理游戏开始时的生命方块生成
  • 控制游戏开始和结束逻辑
  • 管理实时计分板显示(游戏状态、剩余方块、限时等)
  • 处理游戏重置和玩家淘汰
  • 监控游戏结束条件(仅剩一名存活玩家或限时结束)

游戏模式特性:

  • OP玩家始终处于观察者模式,不参与游戏
  • 非OP玩家在等待时处于冒险模式,手中持有对应颜色方块
  • 游戏开始后非OP玩家转为生存模式并清空背包
  • 使用不同颜色的羊毛、玻璃、水泥方块作为生命方块
  • 支持限时游戏模式
  • 游戏结束时显示胜利玩家
从以下版本开始:
4.0.0
  • 构造器详细资料

  • 方法详细资料

    • getCurrentState

      public GameStateManager.GameState getCurrentState()
    • setCurrentState

      public void setCurrentState(GameStateManager.GameState state)
    • assignPlayerColor

      public void assignPlayerColor(org.bukkit.entity.Player player)
      为玩家分配颜色
      参数:
      player - 要分配颜色的玩家
    • generateLifeBlocksForPlayer

      public boolean generateLifeBlocksForPlayer(org.bukkit.entity.Player player)
      为玩家生成生命方块
      参数:
      player - 要生成生命方块的玩家
      返回:
      生成成功返回true,否则返回false
    • removeBlock

      public boolean removeBlock(org.bukkit.Location location, org.bukkit.entity.Player breaker)
      移除被破坏的生命方块
      参数:
      location - 方块位置
      breaker - 破坏方块的玩家
      返回:
      移除成功返回true,否则返回false
    • checkGameEnd

      public void checkGameEnd()
      检查游戏是否结束
    • startTimedGame

      public void startTimedGame(int minutes)
      开始限时游戏
      参数:
      minutes - 游戏限时(分钟)
    • startGame

      public void startGame()
      开始游戏
    • resetGame

      public void resetGame()
      重置游戏
    • getRemainingBlocks

      public int getRemainingBlocks(UUID playerId)
      获取玩家剩余方块数量
      参数:
      playerId - 玩家UUID
      返回:
      玩家剩余方块数量
    • getPlayerColor

      public org.bukkit.Material getPlayerColor(UUID playerId)
      获取玩家颜色
      参数:
      playerId - 玩家UUID
      返回:
      玩家的颜色材料
    • updateScoreboard

      public void updateScoreboard()
      更新计分板
    • updatePlayerScoreboard

      public void updatePlayerScoreboard(org.bukkit.entity.Player player)
      更新玩家特定的计分板信息
      参数:
      player - 要更新计分板的玩家
    • getAlivePlayersCount

      public int getAlivePlayersCount()
      获取存活玩家数量
      返回:
      存活玩家数量
    • getAlivePlayers

      public List<UUID> getAlivePlayers()
      获取所有存活玩家
      返回:
      存活玩家UUID列表
    • getPlayerBlocks

      public Map<UUID,List<org.bukkit.Location>> getPlayerBlocks()
      获取所有玩家的方块位置
      返回:
      玩家UUID到方块位置列表的映射
    • clearPlayerBlocks

      public void clearPlayerBlocks(UUID playerId)
      清除指定玩家的方块
      参数:
      playerId - 要清除方块的玩家UUID
    • getGameDuration

      public int getGameDuration()
      获取游戏持续时间(分钟)
      返回:
      游戏持续时间(分钟)
    • getGameStartTime

      public long getGameStartTime()
      获取游戏开始时间戳
      返回:
      游戏开始时间戳
    • isLimitedTime

      public boolean isLimitedTime()
      检查是否为限时游戏
      返回:
      如果是限时游戏返回true,否则返回false