Minecraft Spigot Ban Event?
Hey Leute,
ich code gerade ein Varo Plugin aber beim Bannen des Spielers beim Tod habe ich ein Problem.
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
if(p.isDead()) {
p.getPlayer().kickPlayer("§4Du bist gestoreben!");
p.getPlayer().setBanned(true);
}
}
Wie ihr seht ist "p.getPlayer().setBanned(true);" rot unterstrichen und ich komme nicht weiter.
Also: Beim ersten Tod des Spielers soll er gebannt werden.
Danke für die Hilfe :D
4 Antworten
Mach's so:
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
if(p.isDead()) {
p.getPlayer().kickPlayer("§4Du bist gestoreben!");
public void onLogin(PlayerLoginEvent e)
e.disllow(result.KLICK_OTHER, "[Die Nachricht die angezeigt werden soll wenn der Spieler den Server Beitritt]" + [Deine Main Klasse].cfg.getString(e.getPlayer().getName()) + "[nochmal ne Nachricht]");
}
}
Dann noch deine Main classes muss am Anfang
public static File folder = new File("plugins/[Dein plugin Name]"
public static File = new File("plugins/[Dein pl name]/Ban.yml")
public static YamlConfiguration cfg = YamlConfiguration.loadConfiguration(file);
public static void save() {
try {
cfg.save(file);
}catch (IOException e) {
e.printStackTrace():
}
}
private static main plugin;
@Override
public void onDisable() {
}
@Override
public void onEnable() {
loadConfig();
PluginManager pm =Bukkit.getPluginManager();
pm.registerEvents(new [Deine ban class](),this);
Und am Ende deiner Main Klasse
Public void loadCinfig() {
FileConfiguration cfg = this.getConfig();
cfg.options().copyDefault(true);
this.saveConfig();
}
}
Hab alles auf dem handy geschrieben und viel Mühe gegeben 😅
Bei Fehler schreib mir per Privatnachricht
Ersteinmal danke für den Code xD Och hab jetzt ein bisschen rumprobiert und hab eine einfachere Lösung gefunden c:
Bukkit.getBanList(BanList.Type.Normal).addBan(p.getName(), "Du wurdest gebannt", null, null)
Okay viel Glück weiterhin und vielen Dank für den Stern 😙😅
Wieso getPlayer() wenn p schon der Player ist?
Kommt vielleicht eeetwass spääätt, aber egaalll xDD
Mach doch einfach so:
@SuppressWarnings("deprecation")
@EventHandler
public void onDeath(PlayerDeathEvent e) {
Player p = e.getEntity();
if(p.isDead()) {
p.kickPlayer("§4Du bist gestorben!");
p.setBanned(true);
}
}
Das ist rot unterstrichen weil du p.getPlayer() machst.
Wieso zur Hölle willst du den Player getten wenn du ihn schon vorher definiert hast
Selbst wenn ich p.setBanned(true);
mache, wird es unterstrichen.
Und, wie gesagt, ich hab mich verschreiben c:
setBanned geht doch seit der 1.12 nicht mehr oder täusche ich mich?
Wird es Rot Unterstrichen oder Rot durchgestrichen?.
Bei Rot durchgestrichen kannst du es schon noch verwenden. Rot unterstrichen sollte eigentlich nicht der Fall sein, es sein denn du benutzt 1.12 wovon ich jetzt aber mal nicht ausgehe.
Aber wie bereits gesagt worden ist währe die "elegantere" Lösung den Spieler zu Kicken und in einer File/Database zu speichern, um dann das Joinen zu verweigern. Dann kannst du auch schöne Messages machen und weitere Infos zum Ban etc speichern.
Ja hab ich mir gedacht und Mal den Code gepostet und das auf dem handy😐😅😂
Hahah meine Finger währen abgefallen. Aber versteh ich da was falsch oder würde bei deinem Code einfach jeder der joinen will direkt gekickt werden?
Nein, die Funktion p.setBanned würde einfach nur von Bukkit entfernt und man muss es umständlicher Lösen. Um deine Frage zu beantworten wenn man nur die Bann class hat schon. Aber ich bin ausgegangen das der Fragensteller in der class noch drin stehen hat weswegen er gebannt wird also wenn man's so übernimmt dann sollte es eh nen Fehler ausgeben 😅
Hoffe es hilft hab über 20 min gebraucht das zu schreiben