【问题标题】:Array type expected; found 'java.util.Collection<...>'预期的数组类型;找到'java.util.Collection<...>'
【发布时间】: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&lt;&gt;(Bukkit.getOnlinePlayers()).get(...)
  • 如果对您有帮助,请将我的回复标记为答案。

标签: java


【解决方案1】:
Bukkit.getOnlinePlayers()

返回集合https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Bukkit.html#getOnlinePlayers()

然后您可以对集合执行任何您想要的操作。

【讨论】:

  • " for (Player player2 : Bukkit.getOnlinePlayers()) { " 喜欢这个
猜你喜欢
  • 2021-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2014-11-20
  • 2012-03-25
  • 2020-10-13
相关资源
最近更新 更多