Jump to content

ArrayLists speichern?


Reddi
 Share

Recommended Posts

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 to comment
Share on other sites

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");
	}



 

Edited by Svendson
Link to comment
Share on other sites

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 to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...
B
B