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

Помогите Приватный Arraylist

Тема в разделе "Разработка плагинов для новичков", создана пользователем nt34t34, 10 фев 2023.

Статус темы:
Закрыта.
  1. Автор темы
    nt34t34

    nt34t34 Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Wap
    Здравствуйте, форумчане. У меня есть панель (для ввода пинкода) состоящий из кнопок, я на каждую кнопку добавляю в Arraylist число этой кнопки
    Код:
    if (clicked.getX() == 116 && clicked.getY() == 47 && clicked.getZ() == 212) { // цифра 0
                        if (currentTimeMillis() - lastClickTime > 300) {
                            lastClickTime = currentTimeMillis();
                            Player p = e.getPlayer();
                            code.add("0");
                            String result = code.toString()
                                    .replace("[", "")
                                    .replace("]", "")
                                    .replace(",", "")
                                    .replace(" ", "");
                            p.sendMessage(ChatColor.GOLD + "Код: " + result);
                        }
                    }
    Вроде этого, и вот проблема, любой игрок, который кликнет может добавлять в лист значение, а мне нужно, чтобы игрок добавлял значение для своего Arraylist после чего по нажатию кнопки "Принять" его Arraylist сравнивался с нужным кодом и происходили нужные мне действия. Кароче приватный Arraylist
     
  2. 0xLairon1

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

    Баллы:
    76
    Имя в Minecraft:
    0xLairon1
    new HashMap<UUID, List<String>>();
     
  3. Автор темы
    nt34t34

    nt34t34 Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Wap
    Изменил. Вместо code.add("number); написал
    code.put(p.getUniqueId(), Collections.singletonList("number")); (идея помогла), но теперь в чат ничего не выводится
     
  4. 0xLairon1

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

    Баллы:
    76
    Имя в Minecraft:
    0xLairon1
    Зачем тебе singletonList? Используй ArrayList свой. При вводе команды проверяй, если игрок уже есть в HashMap тогда доставай от туда список и изменяй, если его там нет то создай новый список и добавляй его в HashMap
     
  5. Автор темы
    nt34t34

    nt34t34 Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Wap
    Так? Я просто пока что не понимаю что я делаю, но что-то делаю
    Код:
    Set<UUID> key = hashMap.keySet();
    if(hashMap.containsKey(p.getUniqueId())){
         code.add("0");
         String result = code.toString()
                     .replace("[", "")
                     .replace("]", "")
                     .replace(",", "")
                     .replace(" ", "");
         p.sendMessage(ChatColor.GOLD + "Код: " + result);
    }
    Код:
    public HashMap<UUID, List<String>> hashMap = new HashMap<>();;
     
  6. MrAlexeiMK

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

    Баллы:
    66
    Если не думать, то:
    Код:
    public class ... {
       private Map<UUID, List<String>> codeByPlayer = new HashMap<>();
    
       @EventHandler
       ...
       Player p = e.getPlayer();
       if(codeByPlayer.get(p.getUniqueId()) == null) {
           codeByPlayer.put(p.getUniqueId(), new ArrayList<>());
       }
       if (clicked.getX() == 116 && clicked.getY() == 47 && clicked.getZ() == 212)  {
           if (currentTimeMillis() - lastClickTime > 300) {
               lastClickTime = currentTimeMillis();
               Player p = e.getPlayer();
               codeByPlayer.get(p.getUniqueId()).add("0");
               String result = String.join("", codeByPlayer.get(p.getUniqueId()));
               p.sendMessage(ChatColor.GOLD + "Код: " + result);
           }
       }
       ...
    }
    
    И больше не делайте так грязно конкатенацию строк..
     
  7. Автор темы
    nt34t34

    nt34t34 Участник Пользователь

    Баллы:
    31
    Имя в Minecraft:
    Wap
    хорошо, учту. Большое тебе спасибо!
     
Статус темы:
Закрыта.

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