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

Leonardheld

User / Kunde

  • "Leonardheld" started this thread

Posts: 34

  • Send private message

1

Friday, August 11th 2017, 6:55pm

Prison Plugin. Scoreboard und Teams gehen nicht

Hey Leute, ich bin wieder mal am Programmieren eines Bukkit Plugins, jedoch habe ich momentan ein kleines Problem.
und zwar hatte ich die Idee zu einem Prison Plugin. Und zwar gibt es Polizei und Räuber und ich habe den Command /prison eingebaut, welcher noch einige Argumente mitliefert, bei denen eigentlich eine Config eingerichtet werden soll. Mein Problem ist das wenn ich zum Beispiel /prison join ausführe zwar in die Welt der Warte Lobby teleportiert werde aber das Scoreboard nicht auftaucht und ich keinem Team zugeordnet werde. Und ich kann mir das nicht ganz erklären da, es auch keinen Fehler in der config gibt. Den Code findet ihr unten. Und für den Fall das ihr noch andere Fehler findet würde ich mich freuen wenn ihr mich darauf hinweißt :)

MySQL queries

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
package Main;

import java.io.File;

import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.World;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Team;

public class Scoreboard implements Listener {

	@SuppressWarnings("deprecation")
	static OfflinePlayer Team1 = Bukkit.getOfflinePlayer("§aHäftlinge");
	@SuppressWarnings("deprecation")
	static OfflinePlayer Team2 = Bukkit.getOfflinePlayer("§aPolizei");
	private static org.bukkit.scoreboard.Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
	private static Team Verbrecher = board.registerNewTeam("Verbrecher");
	private static Team Polizei = board.registerNewTeam("Polizei");

	@SuppressWarnings("deprecation")
	public static void refresh() {
		Objective obj = board.getObjective("Sidebar");
		if (obj == null) {
			obj = board.registerNewObjective("Sidebar", "dummy");
		}

		obj.setDisplaySlot(DisplaySlot.SIDEBAR);
		obj.setDisplayName("§aSpieler");

		Verbrecher = board.registerNewTeam("Verbrecher");
		Verbrecher.setAllowFriendlyFire(false);
		Verbrecher.setCanSeeFriendlyInvisibles(true);
		Verbrecher.setPrefix("§8");
		Verbrecher.setDisplayName("§8[Verbrecher]");

		Polizei.setAllowFriendlyFire(false);
		Polizei.setCanSeeFriendlyInvisibles(true);
		Polizei.setPrefix("§9");
		Polizei.setDisplayName("§9[Polizei]");

		obj.getScore(Team1).setScore(Bukkit.getScoreboardManager().getNewScoreboard().getTeam("Verbrecher").getSize());
		obj.getScore(Team2).setScore(Bukkit.getScoreboardManager().getNewScoreboard().getTeam("Polzei").getSize());

		File ordner = new File("plugins//Prisons");
		File file = new File("plugins//Prisons//prisons.yml");
		if (!ordner.exists()) {
			ordner.mkdir();
		}
		if (!file.exists()) {

		}
		YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);

		World welt = Bukkit.getWorld((String) cfg.get("Welt"));

		for (Player p : welt.getPlayers()) {
			p.setScoreboard(board);
		}
		File ordner1 = new File("plugins//Prisons");
		File file1 = new File("plugins//Prisons//Spawn.yml");
		if (!ordner1.exists()) {
			ordner1.mkdir();
		}
		if (!file1.exists()) {

		}
		YamlConfiguration cfg1 = YamlConfiguration.loadConfiguration((File) file1);

