首页 > 解决方案 > 两个变量相同,甚至应该不同的原因是什么?

问题描述

我正在尝试在 minecraft 中编写插件(开箱器)。我有问题,因为只要变量 current_item 和变量 next 相同,甚至应该不同。

Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST, "Losowanie");

ItemStack rnditem = new ItemStack(Material.STICK);

ItemStack current_item = new ItemStack(Material.APPLE);
ItemStack next = new ItemStack(Material.STICK);

for(int i = 0; i < 15; i++) {

    Random rand = new Random();

    switch(rand.nextInt(2)) {
        case 0:
            rnditem.setType(Material.DIAMOND);
            break;
        case 1:
            rnditem.setType(Material.GOLDEN_APPLE);
            break;
    }


    inv.clear();

    current_item = next;
    next = rnditem;

    inv.setItem(13, current_item);
    inv.setItem(14, next);

    p.updateInventory();

    Thread.sleep(i*100);
}

标签: javaminecraftbukkit

解决方案


不同的变量被用来保存一个移动的参考,但rnditem从未设置为一个新的参考

switch(rand.nextInt(2)) {
    case 0:
        rnditem.setType(Material.DIAMOND);
        break;
    case 1:
        rnditem.setType(Material.GOLDEN_APPLE);
        break;
}

应该改为

switch(rand.nextInt(2)) {
    case 0:
        rnditem = new ItemStack(Material.DIAMOND);
        break;
    case 1:
        rnditem = new ItemStack(Material.GOLDEN_APPLE);
        break;
}

推荐阅读