Войти или зарегистрироваться

Помогите HashMap и Gui Menu

Invokers

Новичок
Пользователь
Баллы
6
Создаю список арен в менюшке, получаю из хэш карты ключи, дальше в отдельной "функций"
Создаю предмет и проверку на статус игры, но допустим всего 3 арены а в меню создаются 3 предмета и все параметры от последней

Код:
public class ArenaListGUI implements Listener {

    static Inventory inv = Bukkit.getServer().createInventory(null, 27, "Список Арен");

    public static void ArenaListgui(Player p) {
        Set<String> keys = Utils.Arena.keySet();
        for (String names : keys) {
                addListArena(Utils.Arena.get(names).getName(), Utils.Arena.get(names).getStatus(), keys.size());
        }
        p.openInventory(inv);
    }

    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();
        ItemStack clicked = event.getCurrentItem();
        Inventory inventory = event.getInventory();
        if (inventory.getName().equals(inv.getName())) {
            event.setCancelled(true);
        }
    }


    public static void addListArena(String name, GameStatus status, int index) {

        int color = 0;
        if (status.name() == GameStatus.ACTIVE.name()){
            color = 5;
        }
        if (status.name() == GameStatus.GAME.name()) {
            color = 4;
        }
        if (status.name() == GameStatus.END.name()) {
            color = 14;
        }
        for (int x = 0; x < index; x++) {
                ItemStack Arenas = new ItemStack(Material.WOOL, 1, (short)color);
                ItemMeta Arenas_meta = Arenas.getItemMeta();

                Arenas_meta.setDisplayName(name);
                Arenas.setItemMeta(Arenas_meta);

                inv.setItem(x, Arenas);
        }



    }
 
Не знаю насчёт одинаковости, но ты все итерации по твоему Set<String> передаёшь в свою функцию размер сета. Который всегда один и тот же.

Возможно, ты хотел передавать индекс строки, однако, тогда ты должен использовать не Set.size() а Set.indexOf(), правда не уверен в наличии данного метода (Не проверял)
 
Вообще создаётся N кол-во предметов (зависит от кол-во арен) Но Дисплейное имя предметов это название 1 арены и статус тот же, По другому не работает
 
Назад
Верх