		if (Verbrecher.getSize() == cfg1.getInt("Max-Spieler-Pro-Team")) {
			if (Polizei.getSize() == cfg1.getInt("Max-Spieler-Pro-Team")) {

			}
		}

	}

	private Plugin plugin;

	public void onJoin(PlayerJoinEvent e) {
		e.getPlayer().setScoreboard(board);
		Scoreboard.refresh();
	}

	public void onLeave(PlayerQuitEvent e) {

		new BukkitRunnable() {
			@Override
			public void run() {
				Scoreboard.refresh();
			}
		}.runTaskLater(this.plugin, 5);

	}

	@EventHandler
	public void onPlayerJoin(PlayerInteractEvent e) {

		File ordner = new File("plugins//Prisons");
		File file = new File("plugins//Prisons//config.yml");
		if (!ordner.exists()) {
			ordner.mkdir();
		}
		if (!file.exists()) {
			e.getPlayer().sendMessage("Die Datei config.yml existiert noch nicht!");
		}
		YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);

		File ordner1 = new File("plugins//Prisons");
		File file1 = new File("plugins//Prisons//Spawn.yml");
		if (!ordner1.exists()) {
			ordner1.mkdir();
		}
		if (!file1.exists()) {
		}
		YamlConfiguration cfg1 = YamlConfiguration.loadConfiguration((File) file1);

		File ordner2 = new File("plugins//Prisons");
		File file2 = new File("plugins//Prisons//prisons.yml");
		YamlConfiguration cfg2 = YamlConfiguration.loadConfiguration((File) file2);

		if (e.getPlayer().getWorld() == cfg2.get("Welt"))

			
		if (Verbrecher.getSize() < cfg.getInt("Max-Spieler-Pro-Team")) {
			if (Verbrecher.getSize() > Polizei.getSize()) {
				Polizei.addPlayer(e.getPlayer());
				e.getPlayer().setGameMode(GameMode.ADVENTURE);
			} else {
				Verbrecher.addPlayer(e.getPlayer());
				e.getPlayer().setGameMode(GameMode.ADVENTURE);
			}
		} else {
			if (Polizei.getSize() < cfg.getInt("Max-Spieler-Pro-Team")) {
				Polizei.addPlayer(e.getPlayer());
				e.getPlayer().setGameMode(GameMode.ADVENTURE);
			} else {
				Player p = e.getPlayer();

				Location loc = p.getLocation();

				loc.setX((double) cfg1.getDouble("X"));
				loc.setZ((double) cfg1.getDouble("Z"));

				loc.setY((double) cfg1.getDouble("Y"));
				loc.setWorld((World) cfg1.get("Welt"));
				loc.setYaw(cfg1.getInt("Yaw"));
				loc.setPitch(cfg1.getInt("Pitch"));

				p.teleport(loc);
				p.sendMessage("§aDieser Spiel Modus ist bereits voll.");
			}
		}
		e.getPlayer().setScoreboard(board);
		Scoreboard.refresh();

	}

}



Code für den Command

MySQL queries

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
package Main;

import java.io.File;
import java.io.IOException;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;

public class commands implements Listener, CommandExecutor {

