zählte ich eine Punktzahl in einer HashMap für jeden Spieler:1.11 Java Spigot/Bukkit Programmierung - Speichern/Laden HashMap in config.yml
public Map<String, Integer> PScore = new HashMap<String, Integer>();
Jetzt möchte ich die HashMap und in einer Config speichern und laden .yml. Die Konfiguration ist vorhanden und wird für andere Varibales verwendet.
Dies waren meine viele Versuche, das Problem zu lösen:
public void saveHash()
{
for (String string : PScore.keySet())
{
this.getConfig().set("score.pscore", string);
this.saveConfig();
}
}
public void loadHash()
{
}
Aber in der Config erhalte ich nur:
score:
pscore: JackerNils
Die Ladefunktion ist leer, so geschieht nichts natürlich beim Laden. Die speichern und Ladefunktionen werden durch die onEnable() und der EinschSperre()
// EDIT gesteuert:
public Map<String, Integer> PScore = new HashMap<String, Integer>();
public void saveHash()
{
List<String> s = this.getConfig().getStringList("PScore");
for(String str : PScore.keySet())
{
s.add(str + ":" + PScore.get(str));
}
this.getConfig().set("PScore", s);
this.saveConfig();
}
public void loadHash()
{
List<String> s = this.getConfig().getStringList("PScore");
for(String str: s)
{
String words[] = str.split(":");
PScore.put(words[0], Integer.parseInt(words[1]));
}
}
Diese Methode funktioniert gut jetzt, aber schauen, was die Config tut:
PScore:
- JackerNils:5
- JackerNils:19
Sie sehen also? Anstatt es zu überschreiben, wiederholt es sich.
Werfen Sie einen Blick auf meine Bearbeitung! In diesem Beispiel funktioniert alles ganz gut, nur das Speichern ist ein bisschen falsch. – JackerNils
Versuchen Sie, eine neue Arraylist zu erstellen, anstatt getStringList zu verwenden. Jetzt erhalten Sie die Liste und fügen alle Werte in der Liste erneut zur Liste hinzu, was zu Duplikaten führt. Versuchen Sie 'List s = neue ArrayList ();' –
Squiddie
Joop, der für mich arbeitete! ;) Danke fürs Helfen! – JackerNils