Как мне сохранить переменную переменной в Bukkit? - PullRequest
0 голосов
/ 19 февраля 2020

, так что я пытался создать плагин для обнаружения альтов в Bukkit, я довольно плохо знаком с API и не написал ничего хорошего, но я не уверен, как заставить его работать, я Я пробовал хэш-карты, и я пробовал и другие вещи, но я до сих пор не совсем понимаю, как это сделать, в основном я пытаюсь получить IP-адрес любого присоединяющегося, которого еще нет в конфигурации, и поместить его IP там включая его IP, а затем просто проверьте, присоединяется ли его alt, увидев, имеет ли он тот же ip, что и сохраненный, и добавьте его в список имен пользователей, связанных с IP

, который я думал в начале я мог бы сделать что-то вроде этого:

String ip = event.getAddress().toString().replaceAll("/", "");
plugin.getConfig().set("IPs.", ip);
plugin.saveConfig();
if(plugin.getConfig().getString("IPs.") == s) {
    if(plugin.getConfig().get("IPs." + ip) == player.getName()) {
        plugin.getConfig().set("IPs." + s, player.getName());
        plugin.saveConfig();
    }
}

но я понял, что не могу, поэтому я подумал о попытке создать список строк и добавить список IP-адресов в конфигурации, а затем я понял, Мне нужно было бы сделать странный список списков, даже если я технически не могу сохранить ip кого-то и проверить список имен, которые у него есть, так как я не могу проверить, есть ли список в имени его IP

Я действительно запутался здесь, хотел бы помочь! Спасибо!

РЕДАКТИРОВАТЬ 1 Мой код HashMap, который я использовал:

 // s is the ip string
    HashMap<String,String[]> map = new HashMap<String,String[]>();
                String[] names = new String[10];
                names[0] = player.getName();
                map.put(s, names);
                saveHashMap(map);

saveHashMap:

public void saveHashMap(HashMap<String, String[]> hm) {

    for (String key : hm.keySet()) {
        plugin.getConfig().set("IPs."+key, hm.get(key));
        }
            plugin.saveConfig();
    }

}

Чтобы проверить, я попробовал это:

    HashMap<String,String[]> test = loadHashMap();
    String[] a = test.get(s);

    System.out.println(a[0]);

loadHashMap:

    public HashMap<String, String[]> loadHashMap() {
    HashMap<String, String[]> hm = new HashMap<String,String[]>();
    for (String key : plugin.getConfig().getConfigurationSection("IPs").getKeys(false)) {
        hm.put(key, (String[]) plugin.getConfig().get("IPs."+key));
        }

    return hm;
    }

1 Ответ

0 голосов
/ 19 февраля 2020

Согласно геймпедии запись вы должны сохранить HashMaps следующим образом:

getConfig().createSection(String path, Map< String, Object > map)

и получить их следующим образом:

getConfig().getConfigurationSection("path.to.map").getValues(false)

Затем вам нужно разыграть карту с типами, которые вы хотите.

...