	public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
		if (cmd.getName().equalsIgnoreCase("Prison")) {
			Player p = (Player) sender;
			if (args.length == 0) {
				if (p.hasPermission("Prison.op")) {
					p.sendMessage("§8§l====Prison Spieler Commands====");
					p.sendMessage("/prison help    (Liste alle Commands auf)");
					p.sendMessage("/prison join    (Betrete ein Spiel)");
					p.sendMessage("/prison leave    (Verlasse ein Spiel)");
					p.sendMessage("§8§l====Prison Setup Commands====");
					p.sendMessage("/prison prison-set    (Setzte das Gefängnis)");
					p.sendMessage("/prison spawn-set    (Setze den Spawn)");
					p.sendMessage("/prison start-set    (Setze die Wartelobby)");
					p.sendMessage("§8§l====Prison Reset Command====");
					p.sendMessage(
							"/prison reset    (Resete alle Spawns in den Dateien prison.yml, spawn.yml, start.yml)");
				} else {
					p.sendMessage("§8§l====Prison Spieler Commands====");
					p.sendMessage("/prison help    (Liste alle Commands auf)");
					p.sendMessage("/prison join    (Betrete ein Spiel)");
					p.sendMessage("/prison leave    (Verlasse ein Spiel)");
				}
			} else {
				if ((args[0].equalsIgnoreCase("help"))) {
					if (p.hasPermission("Prison.op")) {
						p.sendMessage("§8§l====Prison Spieler Commands====");
						p.sendMessage("/prison help    (Liste alle Commands auf)");
						p.sendMessage("/prison join    (Betrete ein Spiel)");
						p.sendMessage("/prison leave    (Verlasse ein Spiel)");
						p.sendMessage("§8§l====Prison Setup Commands====");
						p.sendMessage("/prison prison-set    (Setzte das Gefängnis)");
						p.sendMessage("/prison spawn-set    (Setze den Spawn)");
						p.sendMessage("/prison start-set    (Setze die Wartelobby)");
						p.sendMessage("§8§l====Prison Reset Command====");
						p.sendMessage(
								"/prison reset    (Resete alle Spawns in den Dateien prison.yml, spawn.yml, start.yml)");
					} else {
						p.sendMessage("§8§l====Prison Spieler Commands====");
						p.sendMessage("/prison help    (Liste alle Commands auf)");
						p.sendMessage("/prison join    (Betrete ein Spiel)");
						p.sendMessage("/prison leave    (Verlasse ein Spiel)");
					}

				} else {
					if ((args[0].equalsIgnoreCase("prison-set"))) {
						if (p.hasPermission("prison.*")) {
							File ordner = new File("plugins//Prisons");
							File file = new File("plugins//Prisons//prisons.yml");
							if (!ordner.exists()) {
								ordner.mkdir();
							}
							if (!file.exists()) {
								try {
									file.createNewFile();
								} catch (IOException i) {
									p.sendMessage("§cprisons.yml konnte nicht erstellt werden !");
								}
							}
							YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);
							Location locMin = p.getLocation();

							double x = locMin.getX();
							double y = locMin.getY();
							double z = locMin.getZ();

							float yaw = locMin.getYaw();
							float pitch = locMin.getPitch();

							String world = locMin.getWorld().getName();

							cfg.set("X", (int) x);
							cfg.set("Y", (int) y);
							cfg.set("Z", (int) z);
							cfg.set("Yaw", (int) yaw);
							cfg.set("Pitch", (int) pitch);
							cfg.set("Welt", (String) world);
							try {
								cfg.save(file);
							} catch (IOException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						} else {
							p.sendMessage("§cKeine Berechtigung!");
						}

					} else {
						if ((args[0].equalsIgnoreCase("reset"))) {
							if (p.hasPermission("prison.*")) {
								File ordner = new File("plugins//Prisons");
								File file = new File("plugins//Prisons//prisons.yml");
								if (!ordner.exists()) {
									ordner.mkdir();
								}
								if (file.exists()) {
									try {
										file.delete();
										file.createNewFile();
									} catch (IOException i) {
										p.sendMessage("§cDie Datei Prison.yml wurde nicht zurückgesetzt!");

									}
								}
								File ordner1 = new File("plugins//Prisons");
								File file1 = new File("plugins//Prisons//spawn.yml");
								if (!ordner1.exists()) {
									ordner1.mkdir();
								}
								if (file1.exists()) {
									try {
										file1.delete();
										file1.createNewFile();
									} catch (IOException i) {
										p.sendMessage("§cDie Datei spawn.yml wurde nicht zurückgesetzt!");
									}
								}
								File ordner2 = new File("plugins//Prisons");
								File file2 = new File("plugins//Prisons//start.yml");
								if (!ordner2.exists()) {
									ordner2.mkdir();
								}
								if (file2.exists()) {
									try {
										file2.delete();
										file2.createNewFile();
									} catch (IOException i) {
										p.sendMessage("§cDie Datei start.yml wurde nicht zurückgesetzt!");
									}
								}
							} else {
								p.sendMessage("§cKeine Berechtigung!");
							}

						} else {
							if ((args[0].equalsIgnoreCase("join"))) {
								File ordner = new File("plugins//Prisons");
								File file = new File("plugins//Prisons//start.yml");
								if (!ordner.exists()) {
									ordner.mkdir();
								}
								if (!file.exists()) {
									p.sendMessage("§aEin Adminestrator muss zu erst das Setup ausführen!");
								}
								YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);

								Location loc = p.getLocation();

								loc.setX((double) cfg.getDouble("X"));
								loc.setZ((double) cfg.getDouble("Z"));

								loc.setY((double) cfg.getDouble("Y"));
								String world = (String) cfg.get("Welt");
								World welt = Bukkit.getWorld((String) world);
								loc.setWorld(welt);
								loc.setYaw(cfg.getInt("Yaw"));
								loc.setPitch(cfg.getInt("Pitch"));

								p.teleport(loc);

							} else {

								if ((args[0].equalsIgnoreCase("leave"))) {
									File ordner = new File("plugins//Prisons");
									File file = new File("plugins//Prisons//spawn.yml");
									if (!ordner.exists()) {
										ordner.mkdir();
									}
									if (!file.exists()) {
										p.sendMessage("§aEin Adminestrator muss zu erst das Setup ausführen!");
									}
									YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);

									Location loc = p.getLocation();

									loc.setX((double) cfg.getDouble("X"));
									loc.setZ((double) cfg.getDouble("Z"));

									loc.setY((double) cfg.getDouble("Y"));
									loc.setWorld((World) cfg.get("Welt"));
									loc.setYaw(cfg.getInt("Yaw"));
									loc.setPitch(cfg.getInt("Pitch"));

									p.teleport(loc);

								} else {

									if ((args[0].equalsIgnoreCase("spawn-set"))) {
										if (p.hasPermission("prison.*")) {
											File ordner = new File("plugins//Prisons");
											File file = new File("plugins//Prisons//spawn.yml");
											if (!ordner.exists()) {
												ordner.mkdir();
											}
											if (!file.exists()) {
												try {
													file.createNewFile();
												} catch (IOException i) {
													p.sendMessage("§cspawn.yml konnte nicht erstellt werden !");
												}
											}
											YamlConfiguration cfg = YamlConfiguration.loadConfiguration((File) file);
											Location locMin = p.getLocation();

											double x = locMin.getX();
											double y = locMin.getY();
											double z = locMin.getZ();

											float yaw = locMin.getYaw();
											float pitch = locMin.getPitch();

											String world = locMin.getWorld().getName();
											World welt = Bukkit.getWorld((String) world);

											cfg.set("X", (int) x);
											cfg.set("Y", (int) y);
											cfg.set("Z", (int) z);
											cfg.set("Yaw", (int) yaw);
											cfg.set("Pitch", (int) pitch);
											cfg.set("Welt", (String) world);
											try {
												cfg.save(file);
											} catch (IOException e) {
												// TODO Auto-generated catch block
												e.printStackTrace();
											}
										} else {
											p.sendMessage("§cKeine Berechtigung!");
										}

									} else {
										if ((args[0].equalsIgnoreCase("start-set"))) {
											if (p.hasPermission("prison.*")) {
												File ordner = new File("plugins//Prisons");
												File file = new File("plugins//Prisons//start.yml");
												if (!ordner.exists()) {
													ordner.mkdir();
												}
												if (!file.exists()) {
													try {
														file.createNewFile();
													} catch (IOException i) {
														p.sendMessage("§cstart.yml konnte nicht erstellt werden !");
													}
												}
												YamlConfiguration cfg = YamlConfiguration
														.loadConfiguration((File) file);
												Location locMin = p.getLocation();

												double x = locMin.getX();
												double y = locMin.getY();
												double z = locMin.getZ();

												float yaw = locMin.getYaw();
												float pitch = locMin.getPitch();

												String world = locMin.getWorld().getName();
												World welt = Bukkit.getWorld((String) world);

												cfg.set("X", (int) x);
												cfg.set("Y", (int) y);
												cfg.set("Z", (int) z);
												cfg.set("Yaw", (int) yaw);
												cfg.set("Pitch", (int) pitch);
												cfg.set("Welt", (String) world);
												try {
													cfg.save(file);
												} catch (IOException e) {
													// TODO Auto-generated catch block
													e.printStackTrace();
												}
											} else {
												p.sendMessage("§cKeine Berechtigung!");
											}

										}
									}
								}

							}

						}
					}
				}
			}
		}

		return false;

	}

}

