Помогите Добавление строки в конфиг

  • Автор темы Автор темы Sergeo
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Sergeo

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Solomka
Два раза добавляется строка с айпи адресом, а следовательно он не может адекватно проверить соответствует ли изначальный айпи с нынешним

Код
Код:
    @EventHandler
    public void joinPlayer(PlayerJoinEvent e) {

        Player p = e.getPlayer();

        UUID id = p.getUniqueId();

        String address = p.getAddress().getHostString();

        List<String> firstIp = getStringList("WaitConfirm." + p.getName() + ".firstIP");
        List<String> twoIp = getStringList("WaitConfirm." + p.getName() + ".twoIP");

        if (!p.hasPlayedBefore()) {
            firstIp.add(address);
            twoIp.add(null);
            set("WaitConfirm." + p.getName() + ".firstIP", firstIp);
            try {
                save();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
            reload();
            send(p, translateAlternateColorCodes('&', "&6&l[WARNING] &fYour IP address was &asuccessfully&f added to the &csecurity system"));
            return;
        }

        if (!firstIp.contains(address)) {
            firstIp.add(address);
            set("WaitConfirm." + p.getName() + ".firstIP", firstIp);
            try {
                save();
                reload();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }

        if(!twoIp.contains(address)) {
            twoIp.add(address);
            set("WaitConfirm." + p.getName() + ".twoIP", twoIp);
            try {
                save();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }

        new BukkitRunnable(){

            @Override
            public void run() {
                if (!firstIp.toString().equals(twoIp.toString())) {
                    if (locked.contains(id))
                        cancel();
                    locked.add(id);
                    for(Player pl : Bukkit.getOnlinePlayers()){
                        if(!pl.isOp()) continue;
                        send(pl, translateAlternateColorCodes('&', "&6&l[WARNING] &fThe player has " + p.getName() +" the IP addresses do not match! IP register: " + getString("WaitConfirm." + p.getName() + ".firstIP")+"," + "IP join: " + getString("WaitConfirm." + p.getName() + ".twoIP")));
                    }
                    cancel();
                }
                send(p, translateAlternateColorCodes('&', "&a&l[SUCCESS] &fYour &cIP addresses &fhave successfully matched! Have a nice game"));
                locked.remove(id);
                cancel();
            }
        }.runTaskLaterAsynchronously(Main.getInstance(), 20L);
    }

Конфиг после измененией:
Код:
WaitConfirm:
  Solomka543:
    firstIP:
    - 127.0.0.1
    twoIP:
    - 127.0.0.2
    - 127.0.0.1

первый айпи адрес - это тот, который был изменен вручную, а второй - это добавляется автоматически сразу после перезахода на сервер.

Какую проверку сделать, чтобы он оставлял только один айпи адрес и уже их сравнивал между собой? Помогите, люди добрые, пожалуйста
 
а ты их списком не записывай и сам поймешь.
 
config.getString() / config.setString()
Как-то так?
Код:
        String firstIp = getString("WaitConfirm." + p.getName() + ".firstIP");
        String twoIp = getString("WaitConfirm." + p.getName() + ".twoIP");

        if (!p.hasPlayedBefore()) {
           set("WaitConfirm." + p.getName() + ".firstIP", address);
            set("WaitConfirm." + p.getName() + ".twoIP", null);
            set("WaitConfirm." + p.getName() + ".firstIP", firstIp);
            try {
                save();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
            reload();
            send(p, translateAlternateColorCodes('&', "&6&l[WARNING] &fYour IP address was &asuccessfully&f added to the &csecurity system"));
            return;
        }

        if (!firstIp.contains(address)) {
            set("WaitConfirm." + p.getName() + ".firstIP", address);
            try {
                save();
                reload();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }

        if(!twoIp.contains(address)) {
            set("WaitConfirm." + p.getName() + ".twoIP", address);
            try {
                save();
            } catch (IOException ioException) {
                ioException.printStackTrace();
            }
        }
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх