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

Plugin das Sonder /und Leer - zeichen im Playername verbietet

Masiwo

Redstoneengineer
Registriert
28 April 2013
Beiträge
40
Diamanten
0
Minecraft
blotiu
Hallo,

ich bin gerade dabei ein Plugin zu schreiben , dass ein / und Leerzeichen im Namen verbieten soll. Am besten dies dann im Login Event.
Das ganze sieht dann am Ender ungefähr so aus :
Code:
	public void playerLoginEvent(PlayerLoginEvent e)
	{
		Player p = e.getPlayer();
		
		if p.getName() contains ("/"),(" "){
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
			{}
		
	}
	

}

Leider ist irgendwas an der if Abfrage falsch ... ;)
Soll ich das evtl mit einer Collection machenoderso ?
Vlt kann mir ja jmd helfenn ... ;)

Danke für eine Antwort

LG
Daniel
 
Zuletzt bearbeitet:
G

GermanUbuntu

Guest
Hallo,

ich bin gerade dabei ein Plugin zu schreiben , dass ein / und Leerzeichen im Namen verbieten soll. Am besten dies dann im Login Event.
Das ganze sieht dann am Ender ungefähr so aus :
Code:
	public void playerLoginEvent(PlayerLoginEvent e)
	{
		Player p = e.getPlayer();
		
		if p.getName() contains ("/"),(" "){
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
			{}
		
	}
	

}

Leider ist irgendwas an der if Abfrage falsch ... ;)
Soll ich das evtl mit einer Collection machenoderso ?
Vlt kann mir ja jmd helfenn ... ;)

Danke für eine Antwort

LG
Daniel
Code:
	public void playerLoginEvent(PlayerLoginEvent e){
		Player p = e.getPlayer();
		
		if (p.getName().contains("/") || p.getName().contains(" ")){
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
		
	        }
}
Versuch das ma so ;)





Hier Deine Fehler:
Code:
	public void playerLoginEvent(PlayerLoginEvent e)
	{
		Player p = e.getPlayer();
		
		[U]if p.getName() contains ("/"),(" "){[/U]
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
			[U]{}[/U]
		
	}
	

}
 

Masiwo

Redstoneengineer
Registriert
28 April 2013
Beiträge
40
Diamanten
0
Minecraft
blotiu
Ok Danke vielmals,

leider geht es noch nicht wirklich...
Der Code gibt zwar keine Error Meldung mehr heraus aber ich kann mich noch mit z.B. blff 33fd einloggen.
Hier nochmal der Code:
Code:
	public void playerLoginEvent(PlayerLoginEvent e){
		Player p = e.getPlayer();
		
		if (p.getName().contains("/") || p.getName().contains(" ")){
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
		
	        }
}

Danke für eine Antwort
 

Masiwo

Redstoneengineer
Registriert
28 April 2013
Beiträge
40
Diamanten
0
Minecraft
blotiu
So ich hab das ganze jetzt so
Code:
package main;

import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
	public void onEnable()
	{
		this.getServer().getPluginManager().registerEvents(this, this);
	}
	
	public void onDisable()
	{}
	
	
	public void playerLoginEvent(PlayerLoginEvent e){
		Player p = e.getPlayer();
		
		if (p.getName().contains("/") || p.getName().contains(" ")){
	        e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
        }
}

		
}

Leider gehts immer noch nicht .
Mario wenn du es mal probiert hast kannst du mir ja evtl mal deine Klasse schicken.

Danke

LG

Daniel
 
G

games6471

Guest
Wieso überprüfst du eigentlich nur den Spielername auf Schrägstriche und Leerzeichen? Der Spieler können immer noch Namen verwenden, die für uns schwer einzugeben sind oder Probleme bei manchen Plugins verursachen. Ein Spielername kann aus Buchstaben (Groß- und Kleinschreibung), Zahlen und Unterstrichen bestehen und kann aus min. 2 bis max. 16 Zeichen bestehen. Anhand dieser Informationen kann man nun ein regulären Ausdruck bilden.

Code:
import java.util.regex.Pattern;

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;

public class TestListener implements Listener {

    //Wir werden diesen RegEx häufiger verwenden, also sollten wir den gleich compilieren.
    private final Pattern namePattern = Pattern.compile("\\w{2,16}$");

    @EventHandler
    public void onPlayerLogin(PlayerLoginEvent loginEvent) {
        final String playerName = loginEvent.getPlayer().getName();
        if (!namePattern.matcher(playerName).matches()) {
            loginEvent.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig!");
        }
    }
}
 

Masiwo

Redstoneengineer
Registriert
28 April 2013
Beiträge
40
Diamanten
0
Minecraft
blotiu
Danke für deinen Code

Danke schonmal, dass mit dem compilieren war keine schlechte Idee;).
Bevor du das ganze geschrieben hattest gings dann auch so :
Code:
	@EventHandler
	public void playerLoginEvent(PlayerLoginEvent e) {
		String name = e.getPlayer().getName();
		if (name.contains("/") || name.contains(" ")) {
			e.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Name ist ungültig");
			return;
		}
	}
}
Anscheinend war ich zu dumm return einzubauen .
Eigentlich kam ja eh kein Code mehr danach weswegen das eig unnötig ist aber naja.
Danke an alle guten Ratgeber.

LG

Daniel
 
Oben