szymhal | 2021-02-17 10:26:00 UTC | #1
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.v17R4.CraftServer.dispatchCommand(CraftServer.java:767) ~[spigot
.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v17R4.CraftServer.dispatchServerCommand(CraftServer.java:753) [s
pigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v17R4.DedicatedServer.aB(DedicatedServer.java:326) [spigot.jar:git
-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v17R4.DedicatedServer.v(DedicatedServer.java:290) [spigot.jar:git-
Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v17R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-
Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v17R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:gi
t-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v17R4.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 moreCaused 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 | 2017-04-13 19:12:28 UTC | #2
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 | 2017-04-13 20:27:11 UTC | #3
f(args[1].equalsIgnoreCase(“on”)){
Timo | 2017-04-13 20:45:52 UTC | #4
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")){
Nieznajomy11 | 2017-04-13 20:50:28 UTC | #5
Dodatkowo wcześniej trzeba sprawdzić czy jest tyle argumentów ;P
[code]if (args.length == 1 && args[0].equalsIgnoreCase(“on”)) {}[/code]
szymhal | 2017-04-13 20:52:15 UTC | #6
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 | 2017-04-13 20:55:42 UTC | #7
Mógłbyś dać cały kod? ;P
szymhal | 2017-04-13 20:58:08 UTC | #8
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
Nieznajomy11 | 2017-04-13 21:00:33 UTC | #9
[code]while(int i = 0; i < 101; i++) {
for(Player p : Bukkit.getOnlinePlayers()) {
p.sendMessage(” “);
}
}[/code]
Brakowało zwiększania i
szymhal | 2017-04-13 21:02:52 UTC | #10
[quote=”Nieznajomy11, post:9, topic:2446”]
for(Player p : Bukkit.getOnlinePlayers()) {
p.sendMessage(” “);
[/quote]
Pokazuje się bład w eclipse.
Nieznajomy11 | 2017-04-13 21:07:37 UTC | #11
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 | 2017-04-13 21:12:54 UTC | #12
Błąd:
https://scr.hu/61GGvO
https://scr.hu/ZN66ee
PS: Kod będe przerabiać, narazie go piszę aby działał.
Nieznajomy11 | 2017-04-13 21:12:46 UTC | #13
Mógłbyś zrobić screenshot razem z polem roboczym IDE? Bo tak średnio tutaj czytać :P
szymhal | 2017-04-13 21:13:32 UTC | #14
https://scr.hu/p7ppqn
Nieznajomy11 | 2017-04-13 21:14:02 UTC | #15
[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 | 2017-04-13 21:18:54 UTC | #16
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 | 2017-04-13 21:34:24 UTC | #17
=
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) {}
if (chatStan = true) {}
przechodzi zawsze, bo ustawienie zmiennej zostało zakończone pomyślnie ;P
luxDev | 2017-04-14 00:21:20 UTC | #18
Poradzili sobie patrz :O :D
system | 2021-02-17 10:26:16 UTC | #19
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.