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

Scarface88

User / Kunde

  • "Scarface88" is male
  • "Scarface88" started this thread

Posts: 391

Location: 127.0.0.1

Occupation: Not just a normal Dev

  • Send private message

1

Monday, May 26th 2014, 9:04pm

Serverwartungs Plugin ist etwas buggy

Hallo! Ich programmiere seid neustem wieder ein Bukkit Plugin.. Da ich so langsam wieder rein kommen wollte, habe ich mir ein simples Server Wartungs System ausgedacht.. Wenn ein Admin den Befehl /Serverwartung
ausführt, geht der Server in oder aus dem Wartungszustand (Je nach dem, in welchem Status er sich gerade befindet).
Nun ist es so... Ich habe einen Join Listener rein gemacht, der überprüft, ob der Spieler die Permission "aio.wartung.bypass" besitzt (Damit kann man das Wartungs System umgehen, was sinnvoll für Admins ist).. Falls nicht und der Wartungszustand an ist, so wird er gekickt. Andernfalls, darf er auf den Server joinen und darf normal spielen.

Allerdings, wird der Spieler BEI JEDEM STATUS gekickt! Die config.yml wird korrekt ausgelesen, was ich auch schon überprüft habe, indem ich dem Client eine Message senden lies, der den aktuellen Status ausliest.

Mein Listener sieht folgender Maßen aus:

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
package me.Scarface88.AllInOne;

import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.bukkit.ChatColor;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
 
public class JoinListener implements Listener {
	
		boolean wartung;

		public JoinListener(cmds plugin) {
			plugin.getServer().getPluginManager().registerEvents(this, plugin);
			
			wartung=plugin.getConfig().getBoolean("Serverwartung");
		}
	
		@EventHandler
        public void onPlayerJoinListener(PlayerJoinEvent event)
		{			
			if(event.getPlayer().hasPermission("aio.wartung.bypass"))
			{
				if(wartung == true)
				{
					event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten, während der Server im Wartungszustand ist!");
				}
				else {
					event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten!");
				}
			}
			else {
				if(wartung == true)
				{
					event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten!");
				}
				else {
					event.getPlayer().kickPlayer("Der Server befindet sich im Wartungszustand! Bitte versuche es später erneut!");
				}
			}
			event.getPlayer().sendMessage("Der Wartungszustand ist:" + ChatColor.RED +  wartung);
		}
}


Ich hoffe das mir jemand helfen kann.

LG Scarface88

Abgegrieft

User / Kunde

  • "Abgegrieft" is male

Posts: 674

Location: Waschraum

  • Send private message

2

Monday, May 26th 2014, 9:58pm

Versuch mal das PlayerLoginEvent

Zum kicken: e.disallow

#Edit: Das Event wird dein Problem nicht beheben, ist aber dafür besser geeignet

Versuchs mal so :)

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(event.getPlayer().hasPermission("aio.wartung.bypass"))
{
if(wartung == true){
event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten, während der Server im Wartungszustand ist!");
}
else {
event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten!");
}
}
else {
if(wartung == false)
{
event.setJoinMessage(ChatColor.GOLD + "+ " +  ChatColor.DARK_PURPLE + event.getPlayer().getDisplayName() + " ist dem Spiel beigetreten!");
}
else {
event.getPlayer().kickPlayer("Der Server befindet sich im Wartungszustand! Bitte versuche es später erneut!");
}
}
lädt

This post has been edited 2 times, last edit by "Abgegrieft" (May 26th 2014, 10:08pm)


Scarface88

User / Kunde

  • "Scarface88" is male
  • "Scarface88" started this thread

Posts: 391

Location: 127.0.0.1

Occupation: Not just a normal Dev

  • Send private message

3

Monday, May 26th 2014, 10:31pm

Die Funktion event.disallow findet er nicht :/

LG Scarface88

Abgegrieft

User / Kunde

  • "Abgegrieft" is male

Posts: 674

Location: Waschraum

  • Send private message

4

Monday, May 26th 2014, 10:55pm

lädt

Scarface88

User / Kunde

  • "Scarface88" is male
  • "Scarface88" started this thread

Posts: 391

Location: 127.0.0.1

Occupation: Not just a normal Dev

  • Send private message

5

Monday, May 26th 2014, 11:09pm

Vielen Dank! Werd ich gleich mal ausprobieren ;)

LG Scarface88

Stuppsman

User / Kunde

Posts: 2,766

Thanks: 25

  • Send private message

6

Tuesday, May 27th 2014, 12:15am

"wartung" ist schon ein boolean, dahinter == true/false zu schreiben ist recht sinnfrei.. da reicht if (wartung) statt if (wartung == true)

Bist du dir sicher, dass du nich einfach nur true/false verpeilt hast in Zeile 33?
Nein, ich hab kein Skype.. bei Interesse an einer privaten Unterrichtsstunde, wende dich bitte direkt an mein Team! 8)

Scarface88

User / Kunde

  • "Scarface88" is male
  • "Scarface88" started this thread

Posts: 391

Location: 127.0.0.1

Occupation: Not just a normal Dev

  • Send private message

7

Thursday, May 29th 2014, 5:14pm


"wartung" ist schon ein boolean, dahinter == true/false zu schreiben ist recht sinnfrei.. da reicht if (wartung) statt if (wartung == true)

Bist du dir sicher, dass du nich einfach nur true/false verpeilt hast in Zeile 33?



VIEEEEELEN DANK! Es klappt nun ;)

LG Scarface88

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

Similar threads