Skocz do zawartości
  • 0

Ban!


C4LLM3P3T3R

Pytanie

Player bannedpl = 



                bannedpl.kickPlayer( ChatColor.RED + "C4LLM3P3T3R TEST SERVER: \n You wanted it lol xd");
                ArrayList<String> players = new ArrayList<String>();
                players.add(bannedpl.getDisplayName());
                CustomConfigFile.get().set("Banned", players);
                CustomConfigFile.save();
                CustomConfigFile.reload();

Jak zapisać argument pierwszy do typu player? W sensie Player bannedpl = arg[0];? 

Odnośnik do komentarza
https://skript.pl/temat/35949-ban/
Udostępnij na innych stronach

5 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Player player = Bukkit.getPlayer(args[0]);

Poza tym nie wiem czy dobrze rozumiem, ale tworzysz nową pustą listę, dodajesz do niej gracza, a następnie ją zapisujesz.

 

Nie jestem pewny co do działania tego, ponieważ zapisujesz ciągle nową listę z jednym graczem. Więc jeśli następnego gracza zbanujesz, to poprzedni dostanie unbana.

Edytowane przez GoblicPL
Odnośnik do komentarza
https://skript.pl/temat/35949-ban/#findComment-230511
Udostępnij na innych stronach

  • 0
29 minut temu, GoblicPL napisał:

Player player = Bukkit.getPlayer(args[0]);

Poza tym nie wiem czy dobrze rozumiem, ale tworzysz nową pustą listę, dodajesz do niej gracza, a następnie ją zapisujesz.

 

Nie jestem pewny co do działania tego, ponieważ zapisujesz ciągle nową listę z jednym graczem. Więc jeśli następnego gracza zbanujesz, to poprzedni dostanie unbana.

Zapisuję to do pliku konfiguracyjnego, nie dostanie unbana. 

Spoiler

 


if (command.getName().equals("banplayer")){
                if (sender instanceof Player){

                    Player offlinePlayers = Bukkit.getPlayer(args[0]);



                    offlinePlayers.kickPlayer( ChatColor.RED + "C4LLM3P3T3R TEST SERVER: \n You wanted it lol xd");
                    ArrayList<String> players = new ArrayList<String>();
                    players.add(offlinePlayers.getDisplayName());
                    CustomConfigFile.get().set("Banned", players);
                    CustomConfigFile.save();
                    CustomConfigFile.reload();



                }else{
                    Player offlinePlayers = Bukkit.getPlayer(args[0]);



                     offlinePlayers.kickPlayer( ChatColor.RED + "C4LLM3P3T3R TEST SERVER: \n You wanted it lol xd");
                    ArrayList<String> players = new ArrayList<String>();
                    players.add(( offlinePlayers).getDisplayName());
                    CustomConfigFile.get().set("Banned", players);
                    CustomConfigFile.save();
                    CustomConfigFile.reload();
                }




        }

Otrzymuję błąd w konsoli. Już raz tak miałem tylko w innym przypadku. 

Spoiler

 


[20:21:34 WARN]: Unexpected exception while parsing console command "banplayer C4LL"
org.bukkit.command.CommandException: Unhandled exception executing command 'banplayer' in plugin ExtendedCommands v1.0
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.NullPointerException
        at me.c4llm3p3t3r.yt.extendedcommands.ExtendedCommands.onCommand(ExtendedCommands.java:92) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        ... 8 more

 

Update! Jako gracz, owszem banuje, lecz jako konsola, wywala błąd

Edit 2: Okej, udało mi się to zrobić tylko banuje graczy tylko tych którzy są online. Da się jakoś zrobić aby banowało również graczy którzy nigdy na serwerze nie byli?

Edytowane przez C4LLM3P3T3R
Odnośnik do komentarza
https://skript.pl/temat/35949-ban/#findComment-230512
Udostępnij na innych stronach

  • 0

Jaki jest sens tworzyć plugin na coś, co zostało już stworzone setki razy? Chyba, że dla nauki. Ale w takim razie solidnie poducz się podstaw Javy.

21 godzin temu, C4LLM3P3T3R napisał:

Player offlinePlayers = Bukkit.getPlayer(args[0]);

Nazwanie obiektu offlinePlayer nie powoduje, że z obiektu Player stanie się OfflinePlayer.
Robisz to źle. Użyj https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Server.html#getOfflinePlayer-java.util.UUID-

Dwa.
Pobieranie z pomocą args[0] jakiegokolwiek obiektu nie ma sensu - wystarczy, że zapiszesz stringa w odpowiednim pliku. I tyle.
Jedynie gdy chodzi o kickowanie zbanowanego gracza, sprawdź czy dany nick jest online - jeśli tak, zrób to i go wywal.

Trzy.
To co robisz to wynajdywanie koła na nowo - Spigot posiada odpowiednie API tyczące się banów. https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/BanList.html
To z niego powinieneś skorzystać.

Edytowane przez PrimeGames
Odnośnik do komentarza
https://skript.pl/temat/35949-ban/#findComment-230556
Udostępnij na innych stronach

  • 0
W dniu 11.12.2019 o 17:57, PrimeGames napisał:

Jaki jest sens tworzyć plugin na coś, co zostało już stworzone setki razy? Chyba, że dla nauki. Ale w takim razie solidnie poducz się podstaw Javy.

Nazwanie obiektu offlinePlayer nie powoduje, że z obiektu Player stanie się OfflinePlayer.
Robisz to źle. Użyj https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Server.html#getOfflinePlayer-java.util.UUID-

Dwa.
Pobieranie z pomocą args[0] jakiegokolwiek obiektu nie ma sensu - wystarczy, że zapiszesz stringa w odpowiednim pliku. I tyle.
Jedynie gdy chodzi o kickowanie zbanowanego gracza, sprawdź czy dany nick jest online - jeśli tak, zrób to i go wywal.

Trzy.
To co robisz to wynajdywanie koła na nowo - Spigot posiada odpowiednie API tyczące się banów. https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/BanList.html
To z niego powinieneś skorzystać.

Mimo tego api nie chcę go używać ze względu na niefajny ban message

Odnośnik do komentarza
https://skript.pl/temat/35949-ban/#findComment-230816
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...