[Bukkit-Coding] Default Config

06/29/2014 19:36 DieSamu#1
Hallo, ich habe ein Problem mit einem Code, der bei mir früher mal gieng.
Ich möchte die default config.yml aus der .jar in den Plugin Ordner kopieren. Hier der Code:

Code:
try {
	plugin.config_file.load(plugin.file_config);
} catch (IOException | InvalidConfigurationException e) {
	System.out.print(plugin.prefix + " Error while loading config");
}
if(!plugin.file_config.exists()){
	InputStream configYMLStream = plugin.getResource("config.yml");
	if (configYMLStream != null) {
		YamlConfiguration configYML = YamlConfiguration.loadConfiguration(configYMLStream);
		plugin.config_file.setDefaults(configYML);
	}
	try {
		plugin.config_file.save(plugin.file_config);
	} catch (IOException e) {
		System.out.print(plugin.prefix + " Error while saving config");
	}
}
Hat sich da etwas geändert und muss ich es anderst machen, oder übersehe ich irgendwas.

Vielen Dank schonmal im voraus für die hoffentlich hilfreichen Antworte.

Grüzle DieSamu.
06/29/2014 19:41 ComputerBaer#2
Was ist denn genau dein Problem? Gibt es einen Error?
06/29/2014 19:45 DieSamu#3
Es gibt kein Error. Das Problem ist, dass die config.yml zwar erstellt wird, aber leer bleibt.
06/29/2014 20:07 False#4
Mach es dir nicht so schwer und nutz einfach :
Code:
this.getConfig().addDefault("Test.default.level", 512); // fügt ein default wert(der aufjedenfall drin sein muss) ein.
this.getConfig().set("Test.1.lol","Test"); // speichert ein wert
this.getConfig().get("Test.1.lol"); // läd den wert aus
this.saveConfig(); //speichert die config
this.reloadConfig(); // läd die config neu
Ps. this ist die main class
06/29/2014 20:24 DieSamu#5
1. dann kann ich nicht andere Config mit anderen Namen erstellen
2. damit kann ich keine Kommentare mit '#' in die Config einfügen
06/29/2014 20:35 False#6
Quote:
Originally Posted by DieSamu View Post
1. dann kann ich nicht andere Config mit anderen Namen erstellen
2. damit kann ich keine Kommentare mit '#' in die Config einfügen
Okay du brauchst mehrere...
Dann wird denke ich es daran liegen das der wert nur eingesetzt wurde und nicht gespeichert wird.
Das selbe passiert wenn man auf "normalen" wege ein wert in die config schreibt aber nicht die save function aufruft.
Der wert ist für den Server dann zwar vorhanden wird aber in der Config nicht gespeichert. Schau nach einer Save function :)
06/29/2014 20:42 DieSamu#7
An anderen Stellen des Plugins schreibe ich was in Config(s), speicher es mit der gleichen save Methode ab und es funktioniert.
06/30/2014 09:20 lordsill#8
Ich habs mal komplett anders gelöst, ohne auf bukkit selbst dafür zurückgreifen zu müssen, daher hier mal in etwa die schritte (programmieren wirst ja auch hinbekommen)

1. Hole die config via getResourceAsStream aus der jar datei (verwende am besten als Angabe des Ortes, wo es sich in der jar befindet mit einem / davor. Wenn es also direkt im root-verzeichnis der jar liegt: "/config.yml")
2. Durchlaufe mit hilfe von BufferedReader den kompletten InputStream den du aus 1. erhälst
3. Schreibe Zeile für Zeile in die config Datei im Plugins Ordner
4. Fertig

Geht alles ohne Bukkit-API nur mit reinem Java
06/30/2014 13:05 DieSamu#9
Danke für den Ansatz, nur möchte ich die .yml Datei direkt aus der .jar holen. Ich möchte, dass das plugin nur mit dieser .jar funktioniert ohne sonsige Dateien auf den Root zu ziehen.
06/30/2014 13:42 lordsill#10
Da hast du mich glaub ich missverstanden.
Du musst die Datei nur in der jar haben. Das root-verzeichnis ist das hauptverzeichnis in der jar.

In der jar sieht es ja dann so aus:

de/meinname/meinplugin/meinplugin.class
plugin.yml
config.yml

und dort, wo du alles siehst, ist das root-verzeichnis
(dort siehst dann aber:
Ordner "de"
Datei "plugin.yml"
Datei "config.yml"
) (es wird einfach nur so genannt, damit ist nicht der server oder so gemeint)
07/01/2014 17:04 DieSamu#11
Danke, fuktioniert so weit :)