This post has been edited 1 times, last edit by "Leonardheld" (Aug 11th 2017, 8:28pm)


HaiflLP

User / Kunde

  • "HaiflLP" is male

Posts: 214

  • Send private message

2

Friday, August 11th 2017, 10:17pm

Hi, schön dass du dir so viel Arbeit machst.
Leider habe ich und ich denke auch viele der anderen nicht die Muße, alles durch zu gehen um einen Fehler zu finden, noch dazu da es anscheinend ein logischer Fehler ist.
In solchen Fällen rolle ich die Maus immer von hinten auf.
Ich schaue, was genau passieren soll, wenn ich den /prison join befehl eingebe und lasse mir bei jedem If oder jeder Aktion die geschieht, eine Nachricht ausgeben (Bukkit.broadcastMessage)
Entweder sind in der Nachricht Werte der If-Abfrage oder Schlüsselworte, um zu wissen, wo das Plugin gerade ist.
Dadurch findest du den Fehler eigentlich zu 100%

Leonardheld

User / Kunde

  • "Leonardheld" started this thread

Posts: 34

  • Send private message

3

Friday, August 11th 2017, 10:25pm

Okay danke für den Tipp :). Ich werde es mir Morgen noch einmal anschauen aber vielleicht gibt es ja wen der doch noch den Fehler findet :)

