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

Banen

AdriBloober

Redstoneengineer
Mitglied seit
11 Juli 2017
Beiträge
32
Minecraft
AdriBloober
Ich wollte mal wissen wie man Leute banen kann mit Grund(In Java nat.)
???
 

banyan

Redstoneengineer
Mitglied seit
25 Dezember 2014
Beiträge
34
http://lmgtfy.com/?q=bukkit+bannen

2 Sekunden Google, Antwort gegeben.

Trotzdessen für alle Suchfaulen;

Code:
p.setBanned(true); <--- (p = Spieler)
p.kickPlayer(); <--- Da das obere zwar übernommen wird, jedoch nicht "ausgeführt" wird (vom Sinn her)
Das verändert den "Grund" jedoch in keinster Weise, sind nur die Befehle um jemanden vom Server auszuschließen!

MfG
 

KillawOrCarel

Kuhfänger
Osterei Experte
Mitglied seit
15 Juli 2017
Beiträge
78
Das verändert den "Grund" jedoch in keinster Weise, sind nur die Befehle um jemanden vom Server auszuschließen!
Hier wird der Grund nicht gesetzt, also ist diese Antwort nicht für "Suchfaule" sondern von Menschen, die sich besser fühlen wollen, weil sie Google kennen. Bravo! Das ist sowas von unhilfreich, du solltest erwähnen bei GuteFrage zu posten.

Um Personen zu sperren bietet die Spigot API derzeit keine* Möglichkeit an. Es gibt hierfür aber einen einfachen Workaround aus My Yak-ler**, indem die Vanilla Befehle verwendet werden (Ob dies auch für Spieler funktioniert, die offline sind, habe ich nicht getestet).

Java:
@Override
public void invoke(final Player player, final Object reason) {
    final String cmd = String.format(
        "minecraft:ban %s %s", player.getName(), reason
    );
    log.info(String.format("Executing Command %s", cmd));
    Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
}
* Siehe auch hier, wo es derzeitig keinen UUID Typen gibt.
** Zum Zeitpunkt dieses Beitrages nicht veröffentlicht, sollte sich dies geändert haben, so findet man dies in meiner Signatur
 

JTK222

Threadripper
Osterei Experte
Mitglied seit
5 September 2013
Beiträge
1.128
Minecraft
JTK222
Beim Player logged in event abfragen ob der Spieler aufgrund eines Banns wieder gekickt wird und per event.setKickMessage() setzt du dann die Nachricht.
Ich bin mir nicht sicher ob es evtl. auch ein Kick Event gibt dass man beim erstem ban nutzen muss.
Sobald sich jemand jedoch wieder einloggen will kannst du demjenigen so die nachricht anzeigen.
So musst du aber die Gründe in Kombination mit der UUID speichern.

(Wenn du die Standard ban Dateien benutzt kannst du dir eine simple Methode schreiben die die UUID des Spieler unten dran anhängt.
Spart auch den unsauberen weg einen Befehl auszuführen).

Edit: So macht es Minecraft übrigens:
Code:
GameProfile gameprofile = server.getPlayerProfileCache().getGameProfileForUsername(args[0]);
UserListBansEntry userlistbansentry = new UserListBansEntry(gameprofile, (Date)null, sender.getName(), (Date)null, s);
server.getPlayerList().getBannedPlayers().addEntry(userlistbansentry);
EntityPlayerMP entityplayermp = server.getPlayerList().getPlayerByUsername(args[0]);
entityplayermp.connection.disconnect(new TextComponentTranslation("multiplayer.disconnect.banned", new Object[0]));
Ich weiß nicht inwiefern Spigot zugriff auf diese Methoden erlaubt bzw. wie nah es am original ist.
Aber damit müsste es 100% gehen.
 

AdriBloober

Redstoneengineer
Mitglied seit
11 Juli 2017
Beiträge
32
Minecraft
AdriBloober
Wie ist das mit dem Layout, kannt du mal ein bsp. schicken.
Ich meine Farben und zeilen!
 

Leonard held

Minecrafter
Mitglied seit
13 Januar 2016
Beiträge
5
Also du könntest es über nen Command machen und dann einfach bei jedem Rejoin überprüfen ob er gebannt ist

PHP:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) //Methode erstellen
{

if (cmd.getName.equalsIgnoreCase("banen")) {  // Command erstellen
  Player p = (Player) sender;  //Variable erstellen 
  p.setBanned(true);   //Spieler Banen
  p.kickPlayer("<Grund>");   // Spieler Kicken 

}
return false;
}

public void onJoin(PlayerJoinEvent e) {    //Join Event 
Player p = e.getPlayer;    //Variable
if (p.isBanned == true) {   // Überprüfen ob der Spieler Gebannt ist
   p.kickPlayer("<Grund>");  //Spieler Kicken
} else {  //wenn nicht dann wird weiter gemacht 
   p.setJoinMessage("<Message>") 
   ...
}
}
Ist jetzt nicht der beste aber sollte reichen als Beispiel :)
Mit dem Code bannst du dich selber. Aber du könntest jetzt mit den Argumenten arbeiten und den Spieler den du nach dem Command angibst bannen Lassen. Da ich das gerade Freihand geschrieben habe kann ich dir gerade nicht alles geben und kann es auch nicht Garantieren aber es müsste soweit eigentlich passen. Du musst das halt noch ergänzen wie du es benötigst. Du kannst auch um eine Gleiche Ban Message zu haben alles in einer Config speichern.

Wenn du noch Hilfe Brauchst kannst du mir schreiben :)
 
Zuletzt bearbeitet:

Twitter

Allgemein
Hilfe Benutzer
    maybeto maybeto: wir sollten Spenden sammeln, um @Stern☆ ne Tastatur zu kaufen
    Oben