Java Problem

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?

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.

f(args[1].equalsIgnoreCase(“on”)){

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

Dodatkowo wcześniej trzeba sprawdzić czy jest tyle argumentów :stuck_out_tongue_winking_eye:

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

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

Mógłbyś dać cały kod? :stuck_out_tongue_winking_eye:

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

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

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

Brakowało zwiększania i

Pokazuje się bład w eclipse.

No tak, ale pytanie jaki :wink:

Dodatkowo zamiast rozdzielać i robić 2x kodu:

if (sender instanceof Player) { String senderName = ((Player) sender).getName(); } else { String senderName = "KONSOLE"; }, czy coś podobnego :stuck_out_tongue:

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

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

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

https://scr.hu/p7ppqn

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

1 polubienie

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.

= 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 :stuck_out_tongue_winking_eye:

1 polubienie

Poradzili sobie patrz :open_mouth: :smiley:

1 polubienie

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