kapi. 332 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 (edytowane) Witam, jestem w trakcie pisania pluginu na chat i mam póki co samego Maina i powiedzcie mi czy jest to dobrze napisane? Spoiler package pl.kacper.beChat; import org.bukkit.Bukkit; import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ private Player p; private String chat; public String getChat() { return chat; } public void setChat(String chat) { this.chat = chat; } public void onEnable(){ Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Enabled"); } public void onDisable() { Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Disabled"); } public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ // Wszystkie prawa zastrzeżone if(cmd.getName().equalsIgnoreCase("chat")){ // Wszystkie prawa zastrzeżone setP(Bukkit.getPlayerExact(args[0])); if(Bukkit.getPlayerExact(args[0]).hasPermission("beChat.usecommand")) { p.sendMessage("beChat!"); p.sendMessage("/chat on - wlacz chat"); p.sendMessage("/chat off - wylacza chat"); }else{ p.sendMessage("Nie posiadasz uprawnien"); } if (arg == "on"); setChat("true"); p.sendMessage("Wlaczyles chat!"); Bukkit.broadcastMessage("Chat zostal wlaczony!"); return true; }else{ if (arg == "off"); setChat("false"); p.sendMessage("Wylaczyles chat!"); Bukkit.broadcastMessage("Chat zostal wylaczony!"); return true; } } public Player getP() { return p; } public void setP(Player p) { this.p = p; } } Potem będę jeszcze pisał event na blokowanie chatu, aby nie można było pisać. @Ixidi Edytowane 28 października 2017 przez KCPRRR Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/ Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 package pl.kacper.beChat; package tylko z małych I zdecyduj się czy używasz tabów czy spacji... formatuj kod, każde IDE ma taką opcję public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ // Wszystkie prawa zastrzeżone if(cmd.getName().equalsIgnoreCase("chat")){ // Wszystkie prawa zastrzeżone co to ma znaczyć te komentarze xD if (arg == "on"); średnik po ifie więc zakończyłeś ifa, a else niżej jest do linijki z sprawdzeniem nazwy komendy. Podobnie z off. Jak byś formatował kod to by było widać, a każde IDE ma od tego nawet skrót klawiszowy. (nie znam do eclipse a pewnie używasz) Do tego porównywanie stringów == jest zazwyczaj wynikiem błędu, bo nie porównujesz czy są takie same, tylko czy to ten sam string, a to różnica. powinno być equals. Nie nazywaj zmiennych, a tyb bardziej getterów/setterów jednoliterkowcami, bo to nic nie mówi. Do tego po co są ci tam te zmienne? i dlatego ten chat to zmienna typu String a nie boolean? Ani trochę nie rozumiem po co ci tam zmienna "p" z graczem, szczególnie że może być tylko jedna na cały plugin. I po co te wiadomości w onEnable/Disable, bukkit i tak wysyla takie. Więc ogólnie wszystko bez sensu Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153353 Udostępnij na innych stronach Więcej opcji udostępniania...
0 kapi. 332 Opublikowano 28 października 2017 Autor Udostępnij Opublikowano 28 października 2017 (edytowane) Miałem kilka żarówek świecących się, a nie umiem ręcznie naprawiać to skorzystałem przez to większość getterów i setterów. W takim razie jak to poprawić/naprawić oraz mam kolejny błąd z kolejną klasą Spoiler package pl.kacper.bechat; import org.bukkit.command.CommandSender; import org.bukkit.event.player.AsyncPlayerChatEvent; public class FunctionForChat { public void playerChat(AsyncPlayerChatEvent e){ // Tu jak sprawdzić czy string chat jest ustawiony na false // Tu jak zablokowac chat dla gracza ((CommandSender) e).sendMessage("Chat jest zablokowany"); } } Edytowane 28 października 2017 przez KCPRRR Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153364 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 To przy każdej żarówce jest wyjaśnienie, jak nie rozumiesz to googlowac i jak nie znajdziesz nic co rozumiesz to piszesz na forum najlepiej podając co znalazłeś sam by nikt ci tego napisał ponownie A tak to zacznij od jakiś poradników samej Javy, bo ewidentnie nie ogarniasz nawet składni i podstawowych zasad. Tak samo nie znasz podstaw bukkita, że klasa z listenerami musi implementować interfejs Listener, I że metody co są listenerami muszą mieć adnotacje event handler. A tak to najlepiej mieć w tej klasie finalną zmienna z instancja głównej klasy przekazywaną przez konstruktor, tylko to pewnie musisz doczytać o samej javie by wiedzieć jak tego użyć. Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153373 Udostępnij na innych stronach Więcej opcji udostępniania...
0 KrejzolekPRO 600 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 Dlaczego Stringi robisz jako booleany? Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153374 Udostępnij na innych stronach Więcej opcji udostępniania...
0 LloydPL 436 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 (edytowane) if(chat.equals("false"){ e.setCancelled(true); e.getPlayer().sendMessage("Chat jest zablokowany"); } generalnie nie ma sensu robić ze stringów T/F bo od tego jest boolean i wtedy by to wyglądało tak if(!chat){ (lub if(chat == false){ nw czy można tak zaprzeczyć wykrzyknikiem ) Edytowane 31 października 2017 przez Lloyd PL () Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153378 Udostępnij na innych stronach Więcej opcji udostępniania...
0 kapi. 332 Opublikowano 28 października 2017 Autor Udostępnij Opublikowano 28 października 2017 @Lloyd PL a jak zapisać wtedy ten "boolean"? Odbiegając od tematu; getPlayer cannot be resolved or is not a field Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153383 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 1 minutę temu, KCPRRR napisał: @Lloyd PL a jak zapisać wtedy ten "boolean"? Odbiegając od tematu; getPlayer cannot be resolved or is not a field jak pytasz o takie rzeczy to ewidentnie znak że musisz poczytać o podstawach samego języka, bo nie możesz tu pytać o każdą głupotę, to podstawowa umiejętność - umieć szukać takich rzeczy. Tak trudno w google dać java boolean czy coś? A błąd masz chyba oczywisty, nie ma takiego pola/metody czy co tam robiles Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153384 Udostępnij na innych stronach Więcej opcji udostępniania...
0 kapi. 332 Opublikowano 28 października 2017 Autor Udostępnij Opublikowano 28 października 2017 @GotoFinal dla was jest to oczywiste, lecz ja dopiero zaczynam ;/ Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153386 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 28 października 2017 Udostępnij Opublikowano 28 października 2017 (edytowane) 59 minut temu, KCPRRR napisał: @GotoFinal dla was jest to oczywiste, lecz ja dopiero zaczynam ;/ nie, ty pytasz się o gotowe rozwiązanie teraz, zamiast samemu poszukać, zobaczyć przykłady itd. To różnica, pokaż swoja zaangażowanie to i my pomożemy Edytowane 28 października 2017 przez GotoFinal kapi., SzymoonDev i bopke 2 1 Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153391 Udostępnij na innych stronach Więcej opcji udostępniania...
0 kapi. 332 Opublikowano 29 października 2017 Autor Udostępnij Opublikowano 29 października 2017 Nie wiem jak to naprawić, więc proszę o naprawienie kodu... Podczas wrzucenia go na serwer występują błędy... [11:48:13 INFO]: Set PluginClassLoader as parallel capable [11:48:13 ERROR]: Could not load 'plugins\testowy chat.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: Cannot find main class `pl.kacper.bechat' at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:66) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:292) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:202) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:561) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at java.lang.Thread.run(Unknown Source) [?:1.8.0_144] Caused by: java.lang.ClassNotFoundException: pl.kacper.bechat at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_144] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144] at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_144] at java.lang.Class.forName0(Native Method) ~[?:1.8.0_144] at java.lang.Class.forName(Unknown Source) ~[?:1.8.0_144] at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] ... 7 more Main(bez zmian); Spoiler package pl.kacper.bechat; import org.bukkit.Bukkit; import org.bukkit.command.*; import org.bukkit.entity.Player; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ private Player p; private String chat; public String getChat() { return chat; } public void setChat(String chat) { this.chat = chat; } public void onEnable(){ Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Enabled"); } public void onDisable() { Bukkit.getConsoleSender().sendMessage("[beChat-Alert] » Disabled"); } public boolean onCommand(CommandSender sender, Command cmd, String arg, String[] args){ if(cmd.getName().equalsIgnoreCase("chat")){ setP(Bukkit.getPlayerExact(args[0])); if(Bukkit.getPlayerExact(args[0]).hasPermission("beChat.usecommand")) { p.sendMessage("beChat!"); p.sendMessage("/chat on - wlacz chat"); p.sendMessage("/chat off - wylacza chat"); }else{ p.sendMessage("Nie posiadasz uprawnien"); } if (arg == "on"); setChat("true"); p.sendMessage("Wlaczyles chat!"); Bukkit.broadcastMessage("Chat zostal wlaczony!"); return true; }else{ if (arg == "off"); setChat("false"); p.sendMessage("Wylaczyles chat!"); Bukkit.broadcastMessage("Chat zostal wylaczony!"); return true; } } public Player getP() { return p; } public void setP(Player p) { this.p = p; } public void playerChat(AsyncPlayerChatEvent e){ if (chat.equals("false")){ e.setCancelled(true); e.getPlayer().sendMessage("Chat jest zablokowany"); } } } plugin.yml: Spoiler name: beChat version: 1.0 description: This plugin is so 31337. author: KCPRRR main: pl.kacper.bechat database: false commands: chat: description: Zarzadzanie chatem! aliases: [czat] permission: beChat.usecommand usage: Uzyj /chat <on/off> permissions: beChat.usecommand: description: Daje dostep do komendy /chat Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153406 Udostępnij na innych stronach Więcej opcji udostępniania...
0 GotoFinal 195 Opublikowano 29 października 2017 Udostępnij Opublikowano 29 października 2017 w plugin.yml musisz podać nazwę głównej klasy, a ty podałeś tylko nazwę paczki, więc musisz dodać jeszcze klase. moje.package.GłównaKlasa a tak to dalej nie poprawiłeś głównej klasy tak jak pisałem w pierwszym poście... Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153437 Udostępnij na innych stronach Więcej opcji udostępniania...
0 kapi. 332 Opublikowano 29 października 2017 Autor Udostępnij Opublikowano 29 października 2017 Proszę o pomoc mam kolejne błędy [16:34:35 INFO]: Plugins (1): beChat >chat [16:34:38 WARN]: Unexpected exception while parsing console command "chat" org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at java.lang.Thread.run(Unknown Source) [?:1.8.0_144] Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at pl.kacper.bechat.Main.onCommand(Main.java:29) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] ... 8 more >chat on [16:34:42 WARN]: Unexpected exception while parsing console command "chat on" org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at java.lang.Thread.run(Unknown Source) [?:1.8.0_144] Caused by: java.lang.NullPointerException at pl.kacper.bechat.Main.onCommand(Main.java:30) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] ... 8 more >chat off [16:34:45 WARN]: Unexpected exception while parsing console command "chat off" org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin beChat v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:416) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:379) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [Silnik.jar:git-PaperSpigot-978982e-12698ea] at java.lang.Thread.run(Unknown Source) [?:1.8.0_144] Caused by: java.lang.NullPointerException at pl.kacper.bechat.Main.onCommand(Main.java:30) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Silnik.jar:git-PaperSpigot-978982e-12698ea] ... 8 more Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153473 Udostępnij na innych stronach Więcej opcji udostępniania...
0 SzymoonDev 21 Opublikowano 29 października 2017 Udostępnij Opublikowano 29 października 2017 4 godziny temu, KCPRRR napisał: Caused by: java.lang.ArrayIndexOutOfBoundsException: 0 at pl.kacper.bechat.Main.onCommand(Main.java:29) ~[?:?] Błąd znajduje się w klasie Main w 29 linijce. Kurczę, weź to całkiem wyrzuć i napisz od nowa. Nie potrzebne metody, po co jakieś setP, getP? To tylko prosty plug-in na chat. Ustawiasz private boolean chat; i potem zmieniasz chat = false/true I tak już za dużo ci odpowiedziałem, zacznij sam szukać błędów i rozwiązań to szybko się nauczysz. Odnośnik do komentarza https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/#findComment-153520 Udostępnij na innych stronach Więcej opcji udostępniania...
Pytanie
kapi. 332
Witam, jestem w trakcie pisania pluginu na chat i mam póki co samego Maina i powiedzcie mi czy jest to dobrze napisane?
Potem będę jeszcze pisał event na blokowanie chatu, aby nie można było pisać. @Ixidi
Edytowane przez KCPRRROdnośnik do komentarza
https://skript.pl/temat/22540-wasze-zdanie-na-temat-mojego-kodu/Udostępnij na innych stronach
13 odpowiedzi na to pytanie
Rekomendowane odpowiedzi