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!");
    }
}

还是我盲目地缺少一种更简单,更简单的方法?感谢任何帮助,谢谢!

要先收听事件,您需要在插件上注册事件

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作为全局静态变量。

最新更新