Leonardheld

User / Kunde

  • "Leonardheld" started this thread

Posts: 34

  • Send private message

4

Friday, August 18th 2017, 12:26pm

Würde mich aber freuen wenn mir wer helfen könnte :)

xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

5

Friday, August 18th 2017, 12:59pm

Source code

1
2
3
4
5
								loc.setX((double) cfg.getDouble("X"));
								loc.setZ((double) cfg.getDouble("Z"));

								loc.setY((double) cfg.getDouble("Y"));
								String world = (String) cfg.get("Welt");


sind leicht unnötig die castings.... zudem kannst du cfg.getString machen, dann brauchst die world auch nicht mehr casten.

Ich finde auch nix beim join command, was irgendwie das scoreboard setzen sollte
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

Leonardheld

User / Kunde

  • "Leonardheld" started this thread

Posts: 34

  • Send private message

6

Friday, August 18th 2017, 2:49pm

Okay. Danke ich weiß was du meinst mit dem Casting. Ich verändere es gleich mal und ich weiß nicht genau wie ich des Scoreboard setzten soll. Hätte jetzt gesagt
p.setScoreboard(Scoreboard.refresh);

BlvckBytes

User / Kunde

  • "BlvckBytes" is male

Posts: 797

Location: (*blvckbytes).home

Occupation: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Send private message

7

Saturday, August 19th 2017, 1:22pm

Würde dir gerne helfen, aber @HaiflLP hat recht, das ist wirklich viel Code.

Vorallem ist der Code sehr unübersichtlich und komisch aufgebaut. Mach dir die Scoreboard-Klasse einfach nochmal neu,
und benutze nur einmal getNewScoreboard() und speichere dir das in einer Variable ab. Jeder Spieler kann ja das selbe Scoreboard haben.

LG BlvckBytes

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