Skocz do zawartości
  • 0

Problem z odczytywaniem hash mapy


Ever
 Udostępnij

Pytanie

Siema, zrobiłem kod na zapisywanie/odczytywanie hashmapy z configu. 

Wszystko działa gdy tylko jedna osoba jest w configu

Problem zaczyna sie gdy sa np. 2osoby. Wtedy nie dziala plugin wgl

	public void loadLvL() {
        lvl = new HashMap<String, Integer>();
        if(plugin.getConfig().getConfigurationSection("lvl") != null ) {
            Set<String> set = plugin.getConfig().getConfigurationSection("lvl").getKeys(true);
            for(String credit : set) {
                int value = plugin.getConfig().getConfigurationSection("lvl").getInt(credit);
                lvl.put(credit, value);
                set.clear();
            }
        }
    }
    public void saveLvL() {
        for(String level : lvl.keySet()) {
            int value = lvl.get(level);
            plugin.getConfig().set("lvl." + level, value);
        }
        plugin.saveConfig();
    }
}

I przy onEnable loadLvl, a przy onDisable saveLvL

Edytowane przez Ever
Odnośnik do komentarza
Udostępnij na innych stronach

4 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

po co ten set.clear() ?

a tak to:

    public void saveLvL() {
        for(String level : lvl.keySet()) {
            int value = lvl.get(level);
            plugin.getConfig().set("lvl." + level, value);
        }
        plugin.saveConfig();
    }

mozesz zamienic na

public void saveLvl() {
  lvl.forEach((uuid, level) -> config.set("lvl." + uuid, level));
  plugin.saveConfig();
}

chociaz w sumie nw czym jest credit i ogolnie ten kod wyglada jakos brzydko=(

juz nawet nie wspomne o tym ze takie zapisywanie do yaml jest bez sensu, tymabrdziej ze czym plik bedzie wiekszy tym dluzej bedzie sie go ladowalo itd. sam sie o tym kiedys przekonalem jak takie coinsy itd trzymalem w jednym pliku, plik byl ogromny i ladowal sie wiecej niz 10 minut, a poand 100 graczy czekało na wejscie na serwer 

przeciez teraz jest tyle fajnych baz danych=(

Edytowane przez yooniks
Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
1 minutę temu, yooniks napisał:

po co ten set.clear() ?

a tak to:

    public void saveLvL() {
        for(String level : lvl.keySet()) {
            int value = lvl.get(level);
            plugin.getConfig().set("lvl." + level, value);
        }
        plugin.saveConfig();
    }

mozesz zamienic na

public void saveLvl() {
  lvl.forEach((uuid, level) -> config.set("lvl." + uuid, level));
  plugin.saveConfig();
}

chociaz w sumie nw czym jest credit i ogolnie ten kod wyglada jakos brzydko=(

zaraz zobacze, a kod wiem ze jakis super nie jest, ale to tylko odlamek ?

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...