Java Problem

Pytania i problemy
java, bukkit
szymhal
szymhal

Siema, dopiero uczę się pisać pluginy i zacząłem od czegoś prostego - plugin na moderowanie chatu (on, off, clear). Cały kod napisałem, wszystko działa, oprócz jednego. Tutaj macie kod: https://hastebin.com/raqoverona.java

Podczas wywoływania komendy chat, wszystko działa, lecz jak wpiszę komendę z jednym argumentem (on, off, clear) np: /chat on, to w konsoli pokazuje się bład:

[20:54:50 WARN]: Unexpected exception while parsing console command "chat asd" org.bukkit.command.CommandException: Unhandled exception executing command 'chat' in plugin SDevChat v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-1 .7.9-R0.2-208-ge0f2e95] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) ~[spigot.jar:git- Spigot-1.7.9-R0.2-208-ge0f2e95] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:767) ~[spigot .jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95] at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchServerCommand(CraftServer.java:753) [s pigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95] at net.minecraft.server.v1_7_R4.DedicatedServer.aB(DedicatedServer.java:326) [spigot.jar:git -Spigot-1.7.9-R0.2-208-ge0f2e95] at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:290) [spigot.jar:git- Spigot-1.7.9-R0.2-208-ge0f2e95] at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git- Spigot-1.7.9-R0.2-208-ge0f2e95] at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:gi t-Spigot-1.7.9-R0.2-208-ge0f2e95] at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git- Spigot-1.7.9-R0.2-208-ge0f2e95] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at pl.szymoondev.SDevChat.onCommand(SDevChat.java:43) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-1 .7.9-R0.2-208-ge0f2e95] ... 8 more

Caused by: java.lang.ArrayIndexOutOfBoundsException: 1

Nie mam pojęcia o co z tym błędem chodzi. Proszę o pomoc. P.S: Wie ktoś może jak włączyć pokazywanie numerów linijek w eclipse?

Timo
Timo Moderator forum.lvlup.pro

Linijki są domyślnie włączone, policz ręcznie. Podaj mi treść linijki numer 43 w klasie SDevChat.java . To w niej jest błąd.

szymhal
szymhal

f(args[1].equalsIgnoreCase("on")){

Timo
Timo Moderator forum.lvlup.pro

Czyli w tym jest błąd. W javie argument pierwszy to argument 0. Potem drugi to 1. Zaczyna się od zerowego. A w komendzie była wskazana ilość argumentów do 1, a według tego musiałyby być dwa. Zmień na if(args[0].equalsIgnoreCase("on")){ #prostybłąd

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Dodatkowo wcześniej trzeba sprawdzić czy jest tyle argumentów ;P

[code]if (args.length == 1 && args[0].equalsIgnoreCase("on")) {}[/code]

szymhal
szymhal

Okej, a tak poza tym, chat clear nie działa. Wysyła wiadomości, ale po nich nic na chacie nie można napisać, ani nie pokazuje wiadomosci ze chat zostal wyczyszczony.

@EDIT: Serwer przez to Chat clear został zlagowany i się wyłączył xd

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Mógłbyś dać cały kod? ;P

szymhal
szymhal

Kod: https://hastebin.com/oniqutumuf.java Listenera jeszcze nie robiłem, najpierw chce zrobić to.

Do tego komendy on i off nie działają 😄 Ale to chyba jest wina variablesu, więc zaraz ogarne

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

[code]while(int i = 0; i < 101; i++) { for(Player p : Bukkit.getOnlinePlayers()) { p.sendMessage(" "); } }[/code]

Brakowało zwiększania i

szymhal
szymhal

Nieznajomy11:

for(Player p : Bukkit.getOnlinePlayers()) { p.sendMessage(" ");

Pokazuje się bład w eclipse.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

No tak, ale pytanie jaki ;)

Dodatkowo zamiast rozdzielać i robić 2x kodu: [code]if (sender instanceof Player) { String senderName = ((Player) sender).getName(); } else { String senderName = "KONSOLE"; }[/code], czy coś podobnego :P

szymhal
szymhal

Błąd: https://scr.hu/61GGvO https://scr.hu/ZN66ee

PS: Kod będe przerabiać, narazie go piszę aby działał.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Mógłbyś zrobić screenshot razem z polem roboczym IDE? Bo tak średnio tutaj czytać :P

szymhal
szymhal
Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

[code]for(int i = 0; i < 101; i++) { for(Player p : Bukkit.getOnlinePlayers()) { p.sendMessage(" "); } }[/code] mały błąd, bo kopiowałem twój kod i o tym zapomniałem :P

szymhal
szymhal

Odpowiedzi nie było, naprawiłem. Zdublikowałem int.

@Nieznajomy11, a wiesz co jest może błędem tego chat on i off? Jak wpisuje chat on, to pokazuje się że chat jest już on, a jak wpisuję off, to cały czas moge to wpisywać i variable się nie zmienia.

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

= to ustawianie zmiennej, a == to porównywanie.

[code]if (chatStan) { sender.sendMessage(" §8» §7Czat jest juz §awlaczony§7."); } else { chatStan = true; sender.sendMessage(" §8» §7Czat zostal §awlaczony§7."); Bukkit.getServer().broadcastMessage(" §8» §7Czat zostal §awlaczony§7 przez §cKONSOLE§7."); }

if (chatStan) { chatStan = false; sender.sendMessage(" §8» §7Czat zostal §cwylaczony§7."); Bukkit.getServer().broadcastMessage(" §8» §7Czat zostal §cwylaczony§7 przez §aKONSOLE§7."); } else { sender.sendMessage(" §8» §7Czat jest juz §cwylaczony§7."); }[/code]

dodatkowo, if (zmienna) {} to to samo co if (zmienna == true) {}

Notka

if (chatStan = true) {}

przechodzi zawsze, bo ustawienie zmiennej zostało zakończone pomyślnie ;P

luxDev
luxDev Pionier

Poradzili sobie patrz :O :D

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.