Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Правильное обновление инвентаря

Метки:
Теги Теги
java

Cristalix

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Test
Цель: обновлять инвентарь через определенное количество тиков.

Написал вот такой бред.

Код:
    private Integer page = 1;
    private BukkitTask menu;

public void Menu(Player p) {
        if (menu != null) {
            menu.cancel();
        }
        Inventory inv = Bukkit.createInventory(null, 54, "Инвентарь");
        menu = Bukkit.getServer().getScheduler().runTaskTimer(this, new BukkitRunnable() {
            @Override
            public void run() {
                switch (page) {
                    case 1:
                        inv.clear();
                        page++;
                        page_1(p, inv);
                        break;
                    case 2:
                        inv.clear();
                        page = 1;
                        page_2(p, inv);
                        break;
                }
            }
        }, 0, 20L);
        p.openInventory(inv);
    }

private void page_1(Player p, Inventory inv) {//page_2 аналогичный
        inv.setItem(20, //Тут предмет);
        inv.setItem(22, //Тут предмет);
        inv.setItem(24, //Тут предмет);
    }

Как правильно обновлять каждому игроку открытый инвентарь?
 
Код:
private Integer page = 1;
private BukkitTask menu;

public void Menu(Player p) {
if (menu != null) {
menu.cancel();
}
Inventory inv = Bukkit.createInventory(null, 54, "Инвентарь");
menu = Bukkit.getServer().getScheduler().runTaskTimer(this, new BukkitRunnable() {
@Override
public void run() {
switch (page) {
case 1:
inv.clear();
page++;
page_1(p, inv);
break;
case 2:
inv.clear();
page = 1;
page_2(p, inv);
break;
}
}
}, 0, 20L);
p.openInventory(inv);
}

private void page_1(Player p, Inventory inv) {//page_2 аналогичный
inv.setItem(20, //Тут предмет);
inv.setItem(22, //Тут предмет);
inv.setItem(24, //Тут предмет);
}
Что эта штуковина должна делать? Инвентарь с автоматической промоткой?
 
Думаю стоит заранее создать инвентарь еще во время запуска плагина. Там же запустить асинс ранейбл и уже в нем обновлять созданный инв. Если это конечно не динамически создаваемый инв.
 
"Обновлять инвентарь"

В page_2 совсем другие предметы которые он должен установить
Как таковой создавать несколько методов для страниц не разумно, есть альтернативный способ
 
"Обновлять инвентарь"

В page_2 совсем другие предметы которые он должен установить
Тебе выше предложили неплохой вариант. Добавить все ItemStack[] (есть метод для получение с инвентаря, или можно самому ставить предметы в него напрямую) в список, получать по одному и обновлять игроку инвентарь через BukkitRunnable.
 

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

Назад
Верх