czvpka | 2021-02-17 10:26:12 UTC | #1
Cześć! Dziś zacząłem pracę nad swoim pierwszym pluginem, w czasie gdy chce zarejestrować komende, po buildzie i teście wywala pare exceptionów: http://pastebin.com/raw/a9t5igbV
Kody wyglądają następująco:
Main.java: http://pastebin.com/raw/gXD6fFjz
CommandKit.java: http://pastebin.com/raw/L8tkimyN
Pomoże ktoś? :confused: Pozdrawiam!
Timo | 2017-03-03 16:29:02 UTC | #2
Heh, jeszcze dużo nauki przed tobą :D
W klasie Main usuń this przed getCommand i powinno wszystko działać. Jak to this się tam znalazło? Miałoby to zastosowanie, gdyby komenda była w klasie Main, a wtedy zamiast new KLASA byłoby this - na przyszłość: this oznacza funkcję zastosowaną w tej samej klasie, gdzie jest ono napisane.
Pytanie: Jak wygląda twój plugin.yml? Jesli po zmianie z this dalej nie będzie działać, to podeślij mi plugin.yml ;)
EDIT: Ważny błąd, opcja extends JavaPlugin może być wyłącznie w klasie Main! To jest druga, a właściwie pierwsza przyczyna tego błędu.
czvpka | 2017-03-03 16:29:28 UTC | #3
Okej, już to poprawię, zbuilduje i wrzuce na serwer :stuckouttongue:
Timo | 2017-03-03 16:29:49 UTC | #4
Potem napisz, czy się udało ;)
czvpka | 2017-03-03 16:36:12 UTC | #5
@Timo
W Main usunąłem już “this.” przed getCommand(), ale to wyskoczyło w CommandKit :confused:
@Edit
plugin.yml: http://pastebin.com/raw/0srdBz82
Timo | 2017-03-03 16:35:58 UTC | #6
Brakuje ci overrida, zrób w ten sposób:
public class NAZWA_KLASY implements CommandExecutor{
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
I zaimplementuj te wszystkie importy :D
czvpka | 2017-03-03 16:38:26 UTC | #7
Pokombinowałem troche, teraz nie mam żadnego błędu, jednak nie wiem, jak z poprawnością kodu :joy:
http://pastebin.com/raw/wh3EFddq
Timo | 2017-03-03 16:40:54 UTC | #8
No i git, przekopiuj od if sender instanceof player aż do } od niego i wklej to do tego na dole, a ten górny public boolean on command usuń.
Timo | 2017-03-03 16:42:02 UTC | #9
W ten sposób:
public class CommandKit implements CommandExecutor {
@Override
public boolean onCommand(CommandSender commandSender, org.bukkit.command.Command command, String s, String[] strings) {
if (sender instanceof Player) {
Player player = (Player) sender;
ItemStack diamond = new ItemStack(Material.DIAMOND);
ItemStack bricks = new ItemStack(Material.BRICK);
bricks.setAmount(20);
player.getInventory().addItem(bricks, diamond);
}
return false;
}
}
czvpka | 2017-03-03 16:45:06 UTC | #10
@Timo
Logger log = Logger.getLogger(“Minecraft”);
@Override
public boolean onCommand(CommandSender commandSender, org.bukkit.command.Command command, String s, String[] strings) {
log.info("kappa");
return false;
}
Tak może być? :blush:
Timo | 2017-03-03 16:45:51 UTC | #11
Błąd polegał głównie na tym extends JavaPlugin oraz braku @Override, po naprawieniu tego powinno wszystko działać.
czvpka | 2017-03-03 16:46:47 UTC | #12
Okej, to teraz to zbuilduje, wrzuce na serwer i sprawdzę czy działa, dzięki :smiley:
PS. Masz jakiegoś Skype/Facebook’a? @Timo
Timo | 2017-03-03 16:48:57 UTC | #13
Jak chcesz jakiś dogłębniejszy kontakt do mnie to napisz na PW, do wyboru masz GG, TeamSpeaka oraz FB (konto ‘publiczne’). Zapraszam ;)
Szymon | 2017-03-04 12:15:25 UTC | #14
@Timo jak się nie znasz to się nie wypowiadaj.
Bodajże adnotacja Override jest tylko dla IDE. Ewentualnie dla kompilatora. Jeżeli tej adnotacji nie będzie to nie ma różnicy.
To co mówisz na temat this też mija się z prawdą.
Timo | 2017-03-04 14:39:34 UTC | #15
@Szymon
Znam się od dłuższego czasu na Bukkit API oraz całej javie, oraz dodam, jakoby po zaproponowanych przeze mnie poprawkach plugin działał poprawnie.
czvpka | 2017-03-04 14:41:51 UTC | #16
@Szymon
Potwierdzam, to co @Timo powiedział, po tym, co zaproponował, plugin działał poprawnie i już nie wywalał żadnych błędów ;)
Szymon | 2017-03-04 14:51:36 UTC | #17
Zadziałał, bo problemem nie było to co napisałeś. Tylko posiadałeś 2 pluginy o tej samej nazwie w folderze plugins (być może przez pomyłkę, jak używałem eclipse miałem z tym problem).
czvpka | 2017-03-04 14:54:11 UTC | #18
[quote=”Szymon, post:17, topic:2066”]
posiadałeś 2 pluginy o tej samej nazwie w folderze plugins
[/quote]
Mylisz się, plik miałem o tej samej nazwie (po buildzie) i wrzucałem go tylko i sama FileZilla pytała się czy zamienić, na co odpowiadałem tak. Więc to nie był problem ;) (problemem był kod, uwierz…)
bezkapi | 2017-03-04 14:59:45 UTC | #19
XDDDDDDDDD????????????
czy napiszesz this czy nie to i tak nic nie zmienia w tym kodzie
JW. jak nie znasz to nie musisz sie wypowiadac.
Pozdrawiam
@topic
“Plugin already initialized!”
Wystarczy wlaczyc google i wyszukac te fraze.
Timo | 2017-03-04 15:00:27 UTC | #20
Temat jest do zamknięcia.
Ja w przeciwieństwie do was przynajmniej udzieliłem się tutaj z chęcią rozwiązania problemu, a nie komentowania innych wypowiedzi.
Problem został rozwiązany, czyli porady moje okazały się być słuszne.
Dodam, że rozmowa została kontynuowana na Facebooku, więc mogły dojść kolejne kroki.
bezkapi | 2017-03-04 15:03:06 UTC | #21
Twoje porady nie byly sluszne.
https://github.com/Thefilippop1PL/Anti-Bot/blob/master/src/main/java/pl/filippop1/antibot/AntiBotPlugin.java#L68
To jak to dziala? PRZECIEZ THIS JEST NO NIE MOZE BYC THIS !!!!!!111111
@Szymon napisal co bylo przyczyna tego, wiec nie wiem po co mialbym pisac drugi raz to samo.
czvpka | 2017-03-04 15:04:49 UTC | #22
@Szymon, @Timo, @bezkapi
Nie kłóćcie się, grunt, że plugin zadziałał. Temat do zamknięcia ;)
Timo | 2017-03-04 15:05:20 UTC | #23
Pozwolę sobię zacytować jedną z moich wypowiedzi powyżej:
[quote=”Timo, post:11, topic:2066”]
Błąd polegał głównie na tym extends JavaPlugin oraz braku @Override
[/quote]
Dyskusję skończyłem, możecie się dalej wymądrzać ale nic nie zrobicie.
Nie zamierzam kontynuować takiej rozmowy.
system | 2021-02-17 10:26:34 UTC | #24
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.