Ich kapier irgendwie nicht was ich falsch gemacht hab.
Das Problem: Ich habe eine Hashmap, während Minecraft läuft wird dort abundzu was rein geladen und ab und zu raus. Bei onDisable wird der INhalt in eine MexDB gespeichert, bei onEnable rausgeladen. Und da ist ein komisches Problem: mit /reload funktionniert alles super, Inhalt wird gespeichert und geladen. Wenn in der MexDB aber schon etwas gespeichert ist, und ich den Server starte, wird 1.Nichts rausgeladen, 2Beim disablen kommt eine NPE.
onDisable
Code:
Iterator<Player> iter =protector.keySet().iterator();
while(iter.hasNext()){
Player p = iter.next();
speichern(p.getName());
}
speichern(String):
Code:
public void speichern(String name){
Entry protector = new Entry(name);
protector.addValue("Amount", String.valueOf(this.protector.get(this.getServer().getPlayer(name))));
protectoren.addEntry(protector);
protectoren.push();
}
onEnable:
Code:
Set<String> dc = gName();
for(String name : dc) { protector.put(this.getServer().getPlayer(name), getPro(name));}
gName:
Code:
public Set<String> gName(){
Set<String> indices = protectoren.getIndices();
return indices;
}
getPro
Code:
public Integer getPro(String name) {
Integer pro = new Integer(protectoren.getInt(name, "Amount"));
return pro;
}
Irgendwie will mir nicht in den Kopf kommen was falsch ist ?(
Achja, was noch gesagt werden muss: Beim joinen wird die HashMap gefüllt, also wenn ich mich nac hdem reload relogge, kommt die NPE nicht - aber eben dass ist es ja: Statt von der MexDB methode gefüllt zu werden, muss man erst die andere "Fllmethode" anwenden.