【发布时间】:2020-07-20 10:56:00
【问题描述】:
当我尝试获取 Bukkit.OnlinePlayers 时遇到问题,我不知道接下来会发生什么,所以如果有人帮助我,我会非常高兴。问题出在这一行final Player player2 = Bukkit.getOnlinePlayers()[new Random().nextInt(Bukkit.getOnlinePlayers().size())]; 这是代码:
@EventHandler
public void onRecord(final PlayerInteractEvent playerInteractEvent) {
final Player player = playerInteractEvent.getPlayer();
if (LionStaff.mod.contains(player.getName()) && player.getItemInHand().getType() == Material.RECORD_3 && playerInteractEvent.getAction().toString().contains("RIGHT")) {
final Player player2 = Bukkit.getOnlinePlayers()[new Random().nextInt(Bukkit.getOnlinePlayers().size())];
if (Bukkit.getOnlinePlayers().size() == 1) {
player.sendMessage(ChatColor.RED + "There are not enough players to use this.");
}
if (Bukkit.getOnlinePlayers().size() > 1) {
if (player != player2) {
player.teleport((Entity)player2);
player.sendMessage(ChatColor.YELLOW + "You were teleported randomly to " + ChatColor.GOLD + player2.getName() + ChatColor.YELLOW + ".");
}
if (player == player2) {
player.sendMessage(ChatColor.RED + "Oops, it just randomly picked up you, please try again.");
}
}
}
}
【问题讨论】:
-
getOnlinePlayers不返回数组,因此您无法访问带有方括号的元素。如果是列表,可以使用getOnlinePlayers.get(idx)(docs)。如果它不是一个列表(正如错误似乎暗示的那样),您可以使用结果创建一个新列表:new ArrayList<>(Bukkit.getOnlinePlayers()).get(...) -
如果对您有帮助,请将我的回复标记为答案。
标签: java