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

Config auslesen?

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Hallo,
Ich wollte mal fragen wie ich das mache, meine Config auszulesen.
Und zwar soll man in der Config entweder true oder false hin schreiben. Dann soll das Plugin schauen, ob da true oder false steht, und wenn true da steht, soll was ausgeführt werden, anders was anderes...
LG Sacha
 

ZermenoHD

Minecrafter
Registriert
8 April 2014
Beiträge
29
Diamanten
0
Eine Methode werde ich dir mal zeigen:
Erst einmal musst du sagen was du für ein Configfile willst:
Code:
File file = new File("plugins/<Pluginname>/<Configname>.yml");
Fileconfiguaration cfg = Yamlconfiguration.loadconfiguration(file);
Und dann das auslesen:
Code:
Boolean auslesen = false;
if(cfg.isSet("TrueOrFalse") {
    auslesen = cfg.getBoolean("TrueOrFalse");
}
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Eine Methode werde ich dir mal zeigen:
Erst einmal musst du sagen was du für ein Configfile willst:
Code:
File file = new File("plugins/<Pluginname>/<Configname>.yml");
Fileconfiguaration cfg = Yamlconfiguration.loadconfiguration(file);
Und dann das auslesen:
Code:
Boolean auslesen = false;
if(cfg.isSet("TrueOrFalse") {
    auslesen = cfg.getBoolean("TrueOrFalse");
}


Ich weiß jetzt nicht genau was ich damit anfangen soll.
Die Config habe ich schon erstellt etc. Ich möchte nur wissen, wie ich das mache, um zu checken, ob in einer bestimmten Zeile true oder false steht. Also mit if (this.getConfig().getString("Fragen.1.true/false").equalsIgnoreCase("true"))
Dann kommt aber einer Fehlermeldung bei getConfig...
 

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
40
Diamanten
0
Minecraft
Pappi / PapaHarni
Ich weiß jetzt nicht genau was ich damit anfangen soll.
Die Config habe ich schon erstellt etc. Ich möchte nur wissen, wie ich das mache, um zu checken, ob in einer bestimmten Zeile true oder false steht. Also mit if (this.getConfig().getString("Fragen.1.true/false").equalsIgnoreCase("true"))
Dann kommt aber einer Fehlermeldung bei getConfig...

Das TrueOrFalse wird dann in deinem Beispiel zu Frage.1

Also :
Code:
Boolean auslesen = false;
if(cfg.isSet("Frage.1") {
    auslesen = cfg.getBoolean("Frage.1");
}
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Das TrueOrFalse wird dann in deinem Beispiel zu Frage.1

Also :
Code:
Boolean auslesen = false;
if(cfg.isSet("Frage.1") {
    auslesen = cfg.getBoolean("Frage.1");
}

Das ist nicht was ich meine...
Also das ganze muss schon so sein: if (this.getConfig().getString("Fragen.1.answer").equalsIgnoreCase("true")
Aber da ich das ganze in einem Scheduler habe, geht es nicht. Wie mach ich das dann anders?
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Schreib uns doch mal genauer was du nun meinst. Immerhin ist es ja nicht allzuschwer einen Wert aus einer Config zu holen. Nur müssen wir wissen, was du genau von uns wissen möchtest.

Wie gesagt möchte ich mit
if (this.getConfig().getString("Fragen.1.answer").equ alsIgnoreCase("true") {
und
if (this.getConfig().getString("Fragen.1.answer").equ alsIgnoreCase("false") {
schauen, ob jetzt bei Fragen.1.answer in der Config true oder false steht.

Wenn dann dort true steht, soll zb das hier ausgeführt werden: Bukkit.getServer().BroadcastMessage("Die Frage war RICHTIG");
und wenn dort false steht, kommt: Bukkit.getServer().BroadcastMessage("Die Frage war FALSCH");

Aber das ganze geht so nicht, da ich das this.getConfig in einem Scheduler stehen habe, da ich das ganze erst nach 30 Sekunden ausgeben möchte. Jetzt ist meine Frage wie ich das ganze anders machen kann, so dass keine Fehlermeldung kommt.
Ich hoffe das war ausführlich genug ;)
 

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
40
Diamanten
0
Minecraft
Pappi / PapaHarni
Kann mir keiner helfen?

Wenn du nur die config.yml abrufen willst dann sollte das in deine Main Class im onEnable() :
Code:
private Configuration _conf;´

public onEnable() {
  _conf = this.getConfig();
  if(!this.getDataFolder().exists()) {
    this.getDataFolder().mkdir();
    configuration.options().copyDefaults(true);
  }
  this.saveConfig();
}

So in etwa halt ;-)
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Wenn du nur die config.yml abrufen willst dann sollte das in deine Main Class im onEnable() :
Code:
private Configuration _conf;´

public onEnable() {
  _conf = this.getConfig();
  if(!this.getDataFolder().exists()) {
    this.getDataFolder().mkdir();
    configuration.options().copyDefaults(true);
  }
  this.saveConfig();
}

So in etwa halt ;-)

Sry dass ich das jetzt schreibe, aber kannst du nicht lesen?
Ich möchte schauen, ob bei fragen.1.answer true oder false steht.
NIX ANDERES!
 

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
40
Diamanten
0
Minecraft
Pappi / PapaHarni
Sry dass ich das jetzt schreibe, aber kannst du nicht lesen?
Ich möchte schauen, ob bei fragen.1.answer true oder false steht.
NIX ANDERES!

Motz hier mal nicht herum. Schliesslich ist es doch so schon richtig wie du es gemacht hast. nimm statt getString() einfach getBoolean()

Undankbar wenn es schon nicht ordentlich erklären kann was genau du willst.

P.S. Doppelpostings sind meines Wissens nach nicht gestattet.
P.S.S. Verwende mal den Code BBCode.

Ist True :
Code:
if (this.getConfig().getBoolean("Fragen.1.answer")) { }

Ist False :
Code:
if (!this.getConfig().getBoolean("Fragen.1.answer")) { }
 
Zuletzt bearbeitet:

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Wie gesagt möchte ich mit
if (this.getConfig().getString("Fragen.1.answer").equ alsIgnoreCase("true") {
und
if (this.getConfig().getString("Fragen.1.answer").equ alsIgnoreCase("false") {
schauen, ob jetzt bei Fragen.1.answer in der Config true oder false steht.

Wenn dann dort true steht, soll zb das hier ausgeführt werden: Bukkit.getServer().BroadcastMessage("Die Frage war RICHTIG");
und wenn dort false steht, kommt: Bukkit.getServer().BroadcastMessage("Die Frage war FALSCH");

Aber das ganze geht so nicht, da ich das this.getConfig in einem Scheduler stehen habe, da ich das ganze erst nach 30 Sekunden ausgeben möchte. Jetzt ist meine Frage wie ich das ganze anders machen kann, so dass keine Fehlermeldung kommt.
Ich hoffe das war ausführlich genug ;)

Wenn das aber nicht genau erklärt war...
Trotzdem danke werde ich mal probieren :)

EDIT:

Klappt immer noch nicht... Immer noch der gleiche Fehler, und immer noch getConfig unterstrichen...
Hier mal so, dass es auch jeder versteht:
Code:
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    @Override
    public void run() {
        //Countdown STOP
	countdown = false;
	
        //Config --> answer
	if (this.getConfig().getBoolean("Fragen.1.answer").equalsIgnoreCase("true")){
		Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Die Aussage war " + ChatColor.BOLD + "RICHTIG");
		for(Player all : Bukkit.getOnlinePlayers()){
			 all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
		 }
	}
									
	else if (this.getConfig().getString("Fragen.1.answer").equalsIgnoreCase("false")) {
	        Bukkit.getServer().broadcastMessage(ChatColor.RED + "Die Aussage war " + ChatColor.BOLD + "FALSCH");
			for(Player all : Bukkit.getOnlinePlayers()){
				all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
			}
		}
	}
    },20 * 30L);
 
Zuletzt bearbeitet:

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
40
Diamanten
0
Minecraft
Pappi / PapaHarni
Wenn das aber nicht genau erklärt war...
Trotzdem danke werde ich mal probieren :)

EDIT:

Klappt immer noch nicht... Immer noch der gleiche Fehler, und immer noch getConfig unterstrichen...
Hier mal so, dass es auch jeder versteht:
Code:
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
								@Override
								public void run() {
									//Countdown STOP
									countdown = false;
									
									//Config --> answer
									if (this.getConfig().getBoolean("Fragen.1.answer").equalsIgnoreCase("true")){
										Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Die Aussage war " + ChatColor.BOLD + "RICHTIG");
										for(Player all : Bukkit.getOnlinePlayers()){
							                all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
							                }
										}
									
									else if (this.getConfig().getString("Fragen.1.answer").equalsIgnoreCase("false")) {
										Bukkit.getServer().broadcastMessage(ChatColor.RED + "Die Aussage war " + ChatColor.BOLD + "FALSCH");
										for(Player all : Bukkit.getOnlinePlayers()){
							                all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
							                }
										}
								}
    			    	},20 * 30L);


Du machst ja auch nicht das was ich geschrieben habe oO
 

Pappi

Schafhirte
Gesperrt
Registriert
28 Oktober 2012
Beiträge
141
Alter
40
Diamanten
0
Minecraft
Pappi / PapaHarni
Code:
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    @Override
    public void run() {
        //Countdown STOP
	countdown = false;
	
        //Config --> answer
	if (this.getConfig().getBoolean("Fragen.1.answer")){
		Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Die Aussage war " + ChatColor.BOLD + "RICHTIG");
		for(Player all : Bukkit.getOnlinePlayers()){
			 all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
		 }
	} else {
	        Bukkit.getServer().broadcastMessage(ChatColor.RED + "Die Aussage war " + ChatColor.BOLD + "FALSCH");
			for(Player all : Bukkit.getOnlinePlayers()){
				all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
			}
		}
	}
    },20 * 30L);

grml
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Code:
Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    @Override
    public void run() {
        //Countdown STOP
countdown = false;

        //Config --> answer
if (this.getConfig().getBoolean("Fragen.1.answer")){
Bukkit.getServer().broadcastMessage(ChatColor.GREEN + "Die Aussage war " + ChatColor.BOLD + "RICHTIG");
for(Player all : Bukkit.getOnlinePlayers()){
 all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
 }
} else {
        Bukkit.getServer().broadcastMessage(ChatColor.RED + "Die Aussage war " + ChatColor.BOLD + "FALSCH");
for(Player all : Bukkit.getOnlinePlayers()){
all.playSound(all.getLocation(), Sound.ANVIL_LAND, 1.0F, 1.0F);
}
}
}
    },20 * 30L);

grml

Wird das ganze dann immer noch nach erst 30 Sekunden ausgegeben?
 

sacha220899

Miner
Registriert
25 März 2013
Beiträge
178
Diamanten
0
Bohaaaa du musst erst ma lernen was int string boolean ist....
Grundwissen der informatik.
Aber schick uns denn fehler ma...

EDIT
in einem scheduler ist this nicht das bukki-plugin.

Hab ja erst angefangen und ist mein erstes Plugin. Probieren geht über Studieren ^^
Wie muss ich das dann schreiben dass es das BukkitPlugin nimmt?
 

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Bohaaaa du musst erst ma lernen was int string boolean ist....
Grundwissen der informatik.
Aber schick uns denn fehler ma...

EDIT
in einem scheduler ist this nicht das bukki-plugin.

Sowas ist einer der unnötigsten Beiträge die es gibt das hilft 0 zur Lösung des Problems weiter. Lass sowas einfach bitte das kotzt mich langsam echt richtig an da du dass fast in jedem Thread rein schreibst. Jeder fängt mal von 0 an jeder braucht auch mal Hilfe...

====================================================================================================

Also Sascha hier nun die Lösung deines Problems:

Als erstes registrierst du ein paar Variablen. Diese würden dann so aussehen ;)

Code:
public static File f = new File("mainFile");
public static YamlConfiguration config = YamlConfiguration.loadConfiguration(f);

Nun zum onEnable...

Code:
if (!this.getDataFolder().exists) {
this.getDataFolder().mkdir; //Somit erstellst du dir den Ordner von deinem Plugin
}

Dannach schreibst du rein nach diesem Teil das hier:

Code:
f = new File(this.getDataFolder(), "DeinConfigName.yml");

if (!f.exists()) {
  f.createNewFile();

  config.createSection("Sektion1");
  config.createSection("Sektion2");

  config.set("Sektion1", "Test1");
  config.set("Sektion2", "Test2");

  config.save(f); //Hier wirds dir noch rot unterstrichen werden, da du hier noch was catchen musst. Schreibe das hier gerade alles ausm Kopf hoffe das es dennoch funktionieren wird...
} else {
  config.load(f); //Hier wirds dir auch noch rot unterstrichen werden...
}

So nun zu dem teil wie du den noch was ausließt. Das geht eig. ganz einfach das schwierigste war eig. die Konfigurationsdatei zu erstellen. Du schreibst nun einfach den Klassen namen von deiner Hauptklasse in eine andere. Sagen wir jetzt der Name von der Hauptklasse wäre Main dann schreibst du falls du in einer anderen Klasse die Datei auslesen willst zb. if (Main.config.getString("Sektion1").equalsIgnoreCase("true")) {
p.sendMessage("Hallo);
}

Es kommt halt auch drauf an was du dort stehen hast. Wenn es nun ein Int ist geht das natürlich nicht dann musst du getInt machen etc. Ich denke aber mal das du dir den Rest von selber erklären kannst ;)
 
Zuletzt bearbeitet:
Oben