我正在开发一个Minecraft服务器框架,我在从MongoDB数据库中检索播放器数据时遇到了一个常量错误。我有一个代理插件和一个插入框架的插件插件。
对于代理插件,我可以将播放器数据存储在我的PlayerCache
(将UUID分配给PlayerData
个对象的地图中),但是,对于插件插件,我不能。它返回一个空指针,表示在缓存中找不到数据,即使我确定我调用了cacheData
方法。
我相信发生的事情是我没有足够的时间让数据库获取信息并对其进行缓存。
龙头代码:
@EventHandler
public void onLogin(PlayerLoginEvent event)
{
PlayerCache.getInstance().cachePlayer(event.getPlayer().getUniqueId());
}
@EventHandler
public void onJoin(PlayerJoinEvent event)
{
event.setJoinMessage(null);
event.getPlayer().setDisplayName(PlayerCache.getInstance().getCachedRank(
event.getPlayer().getUniqueId()
).getColor() + event.getPlayer().getName()); //Throws a null pointer.
}
PlayerCache
:
public void cachePlayer(UUID uuid)
{
PlayerData PD = PlayerManager.getInstance().getPlayerData(uuid);
this.cache.put(uuid, PD);
}
public PlayerRank getCachedRank(UUID uuid)
{
return this.cache.get(uuid).getRank();
}
希望有人可以提供帮助。