65 lines
2.0 KiB
Java
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();
|
|
}
|
|
}
|
|
}
|