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

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

Метки:
Теги Теги
arraylist игрок пинкод
Статус
Закрыто для дальнейших ответов.

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
 
Зачем тебе singletonList? Используй ArrayList свой. При вводе команды проверяй, если игрок уже есть в HashMap тогда доставай от туда список и изменяй, если его там нет то создай новый список и добавляй его в HashMap
 
Зачем тебе singletonList? Используй ArrayList свой. При вводе команды проверяй, если игрок уже есть в HashMap тогда доставай от туда список и изменяй, если его там нет то создай новый список и добавляй его в HashMap
Так? Я просто пока что не понимаю что я делаю, но что-то делаю
Код:
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<>();;
 
Если не думать, то:
Код:
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);
       }
   }
   ...
}

И больше не делайте так грязно конкатенацию строк..
 
Если не думать, то:
Код:
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);
       }
   }
   ...
}

И больше не делайте так грязно конкатенацию строк..
хорошо, учту. Большое тебе спасибо!
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх