You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

1

Tuesday, November 27th 2018, 7:57pm

Reload Config funktioniert nicht

Guten Abend,

ich habe mal wieder ein kleines Problemchen, wo mir das gute Internetz nicht helfen kann.

Und zwar wollte ich einen /reload Befehl einbauen. Die Textnachricht erscheint auch, jedoch wird Ingame die Änderungen aus der Config net übernommen.
Ich hab schon folgendes probiert:
- reloadConfig();
- saveConfig(); und dann reloadConfig();
- reloadConfig(); und dann saveConfig();
- die Yaml Variante

Der Code lautet wie folgt:

Spoiler Spoiler

package de.gismo2501.more_commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;


public class Main extends JavaPlugin {

String version = "Alpha 1.0";
String config_ts = getConfig().getString("Config.ts");
String config_map = getConfig().getString("Config.map");
String config_website = getConfig().getString("Config.website");
String config_morecommandstext = getConfig().getString("Config.helptext");
String config_error_reload = getConfig().getString("Config.error_reload");
String config_reload = getConfig().getString("Config.reload");

@Override
public void onEnable() {
loadConfig();
System.out.println("Das Plugin More Commands "+version+" wird ausgeführt.");
System.out.println("Das Plugin wurde von Gismo2501 programmiert.");
}

public void onDisable() {
System.out.println("Danke fuer die nutzung von More Commands!");

}

@Override
public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
if (label.equalsIgnoreCase("ts")) {
sender.sendMessage(config_ts);
}

if (label.equalsIgnoreCase("map")) {
sender.sendMessage(config_map);
}

if (label.equalsIgnoreCase("website")) {
sender.sendMessage(config_website);
}







if (label.equalsIgnoreCase("morecommands")) {
if (args.length == 0) {
sender.sendMessage(config_morecommandstext);
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("reload")) {
saveConfig();
reloadConfig();
sender.sendMessage(config_reload);

} else {
sender.sendMessage(config_error_reload);
}
}
}


return true;
}






public void loadConfig() {
getConfig().options().copyDefaults(true);
saveConfig();
}


}


Ich hoffe mir kann jemand in diesem Gebiet weiter helfen.

LG Gismo2501

Sebi_Zocer

User / Kunde

  • "Sebi_Zocer" is male

Posts: 229

Location: Privat

Occupation: Privat

  • Send private message

2

Wednesday, November 28th 2018, 7:31am

Zuerst solltest du die Strings erst beim loaden definieren und dann bei Reload nochmal neu loaden.

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

3

Wednesday, November 28th 2018, 8:20pm

Zuerst solltest du die Strings erst beim loaden definieren und dann bei Reload nochmal neu loaden.
1. Das geht leider nicht, weil ich die Strings nicht public machen kann
2. was würde das ändern?

Sebi_Zocer

User / Kunde

  • "Sebi_Zocer" is male

Posts: 229

Location: Privat

Occupation: Privat

  • Send private message

4

Friday, November 30th 2018, 7:27am

Durch den Reload werden die Strings nicht reloadet. Sie werden nur 1 mal geladen und dann werden sie nicht neugeladen wegen des reloads.

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

5

Friday, November 30th 2018, 8:42am

Durch den Reload werden die Strings nicht reloadet. Sie werden nur 1 mal geladen und dann werden sie nicht neugeladen wegen des reloads.
Das heißt, ich kann das nicht in Strings machen, sondern gleich in den Code so reinschreiben, dass er das aus der Config nehmen soll?

Sebi_Zocer

User / Kunde

  • "Sebi_Zocer" is male

Posts: 229

Location: Privat

Occupation: Privat

  • Send private message

6

Friday, November 30th 2018, 4:41pm

Oder halt ne Reload-Methode, welche die Strings neu gettet:

Spoiler Spoiler

Java source code

1
2
3
4
5
    String config_ts = getConfig().getString("ts");
    
    public void reloadConfigs(){
        config_ts = getConfig().getString("ts");
    }


Oder Methoden für Strings getten:

Spoiler Spoiler

Java source code

1
2
3
    public String config_ts(){
        return getConfig().getString("ts")
    }

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

7

Friday, November 30th 2018, 6:13pm

Oder halt ne Reload-Methode, welche die Strings neu gettet:

Spoiler Spoiler

Java source code

1
2
3
4
5
    String config_ts = getConfig().getString("ts");
    
    public void reloadConfigs(){
        config_ts = getConfig().getString("ts");
    }


Oder Methoden für Strings getten:

Spoiler Spoiler

Java source code

1
2
3
    public String config_ts(){
        return getConfig().getString("ts")
    }
Ich werde es austesten. Danke :) //Bearbeitung

Funktioniert leider beides nicht :(

This post has been edited 1 times, last edit by "gismo2501" (Nov 30th 2018, 6:29pm)


Sebi_Zocer

User / Kunde

  • "Sebi_Zocer" is male

Posts: 229

Location: Privat

Occupation: Privat

  • Send private message

8

Friday, November 30th 2018, 7:28pm

Zeig mal deinen aktuellen Code mit der 1. Option von mir

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

9

Friday, November 30th 2018, 8:02pm


Zeig mal deinen aktuellen Code mit der 1. Option von mir

Spoiler Spoiler

package de.gismo2501.more_commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;


public class Main extends JavaPlugin {
String version = "Alpha 1.0";
String config_ts = getConfig().getString("Config.ts");
String config_map = getConfig().getString("Config.map");
String config_website = getConfig().getString("Config.website");
String config_morecommandstext = getConfig().getString("Config.helptext");
String config_error_reload = getConfig().getString("Config.error_reload");
String config_reload = getConfig().getString("Config.reload");



@Override
public void onEnable() {


loadConfig();
System.out.println("Das Plugin More Commands "+version+" wird ausgeführt.");
System.out.println("Das Plugin wurde von Gismo2501 programmiert.");

}

public void onDisable() {
System.out.println("Danke fuer die nutzung von More Commands!");

}

@Override
public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
if (label.equalsIgnoreCase("ts")) {
sender.sendMessage(config_ts);
}

if (label.equalsIgnoreCase("map")) {
sender.sendMessage(config_map);
}

if (label.equalsIgnoreCase("website")) {
sender.sendMessage(config_website);
}







if (label.equalsIgnoreCase("morecommands")) {
if (args.length == 0) {
sender.sendMessage(config_morecommandstext);
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("reload")) {
reloadConfigs();
sender.sendMessage(config_reload);

} else {
sender.sendMessage(config_error_reload);
}
}
}


return true;
}


public void reloadConfigs() {
config_ts = getConfig().getString("Config.ts");
config_map = getConfig().getString("Config.map");
config_website = getConfig().getString("Config.website");
config_morecommandstext = getConfig().getString("Config.helptext");
config_error_reload = getConfig().getString("Config.error_reload");
config_reload = getConfig().getString("Config.reload");
}


public void loadConfig() {
getConfig().options().copyDefaults(true);
saveConfig();
}

}

Sebi_Zocer

User / Kunde

  • "Sebi_Zocer" is male

Posts: 229

Location: Privat

Occupation: Privat

  • Send private message

10

Wednesday, December 5th 2018, 7:55pm

Jo Bro, du hast den Reload an sich vergessen

mit

Java source code

1
reloadConfig();
kannst du die Config neu laden, was du aber vergessen hast bei "reloadConfigs" reinzupacken. Hier mal der Code. Ps. ich hab ihn mal formatiert, da du ihn einfach reingeschickt hast und damit nix ging.

Spoiler Spoiler

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package de.gismo2501.more_commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
	String version = "Alpha 1.0";
	String config_ts;
	String config_map;
	String config_website;
	String config_morecommandstext;
	String config_error_reload;
	String config_reload;
	
	@Override
	public void onEnable() {
		loadConfig();
		reloadConfigs();
		System.out.println("Das Plugin More Commands "+version+" wird ausgeführt.");
		System.out.println("Das Plugin wurde von Gismo2501 programmiert.");
	}

	public void onDisable() {
		System.out.println("Danke fuer die nutzung von More Commands!");
	}

	@Override
	public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
		if(label.equalsIgnoreCase("ts")){
			sender.sendMessage(config_ts);
		}
		
		if(label.equalsIgnoreCase("map")){
			sender.sendMessage(config_map);
		}
		
		if(label.equalsIgnoreCase("website")){
			sender.sendMessage(config_website);
		}
		
		if(label.equalsIgnoreCase("morecommands")){
			if(args.length == 0){
				sender.sendMessage(config_morecommandstext);
			}
			
			if(args.length == 1){
				if(args[0].equalsIgnoreCase("reload")){
					reloadConfigs();
					sender.sendMessage(config_reload);
				} else {
					sender.sendMessage(config_error_reload);
				}
			}
		}
		return true;
	}

	public void reloadConfigs() {
		reloadConfig();
		config_ts = getConfig().getString("ts");
		config_map = getConfig().getString("map");
		config_website = getConfig().getString("website");
		config_morecommandstext = getConfig().getString("helptext");
		config_error_reload = getConfig().getString("error_reload");
		config_reload = getConfig().getString("reload");
	}
	
	public void loadConfig() {
		getConfig().options().copyDefaults(true);
		saveConfig();
	}
}

Ich würde dir noch empfehlen, dass du für einzelnde Commands eigene Classes erstellst, dann hättest du etwas mehr Übersicht. Zudem hätte ich es eher so gemacht, dass ich in ne yml mir erstelle und darin dann z.B. "Command: Nachricht bla bla bla" reinpacke, dann mit "getKexs(false)" diese dann rausgeholt hätte und dann über das PlayerCommandPreprocessEvent die "Commands" rausgeangelt hätte und die eingespeicherte Nachrcht dazu gesendet hätte. Das wäre aber nur mein Weg gewesen ^^

Achja, ich hab hier noch was für dich:

Spoiler Spoiler

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	@Override
    public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args){
		if(label.equalsIgnoreCase("gamemode") || label.equalsIgnoreCase("gm")){
	        ArrayList<String> tab = new ArrayList<>();
	        List<String> tabList = new ArrayList<>();
        	Player p = null;
        	if(sender instanceof Player){
        		p = (Player) sender;
        	}
        	if(p != null){
        		if(!p.hasPermission("plugin.gamemode")){
        			return tabList;
        		}
        	}
	        if(args.length == 1){
				tab.add("survival");
				tab.add("adventure");
				tab.add("creative");
				tab.add("spectator");
	        } else if(args.length == 2){
				for(Player t : Bukkit.getOnlinePlayers()){
					boolean b1 = false;
					if(p != null){
						if(t.equals(p)){
							b1 = true;
						}
					}
					if(b1 == false){
						tab.add(t.getName());
					}
				}
	        }
	        tabList.addAll(tab);
	        return tabList;
	    }
	    return null;
    }


Noch dazu oben "public class Main implements JavaPlugin, TabCompleter {". Damit kannst du die Nachrichten mit der "Tab"-Taste vervollständigen lassen als Spieler. Ist sicher nützlich ^^

gismo2501

User / Kunde

  • "gismo2501" started this thread

Posts: 12

  • Send private message

11

Wednesday, December 5th 2018, 9:49pm

mit

Java source code

1
reloadConfig();
kannst du die Config neu laden, was du aber vergessen hast bei "reloadConfigs" reinzupacken. Hier mal der Code. Ps. ich hab ihn mal formatiert, da du ihn einfach reingeschickt hast und damit nix ging.

Spoiler Spoiler

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package de.gismo2501.more_commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
	String version = "Alpha 1.0";
	String config_ts;
	String config_map;
	String config_website;
	String config_morecommandstext;
	String config_error_reload;
	String config_reload;
	
	@Override
	public void onEnable() {
		loadConfig();
		reloadConfigs();
		System.out.println("Das Plugin More Commands "+version+" wird ausgeführt.");
		System.out.println("Das Plugin wurde von Gismo2501 programmiert.");
	}

	public void onDisable() {
		System.out.println("Danke fuer die nutzung von More Commands!");
	}

	@Override
	public boolean onCommand (CommandSender sender, Command command, String label, String[] args) {
		if(label.equalsIgnoreCase("ts")){
			sender.sendMessage(config_ts);
		}
		
		if(label.equalsIgnoreCase("map")){
			sender.sendMessage(config_map);
		}
		
		if(label.equalsIgnoreCase("website")){
			sender.sendMessage(config_website);
		}
		
		if(label.equalsIgnoreCase("morecommands")){
			if(args.length == 0){
				sender.sendMessage(config_morecommandstext);
			}
			
			if(args.length == 1){
				if(args[0].equalsIgnoreCase("reload")){
					reloadConfigs();
					sender.sendMessage(config_reload);
				} else {
					sender.sendMessage(config_error_reload);
				}
			}
		}
		return true;
	}

	public void reloadConfigs() {
		reloadConfig();
		config_ts = getConfig().getString("ts");
		config_map = getConfig().getString("map");
		config_website = getConfig().getString("website");
		config_morecommandstext = getConfig().getString("helptext");
		config_error_reload = getConfig().getString("error_reload");
		config_reload = getConfig().getString("reload");
	}
	
	public void loadConfig() {
		getConfig().options().copyDefaults(true);
		saveConfig();
	}
}

Ich würde dir noch empfehlen, dass du für einzelnde Commands eigene Classes erstellst, dann hättest du etwas mehr Übersicht. Zudem hätte ich es eher so gemacht, dass ich in ne yml mir erstelle und darin dann z.B. "Command: Nachricht bla bla bla" reinpacke, dann mit "getKexs(false)" diese dann rausgeholt hätte und dann über das PlayerCommandPreprocessEvent die "Commands" rausgeangelt hätte und die eingespeicherte Nachrcht dazu gesendet hätte. Das wäre aber nur mein Weg gewesen ^^

Achja, ich hab hier noch was für dich:

Spoiler Spoiler

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	@Override
    public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args){
		if(label.equalsIgnoreCase("gamemode") || label.equalsIgnoreCase("gm")){
	        ArrayList tab = new ArrayList<>();
	        List tabList = new ArrayList<>();
        	Player p = null;
        	if(sender instanceof Player){
        		p = (Player) sender;
        	}
        	if(p != null){
        		if(!p.hasPermission("plugin.gamemode")){
        			return tabList;
        		}
        	}
	        if(args.length == 1){
				tab.add("survival");
				tab.add("adventure");
				tab.add("creative");
				tab.add("spectator");
	        } else if(args.length == 2){
				for(Player t : Bukkit.getOnlinePlayers()){
					boolean b1 = false;
					if(p != null){
						if(t.equals(p)){
							b1 = true;
						}
					}
					if(b1 == false){
						tab.add(t.getName());
					}
				}
	        }
	        tabList.addAll(tab);
	        return tabList;
	    }
	    return null;
    }


Noch dazu oben "public class Main implements JavaPlugin, TabCompleter {". Damit kannst du die Nachrichten mit der "Tab"-Taste vervollständigen lassen als Spieler. Ist sicher nützlich ^^
Vielen vielen vielen dank :)

Ich werd es ausprobieren und mein Plugin dementsprechend bauen :). Bei den anderen Klassen hatte ich immer das Problem mit der Config, also ich konnte halt die Config aus den anderen Klassen net abfragen bzw nicht "getten"

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net