gpt4 book ai didi

java - 从其他类访问 HashMap 时出现问题

转载 作者:行者123 更新时间:2023-12-01 11:13:38 25 4
gpt4 key购买 nike

我正在使用 Spigot(几乎是 Bukkit)编写一个插件,但我在从另一个类的一个类访问 HashMap 时遇到问题。这是我的 HashMap 和 getter:

private Map<String, Integer> compPlayers = new HashMap<String, Integer>();

public Map<String, Integer> getCompPlayers(){
return compPlayers;
}

我能够查看 HashMap 是否包含类中的某些键,如下所示:

if(args[0].equalsIgnoreCase("join")){
if(compPlayers.containsKey(p.getName())){
p.sendMessage(ChatColor.RED + "You are already part of the competition");
return false;
}

但是在我的监听器类中,我似乎无法正确访问它。这是我的监听器类中的一段代码:

public class CompetitionListener implements Listener {

private PluginMain plugin;

public CompetitionListener(PluginMain plugin){
this.plugin = plugin;
}

@EventHandler
public void onBlockPlace(BlockBreakEvent e){
Player p = (Player) e.getPlayer();
p.sendMessage("BlockBreakEvent");
if(plugin.getCommands().getCompPlayers().containsKey(p.getName())){
p.sendMessage(ChatColor.YELLOW + "You scored a point!");
plugin.getCommands().getCompPlayers().put(p.getName(), plugin.getCommands().getCompPlayers().get(p.getName() + 1));
}
}
}

PluginMain 是扩展 JavaPlugin 的类,而 getCommands() 是其中的 Commands 类的 getter。

虽然我能够从监听器类访问所有这些方法而不会出现错误,但检查玩家名称是否在 HashMap 中的行不起作用并且始终返回 false。事件本身确实有效。

最佳答案

您永远不会在 Listener 类中注册事件。

Listener 类的构造函数中,添加以下内容:

plugin.getServer().getPluginManager().registerEvents(this, plugin);

关于java - 从其他类访问 HashMap 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com