• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

List - YML Problem

Galliar12

Kuhfänger
Registriert
16 Juli 2011
Beiträge
85
Diamanten
0
Minecraft
Galliar12
Hey Leute, habe ein kleines Problem:
Wenn ich einen Command ausführe welcher die Location in eine LinkedList und in eine .yml Datei speichert.
Das Problem: Er überschreibt alle alten Koordinaten mit den neuen + er erstellt einen neuen Eintrag mit den neuen Koords.

setSpawner:
Code:
   private boolean setSpawner(Player p) {
        World w = p.getWorld();
        double x = p.getLocation().getBlockX();
        double y = p.getLocation().getBlockY();
        double z = p.getLocation().getBlockZ();
        Location loc = new Location(w, x, y, z);
        this.plugin.Spawnerlist.add(loc);
         this.plugin.cfgspawner.set("Spawner", null);
        for (int i = 0; i < this.plugin.Spawnerlist.size(); i++) {
            String str = "Spawner." + i;
            this.plugin.cfgspawner.set(str + ".world", loc.getWorld().getName());
            this.plugin.cfgspawner.set(str + ".x", loc.getBlockX());
            this.plugin.cfgspawner.set(str + ".y", loc.getBlockY());
            this.plugin.cfgspawner.set(str + ".z", loc.getBlockZ());
            try {
                this.plugin.cfgspawner.save(this.plugin.spawner);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return false;
    }

Hoffe irg.jmd könnte mich über den Fehler aufklären :)

Grüße Galliar
 
C

Chrisliebaer

Guest
Code:
this.plugin.cfgspawner.save(this.plugin.spawner);
Das ist eine extrem teuere Operation, da sie direkt auf die Festplatte geht. Du solltest es vermeiden, zu oft auf die Festplatte zu scheiben. Auf keinen Fall solltest du daher IN der Schleife immer wieder die Config speichern.

Zu deiner eigentlichen Frage, kann ich allerdings nichts sagen. Poste doch mal bitte, wie die Config vorher und nacher aussieht. Außerdem wäre es schön, wenn du in die Schleife mal Logausgaben machen könntest, mit den Werten und wie sie gesetzt werden und diese dann hier posten.
 
G

games6471

Guest
Irgendwie macht die Schleife für mich nicht wirklich Sinn. Deine momentane Schleife holt sich die Anzahl der Einträge inder LinkedList und schreibt danach in die Datei jedes Mal die Koordinaten, jedoch immer wieder die selben. Schließlich hölt er sich auch gar nicht die anderen Daten aus der Liste, er holt sich jediglich die momentane Größe der Liste.

Hier noch ein paar Kommentare
Code:
    private boolean setSpawner(Player p) {
        final World w = p.getWorld();

        final double x = p.getLocation().getBlockX();
        final double y = p.getLocation().getBlockY();
        final double z = p.getLocation().getBlockZ();

        final Location loc = new Location(w, x, y, z); //Wieso erstellst du dir noch ein Location-Objekt, wenn du du bereits eins hast?

        this.plugin.Spawnerlist.add(loc);
        this.plugin.cfgspawner.set("Spawner", null);

        for (int i = 0; i < this.plugin.Spawnerlist.size(); i++) {
            final String str = "Spawner." + i;


            this.plugin.cfgspawner.set(str + ".world", loc.getWorld().getName());

            this.plugin.cfgspawner.set(str + ".x", loc.getBlockX()); //Hier kannst du auch auf die vorher gesicherten Variablen zugreifen.
            this.plugin.cfgspawner.set(str + ".y", loc.getBlockY()); //Schließlich wurde an diesen nichts verändert.
            this.plugin.cfgspawner.set(str + ".z", loc.getBlockZ());
        }

        try {
            this.plugin.cfgspawner.save(this.plugin.spawner);
        } catch (IOException ex) {
            Logger.getLogger(this.plugin.getName()).log(Level.WARNING
                    , "Error while saving the spawners file. Please contact the plugin author of this plugin with the following error"
                    , ex);
        }

        return false;
    }
 
Zuletzt bearbeitet von einem Moderator:

Galliar12

Kuhfänger
Registriert
16 Juli 2011
Beiträge
85
Diamanten
0
Minecraft
Galliar12
Irgendwie macht die Schleife für mich nicht wirklich Sinn. Deine momentane Schleife holt sich die Anzahl der Einträge inder LinkedList und schreibt danach in die Datei jedes Mal die Koordinaten, jedoch immer wieder die selben. Schließlich hölt er sich auch gar nicht die anderen Daten aus der Liste, er holt sich jediglich die momentane Größe der Liste.

Hier noch ein paar Kommentare
Code:
    private boolean setSpawner(Player p) {
        final World w = p.getWorld();

        final double x = p.getLocation().getBlockX();
        final double y = p.getLocation().getBlockY();
        final double z = p.getLocation().getBlockZ();

        final Location loc = new Location(w, x, y, z); //Wieso erstellst du dir noch ein Location-Objekt, wenn du du bereits eins hast?

        this.plugin.Spawnerlist.add(loc);
        this.plugin.cfgspawner.set("Spawner", null);

        for (int i = 0; i < this.plugin.Spawnerlist.size(); i++) {
            final String str = "Spawner." + i;


            this.plugin.cfgspawner.set(str + ".world", loc.getWorld().getName());

            this.plugin.cfgspawner.set(str + ".x", loc.getBlockX()); //Hier kannst du auch auf die vorher gesicherten Variablen zugreifen.
            this.plugin.cfgspawner.set(str + ".y", loc.getBlockY()); //Schließlich wurde an diesen nichts verändert.
            this.plugin.cfgspawner.set(str + ".z", loc.getBlockZ());
        }

        try {
            this.plugin.cfgspawner.save(this.plugin.spawner);
        } catch (IOException ex) {
            Logger.getLogger(this.plugin.getName()).log(Level.WARNING
                    , "Error while saving the spawners file. Please contact the plugin author of this plugin with the following error"
                    , ex);
        }

        return false;
    }

Ok, werde dass dann morgen früh umbauen ^^
Würde dir ja gerne wieder einen Dia geben, darf aber nicht ._. ^^
 
Oben