Jump to content

ArrayLists speichern?


Reddi

Empfohlene Beiträge

Guten Tag.

Ich erstelle gerade ArrayLists um Spieler verschiedene Teams zuzuordnen.

Die ArrayLists sehen so aus: 

public static ArrayList<String> g1 = new ArrayList<String>();

In die ArrayList werden Spielername folgenermaßen eingeführt:

g1.add(setGroup.getName());

setGroup wird aus den Argumenten von dem Command zum Spieler verwandelt. setGroup ist also ein Spieler.

Soweit alles gut. Wenn jetzt jedoch der Server neu startet, dann wird der Inhalt, also die darin registrierten Spieler, gelöscht. Gibt es eine Möglichkeit, wie man den Inhalt der Arraylist speichert?

MfG,

Reddi

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dazu musst du mit yml Files arbeiten. Lies dich am Besten mal durch google durch ("Spigot yml config").

Hier aus meinem Kopf geschrieben ein Beispiel, wie es aussehen könnte, allerdings nicht elegant, soll dir
nur helfen dich mit der Materie auseinander zu setzen.

 

	public void saveList(List list) {
		File file = new File("plugins" +File.separator + "name.yml");
		YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
		
		config.set("lists.teamlist", list);
		try {
			config.save(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public List loadList() {
		File file = new File("plugins" +File.separator + "name.yml");
		YamlConfiguration config = YamlConfiguration.loadConfiguration(file);
		
		return config.getList("lists.teamlist");
	}



 

bearbeitet von Svendson
Link zu diesem Kommentar
Auf anderen Seiten teilen

ich verstehe deine Frage nicht. ich habe dir praktisch schon die Lösung gegeben^^ Ich hab sie sogar eben nochmal getestet und funktioniert super.
Auch wenn ich deutlich effizientere Wege kenne mit Serializable etc, denke ich das dies erstmal der richtige Weg ist für dich um langsam näher an die Materie zu kommen. Hier hast du nochmal ein konkretes Beispiel dazu:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class AnyPlugin extends JavaPlugin {

	private static ArrayList<String> g1 = new ArrayList<>();
	private static ArrayList<String> g2 = new ArrayList<>();
	private static ArrayList<String> g3 = new ArrayList<>();
	private static ArrayList<String> g4 = new ArrayList<>();
	
	private static final File listFile;
	private static final YamlConfiguration config;
	static {
		listFile = new File("plugins" + File.separator + "teams.yml");
		config = YamlConfiguration.loadConfiguration(listFile);
	}
	
	private Logger log = Bukkit.getLogger();
	
	@Override
	public void onEnable() {
		loadTeams();
	}
	
	@Override
	public void onDisable() {
		saveTeams();
	}
	
	public void saveTeams() {
		config.set("Listen.Team1", g1);
		config.set("Listen.Team1", g2);
		config.set("Listen.Team1", g3);
		config.set("Listen.Team1", g4);
		try {
			config.save(listFile);
		} catch (IOException e) {
			log.severe("Failed to save file '" + listFile.getName() + "'");
			e.printStackTrace();
		}
	}
	
	public void loadTeams() {
		g1 = (ArrayList<String>) config.getStringList("Listen.Team1");
		g2 = (ArrayList<String>) config.getStringList("Listen.Team1");
		g3 = (ArrayList<String>) config.getStringList("Listen.Team1");
		g4 = (ArrayList<String>) config.getStringList("Listen.Team1");
	}
	
}

Schau es dir in Ruhe erstmal an und probier dich aus. Ich häng dir mal noch ein paar Links bezüglich Variablen in Files speichern ran.

Viel Erfolg!

Nützliche Links:
1. Konkreteres zu deinem Problem mit effizienteren Wegen: https://stackoverflow.com/questions/16111496/java-how-can-i-write-my-arraylist-to-a-file-and-read-load-that-file-to-the
2. Allgemein YML-Files in Spigot: https://www.spigotmc.org/wiki/creating-a-config-file/
3. Ein deutsches Youtube Guide zur config: https://www.youtube.com/watch?v=YrVsF_P6gx8
4. Grundgerüst von Files - wie funktionieren sie? https://docs.oracle.com/javase/tutorial/essential/io/file.html
 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B