TheRedCraft Geschrieben 29. April 2017 Share Geschrieben 29. April 2017 Hallo ich habe eine frage denn ich habe einen ban manager programmiert allerdings Funktioniert er nich so wie er soll, denn eigentlich get nur der unban befehl nicht hier der code meiner main package de.thecraft.simpelban.main; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { static List<String> bans = new ArrayList<String>(); File file = new File("plugins/Bans", "banns.yml"); FileConfiguration cfg = YamlConfiguration.loadConfiguration(file); @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { Player p = (Player) sender; if (cmd.getName().equalsIgnoreCase("ban")) { if (args.length == 1) { if (sender instanceof Player) { if (p.isOp() || p.hasPermission("ban.ban")) { if (!(sender.getName() == sender.getName())) { p.sendMessage("Du kannst dich nicht selber bannen"); } else { p.sendMessage("Du kannst dich nicht selber bannen"); String ban = args[0]; Player target = Bukkit.getPlayer(args[0]); bans.add(ban); target.kickPlayer("§cDu Wurdest Gebannt"); } } } else { sender.sendMessage("Das können nur spieler"); } } else { p.sendMessage("Nutze /ban <Spielername>"); } } if (cmd.getName().equalsIgnoreCase("unban")) { if (args.length == 1) { if (sender instanceof Player) { if (p.isOp() || p.hasPermission("ban.unban") || p.hasPermission("ban.*")) { String unban = args[0]; bans.remove(unban); p.sendMessage("Der Spieler " + unban + " wurde entbannt"); }else{ p.sendMessage("Das Darfst du nicht"); } } } else { p.sendMessage("Nutze /unban <Spielername>"); } } return super.onCommand(sender, cmd, label, args); } @Override public void onDisable() { Bukkit.getServer().getConsoleSender().sendMessage("§4Ban manager Wurde erfolgreich Disabled"); cfg.set("Bans.Player", bans); try { cfg.save(file); } catch (IOException e) { e.printStackTrace(); } super.onDisable(); } @Override public void onEnable() { Bukkit.getServer().getConsoleSender().sendMessage("§4Ban manager Wurde erfolgreich Geladen"); bans = cfg.getStringList("Bans.Player"); Bukkit.getPluginManager().registerEvents(new Event_PreJoinListener(), this); super.onEnable(); } } Es funktioniert so die spieler "Die gebannt sind" werden auf eine ArrayList gespeichert die ArrayList wird in einer datei die "banns.yml" gespeichert und bei neustarten wieder geholt aber wenn ich dan den unban befehl eingebe, dan wird der spieler aus der ArrayList nicht wieder entfernt warum ? und noch hier der code von meinen PlayerPreLoginEvent: package de.thecraft.simpelban.main; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPreLoginEvent; @SuppressWarnings("deprecation") public class Event_PreJoinListener implements Listener{ @EventHandler public void onPreJoin(PlayerPreLoginEvent e){ if(Main.bans.contains(e.getName())){ e.disallow(PlayerPreLoginEvent.Result.KICK_OTHER, "§cDu wurdest gebannt."); } } } Hoffe auf viele antworten Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Baustein Geschrieben 30. April 2017 Share Geschrieben 30. April 2017 In deinem Code geht's ja drunter und drüber. Kannst du mir zum Beispiel mal erklären, was if (!(sender.getName() == sender.getName())) { soll? Kann es sein, dass du bei jedem Bann "Du kannst dich nicht selber bannen" geschrieben bekommst? Und warum speicherst du die Spielernamen, und nicht die UUIDs? Ein Spieler kann sich einfach umbenennen und ist wieder entbannt. Liebe Grüße, Baustein Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheRedCraft Geschrieben 5. Mai 2017 Autor Share Geschrieben 5. Mai 2017 Am 30.4.2017 um 14:27 schrieb Baustein: In deinem Code geht's ja drunter und drüber. Kannst du mir zum Beispiel mal erklären, was if (!(sender.getName() == sender.getName())) { soll? Kann es sein, dass du bei jedem Bann "Du kannst dich nicht selber bannen" geschrieben bekommst? Und warum speicherst du die Spielernamen, und nicht die UUIDs? Ein Spieler kann sich einfach umbenennen und ist wieder entbannt. Liebe Grüße, Baustein Nein ich bekomme nicht immer nur die ausage das man sich selber bann en kann Der Code if (!(sender.getName() == sender.getName())) { heißt das der wenn der sender nicht so heißt wie der sender das ist daführ das man sich nicht selber bannen kann und wie ich mir die uuids holen, weiß ich nicht aber wenn du es kannst, kannst du mir ja schreiben. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Joey Geschrieben 5. Mai 2017 Share Geschrieben 5. Mai 2017 (bearbeitet) Dann muss du aber den Inhalt des Arguments abfragen, da du den Spieler, den du bannen möchtest ja als Argument übergibst. So wie du es jetzt hast wird immer der Name mit dem der den Command eingibt, mit dem Namen des Spielers der den Command eingibt verglichen (Ist halt immer gleich, ist ja auch die gleicher variable). Also so if (!sender.getName().equals(args[0])) Und so bekommst du die UUID: player.getUniqueId().toString() PS: Außerdem könntest du am Anfang abfragen, ob der Sender überhaupt ein Spieler ist, so wie du es jetzt hast kannst du den Ban cmd nicht per Console ausführen bearbeitet 5. Mai 2017 von Joey Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
TheRedCraft Geschrieben 5. Mai 2017 Autor Share Geschrieben 5. Mai 2017 ok danke aber wie kann ich das problem als gelöst makieren? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Baustein Geschrieben 6. Mai 2017 Share Geschrieben 6. Mai 2017 Brauchst du nicht. Freut mich, dass dein Problem gelöst ist. Liebe Grüße, Baustein Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden