Bukkit - 检查玩家是否发送包含初始化双精度的聊天消息

时间:2017-11-23 22:45:24

标签: java methods bukkit

基本上,我对Java& Bukkit一般如此,如果我做一些愚蠢的事情,请不要讨厌我。所以基本上以下代码是我的命令库:

double numberEnd = Double.parseDouble(args[1]);
double random = new Random().nextDouble();
double result = numberStart + (random * (numberEnd - numberStart));
theSender.sendMessage(ChatColor.GREEN + "[Giveaway] + ChatColor.AQUA + "The winning number is " + result)
Bukkit.broadcastMessage(ChatColor.GREEN + (ChatColor.BOLD + "A giveaway has begun ranging from 0 - " + numberEnd));
Player winningPlayer;

所以我希望插件能够实现玩家说出(结果)并转发另一个广播说(玩家)是胜利者。现在,我不太了解确切的方法,但是我可以创建以下方法并在我的代码中调用它吗?

public void onPlayerChat(AsyncPlayerChatEvent winningPlayer) {
    if (winningPlayer.getMessage().contains(result)) {
        Bukkit.broadcastMessage(winningPlayer.getPlayer() + ChatColor.GREEN + " has won!");
    }
}

或者是否有一种更容易,更简单的方法,我一味地错过了? 非常感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

要首先收听事件,您需要在插件启用

上注册事件
public void onEnable() {
    Bukkit.getServer().getPluginManager().registerEvents(this, this);
    // Other code...
}

确保您的班级实施Listener。在这里,您可以注册所有事件,其中第一个参数引用Listener,第二个引用Plugin。接下来,您需要编写onPlayerChat方法并为其添加EventHandler注释,以使其正常工作。

@EventHandler
public void onPlayerChat(AsyncPlayerChatEvent winningPlayer) {
    if (winningPlayer.getMessage().contains(result)) {
        Bukkit.broadcastMessage(winningPlayer.getPlayer() + ChatColor.GREEN + " has won!");
    }
}

当然,您需要在某些方面从onPlayerChat方法获取结果。您可以将result设为全局静态变量。