1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

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

Метки:
  1. Автор темы
    Invokers

    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);
            }
    
    
    
        }
     
  2. Todorov26

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

    Баллы:
    76
    Имя в Minecraft:
    Todorov26
    Не знаю насчёт одинаковости, но ты все итерации по твоему Set<String> передаёшь в свою функцию размер сета. Который всегда один и тот же.

    Возможно, ты хотел передавать индекс строки, однако, тогда ты должен использовать не Set.size() а Set.indexOf(), правда не уверен в наличии данного метода (Не проверял)
     
  3. Автор темы
    Invokers

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

    Баллы:
    6
    нету на Java 8
     
  4. Автор темы
    Invokers

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

    Баллы:
    6
    Вообще создаётся N кол-во предметов (зависит от кол-во арен) Но Дисплейное имя предметов это название 1 арены и статус тот же, По другому не работает
     

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