# GameStateManager (PlayerBlockLife 2.2.0-alpha-1.20.4 API)
declaration: package: com.playerblocklife, class: GameStateManager

程序包 com.playerblocklife

# 类 GameStateManager

java.lang.Object
com.playerblocklife.GameStateManager

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

主要功能包括：

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

游戏模式特性：

- OP玩家始终处于观察者模式，不参与游戏
- 非OP玩家在等待时处于冒险模式，手中持有对应颜色方块
- 游戏开始后非OP玩家转为生存模式并清空背包
- 使用不同颜色的羊毛、玻璃、水泥方块作为生命方块
- 支持限时游戏模式
- 游戏结束时显示胜利玩家

从以下版本开始:
  4.0.0

## 嵌套类概要

嵌套类
修饰符和类型
类
说明
`static enum`
`GameStateManager.GameState`

## 构造器概要

构造器
构造器
说明
`GameStateManager(PlayerBlockLife plugin)`

## 方法概要

修饰符和类型
方法
说明
`void`
`assignPlayerColor(org.bukkit.entity.Player player)`
为玩家分配颜色
`void`
`checkGameEnd()`
检查游戏是否结束
`void`
`clearPlayerBlocks(UUID playerId)`
清除指定玩家的方块
`boolean`
`generateLifeBlocksForPlayer(org.bukkit.entity.Player player)`
为玩家生成生命方块
`List<UUID>`
`getAlivePlayers()`
获取所有存活玩家
`int`
`getAlivePlayersCount()`
获取存活玩家数量
`GameStateManager.GameState`
`getCurrentState()`
`int`
`getGameDuration()`
获取游戏持续时间（分钟）
`long`
`getGameStartTime()`
获取游戏开始时间戳
`Map<UUID,List<org.bukkit.Location>>`
`getPlayerBlocks()`
获取所有玩家的方块位置
`org.bukkit.Material`
`getPlayerColor(UUID playerId)`
获取玩家颜色
`int`
`getRemainingBlocks(UUID playerId)`
获取玩家剩余方块数量
`boolean`
`isLimitedTime()`
检查是否为限时游戏
`boolean`
`removeBlock(org.bukkit.Location location, org.bukkit.entity.Player breaker)`
移除被破坏的生命方块
`void`
`resetGame()`
重置游戏
`void`
`setCurrentState(GameStateManager.GameState state)`
`void`
`startGame()`
开始游戏
`void`
`startTimedGame(int minutes)`
开始限时游戏
`void`
`updatePlayerScoreboard(org.bukkit.entity.Player player)`
更新玩家特定的计分板信息
`void`
`updateScoreboard()`
更新计分板

### 从类继承的方法 java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## 构造器详细资料

### GameStateManager

public GameStateManager(PlayerBlockLife plugin)

## 方法详细资料

### 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