Предмет в GUI-слотах

NukerFall

Активный участник
Пользователь
Баллы
76
Каким способом можно за минимальное количество кода вставить во всю строку GUI-инвентаря определённый предмет? Мой пример:
------------------
Инвентарь с 27 слотами.
------------------
for (int i = 0; i < 10; i++) {
inv.setItem(i, предмет);
}
for (int j = 17; j < 27; j++) {
inv.setItem(j, предмет);
}
В итоге получаются две заполненные предметом строки, а вторая строка слева и справа закрыта этим же предметом.
 
Каким способом можно за минимальное количество кода вставить во всю строку GUI-инвентаря определённый предмет? Мой пример:
------------------
Инвентарь с 27 слотами.
------------------
for (int i = 0; i < 10; i++) {
inv.setItem(i, предмет);
}
for (int j = 17; j < 27; j++) {
inv.setItem(j, предмет);
}
В итоге получаются две заполненные предметом строки, а вторая строка слева и справа закрыта этим же предметом.
0-8(первая строка)
9-17(вторая строка)
18-26(третья строка)
Далее в принципе понятно
 
0-8(первая строка)
9-17(вторая строка)
18-26(третья строка)
Далее в принципе понятно
Это я понимаю. Можно ли за 1 строку кода setItem поставить предмет сразу в несколько позиций? Сам по себе setItem принимает только одно значение Int, а мне интересно, есть ли способ поставить его например сразу в клетку 6 и в клетку 2.
 
Это я понимаю. Можно ли за 1 строку кода setItem поставить предмет сразу в несколько позиций? Сам по себе setItem принимает только одно значение Int, а мне интересно, есть ли способ поставить его например сразу в клетку 6 и в клетку 2.
Код:
    public Menu(List<ItemStack> stack, String title) {
        this.inventory = Bukkit.createInventory(this, 9 * (int) Math.ceil((double) stack.size() / 9), title);
        for (int i = 0; i < stack.size(); i++) {
            inventory.setItem(i, stack.get(i));
        }
    }
С тебя только конфиг стаков остается.
 
Код:
    public Menu(List<ItemStack> stack, String title) {
        this.inventory = Bukkit.createInventory(this, 9 * (int) Math.ceil((double) stack.size() / 9), title);
        for (int i = 0; i < stack.size(); i++) {
            inventory.setItem(i, stack.get(i));
        }
    }
С тебя только конфиг стаков остается.
Спасибо, попробую. Заработает, отпишу)
 
Что-то я не совсем разобрался. Да и код, как я понимаю, из головы написан. Вот мой класс:
public void CreateInventory(Player p) {
Inventory inv = plugin.getServer().createInventory(null, 27, "Выберите место отправки");
p.openInventory(inv);
ItemStack Barrier = new ItemStack(Material.BARRIER, 1);
ItemStack Green = new ItemStack(Material.GRASS, 1);
ItemStack Snow = new ItemStack(Material.SNOW_BLOCK, 1);
ItemStack Mycel = new ItemStack(Material.MYCEL, 1);
ItemStack Sand = new ItemStack(Material.SAND, 1);
inv.setItem(10, Green);
inv.setItem(12, Snow);
inv.setItem(14, Sand);
inv.setItem(16, Mycel);
for (int i = 0; i < 10; i++) {
inv.setItem(i, Barrier);
}
for (int j = 17; j < 27; j++) {
inv.setItem(j, Barrier);
}
}
@EventHandler
public void onClick(NPCRightClickEvent e) {
if (e.getClicker() instanceof Player) {
CreateInventory(e.getClicker());
}
}
Генерирует вот это:
dDbn6py59MQ.jpg
 
Назад
Верх