• 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!

Location List via ConfigurationSerializable speichern

Summerfeeling

Minecrafter
Registriert
12 Dezember 2012
Beiträge
2
Diamanten
0
Hey,
ich arbeite derzeit an einem Game Plugin, für meinen Freund.
Nun ist meine Frage, wie kann ich über die ConfigurationSerializable eine List<Location> speichern, und laden?

Mein derzeitiger Code ist:
Code:
    package de.Summerfeeling.Wizardwars;

    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import org.bukkit.Location;
    import org.bukkit.configuration.serialization.ConfigurationSerializable;

    public class Arena implements ConfigurationSerializable{

       private String name;
       private String builder;
       private String builderURL;
       private List<Location> spawns;
       
       public Arena(String name, String builder, String builderURL, List<Location> spawns) {
          this.name = name;
          this.builder = builder;
          this.builderURL = builderURL;
          this.spawns = spawns;
       }

       @Override
       public Map<String, Object> serialize() {
          Map<String, Object> o = new HashMap<String, Object>();
          o.put("name", name);
          o.put("builder", builder);
          o.put("builderURL", builderURL);
          return o;
       }
       
    }
 

delta242

Kuhfänger
Registriert
28 Mai 2012
Beiträge
90
Diamanten
0
Also so einfach kann man keine Liste abspeichern.
Ich mach es immer so:
Eine einzelne Location speicher ich mit den einzelnen relevanten Werten ab, also world, x, y, z und eventuell noch yaw und pitch.
Wenn ich mehrere Locations speichern möchte, schau ich erst mal was mehr Sinn macht.
1. Für jede Location eine eigene *.yml Datei erstellen und die Dateien durchnummerieren.
2. Jede Location in einer Config unter einem eigenem Pfad abspeichern, also z.B. locations.loc1.x, locations.loc2.x,... usw.

In deinem Fall würde ich es in etwa so machen:

Code:
       @Override
       public Map<String, Object> serialize() {
          Map<String, Object> o = new HashMap<String, Object>();
          o.put("name", name);
          o.put("builder", builder);
          o.put("builderURL", builderURL);
          int i = 0;
          for (Location loc : spawns) {
                o.put("spawn." + i + ".world", loc.getWorld());
                o.put("spawn." + i + ".x", loc.getBlockX());
                // Hier dann alle anderen relevanten Werte...
                ++i;
          }  
          return o;
       }

Ist nicht getestet, kannst ja einfach mal ein wenig rumprobieren ;)
 
Oben