Хостинг серверов Minecraft playvds.com
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем NukerFall, 3 дек 2018.

  1. Автор темы
    NukerFall

    NukerFall Новичок Пользователь

    Баллы:
    11
    Каким способом можно за минимальное количество кода вставить во всю строку GUI-инвентаря определённый предмет? Мой пример:
    ------------------
    Инвентарь с 27 слотами.
    ------------------
    for (int i = 0; i < 10; i++) {
    inv.setItem(i, предмет);
    }
    for (int j = 17; j < 27; j++) {
    inv.setItem(j, предмет);
    }
    В итоге получаются две заполненные предметом строки, а вторая строка слева и справа закрыта этим же предметом.
     
  2. Mr Hosting
  3. SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    0-8(первая строка)
    9-17(вторая строка)
    18-26(третья строка)
    Далее в принципе понятно
     
  4. Автор темы
    NukerFall

    NukerFall Новичок Пользователь

    Баллы:
    11
    Это я понимаю. Можно ли за 1 строку кода setItem поставить предмет сразу в несколько позиций? Сам по себе setItem принимает только одно значение Int, а мне интересно, есть ли способ поставить его например сразу в клетку 6 и в клетку 2.
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Код:
        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));
            }
        }
    С тебя только конфиг стаков остается.
     
  6. Автор темы
    NukerFall

    NukerFall Новичок Пользователь

    Баллы:
    11
    Спасибо, попробую. Заработает, отпишу)
     
  7. Автор темы
    NukerFall

    NukerFall Новичок Пользователь

    Баллы:
    11
    Что-то я не совсем разобрался. Да и код, как я понимаю, из головы написан. Вот мой класс:
    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());
    }
    }
    Генерирует вот это:
    [​IMG]
     
  8. AbstractCoder

    AbstractCoder Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    AbstractCoder
    жесть, щас бы для деления с округлением вверх применять Math#ceil
     
  9. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Почему и нет?
     
  10. Sonicxd2

    Sonicxd2 Активный участник Пользователь

    Баллы:
    76
    И в правду, лучше заменить
    На это
     
  11. AbstractCoder

    AbstractCoder Активный участник Пользователь

    Баллы:
    46
    Имя в Minecraft:
    AbstractCoder
    Орууу.
    (a + b - 1) / b
     
  12. Sonicxd2

    Sonicxd2 Активный участник Пользователь

    Баллы:
    76
    Ой всо.
     

Поделиться этой страницей