【问题标题】:Error ArrayIndexOutOfBoundsException Java/Bukkit错误 ArrayIndexOutOfBoundsException Java/Bukkit
【发布时间】:2020-06-04 02:29:32
【问题描述】:

我的服务器控制台发回这个错误:java.lang.ArrayIndexOutOfBoundsException 这是我的代码的最简单版本:

int[] test = new int[] {0,1,2,3,4,5,6,7,8,9,14,15,17,18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45};
for (int value : test) {
    System.out.println(value, obj);
}

这是我的 bukkit/spigot dev 的完整代码:

    //In a event
    voidObj(new int[] {0,1,2,3,4,5,6,7,8,9,14,15,17,18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45}, parcoursConfigGUI);

    //Itemconstructor
    private void voidObj(int[] position, Inventory inventory) {
        ItemStack obj = new ItemStack(Material.BLACK_STAINED_GLASS_PANE, 1);
        ItemMeta meta = obj.getItemMeta();
        meta.setDisplayName(null);
        meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
        obj.setItemMeta(meta);

        for (int value : position) {
            inventory.setItem(value, obj);
        }
    }

【问题讨论】:

  • 库存是多少?
  • @Bradley 这是 bukkit API 中的一个对象
  • 堆栈跟踪表明问题发生在哪一行?

标签: java minecraft bukkit


【解决方案1】:

库存总是有一个大小,它是 9 的倍数。您从 0 到 45 进行迭代,这总共有 46 个插槽。 46 不是 9 的倍数。我的假设是你想从 0-44 迭代,所以从 int 数组中删除 45:

new int[] {0,1,2,3,4,5,6,7,8,9,14,15,17,18,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44}

你应该考虑使用 for 循环来完成同样的事情:

for (int value = 0; i<inventory.getSize();value++){
    inventory.setItem(value, obj);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 2014-04-16
    • 2014-09-04
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多