基本上,我是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
作为全局静态变量。