DemonPlayerMail/src/main/java/com/yaohun/playermail/manage/PlayerManager.java
2025-07-19 11:51:25 +08:00

65 lines
2.0 KiB
Java

package com.yaohun.playermail.manage;
import com.yaohun.playermail.data.PlayerData;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
/**
* 玩家管理器类,用于管理所有玩家的数据
*/
public class PlayerManager {
// 存储所有玩家数据的映射表,键为玩家名称,值为玩家数据对象
private Map<String, PlayerData> playerDataMap = new HashMap<>();
/**
* 构造函数,初始化在线玩家数据
*/
public PlayerManager(){
// 遍历当前所有在线玩家
for (Player player : Bukkit.getOnlinePlayers()){
// 仅处理等级达到50级以上的玩家
if(player.getLevel() >= 50){
// 获取玩家名称
String playerName = player.getName();
// 创建玩家数据对象
PlayerData playerData = new PlayerData(playerName);
// 将玩家数据添加到映射表中
playerDataMap.put(playerName, playerData);
}
}
}
/**
* 获取玩家数据,如果玩家数据不存在,则创建新的玩家数据对象
*
* @param playerName 玩家名称
* @return 玩家数据对象
*/
public PlayerData getPlayerData(String playerName){
// 检查映射表中是否存在指定玩家的数据
if(!playerDataMap.containsKey(playerName)) {
// 如果不存在,创建新的玩家数据对象
PlayerData playerData = new PlayerData(playerName);
// 将新的玩家数据对象添加到映射表中
playerDataMap.put(playerName, playerData);
}
// 返回玩家数据对象
return playerDataMap.get(playerName);
}
/**
* 保存所有玩家的数据
*/
public void saveAllPlayerData(){
// 遍历所有玩家数据
for (PlayerData playerData : playerDataMap.values()){
// 保存每个玩家的邮件栈数据
playerData.saveMailStack();
}
}
}