Pisanie pluginów do Minecraft - #1 - Klasa Main, uruchomienie pluginu

Pytania i problemy
java, bukkit
luxDev
luxDev Pionier

Ostatni poradnik był dawno temu, ostatnio ktoś pytał co z serią, więc w sumie kontynuuje.

Ostatni poradnik: (#0 Klik)

W tym poradniku zajmiemy się główną klasą, i uruchomieniem pluginu, na początku otwórzmy eclipse i po lewo kliknijmy prawym przyciskiem myszy aby stworzyć nowy projekt.

690x431

Następnie kliknijmy Java Project, i wpiszmy w pierwszym oknie nazwę projektu np. PierwszyPlugin następnie kliknijmy Finish.

690x431

Gdy utworzy się nam pierwszy projekt otwórzmy go, następnie kliknijmy prawym na niego, oraz kliknijmy Build Path, Add External Archives.

690x431

Potem wybierzmy naszą główną bibliotekę i ją dodajmy.

690x431

Następnie otwórzmy nasz projekt i widząc src kliknijmy na niego prawym, i wybierzmy new -> Package

690x431

Nazwijmy ją jak chcemy, paczki piszemy zawsze z małej litery, dodatkowo odnoszę też do tego tematu [Nazewnictwo paczek w Javie]

ja ją nazwę w ten sposób pl.luxdev.pierwszyplugin, gdy już napiszemy, zatwierdźmy to przyciskiem Finish

Następnie kliknijmy na nią prawym przyciskiem, i kliknijmy new -> Class i nazwijmy ją Main pamiętaj klasy piszemy z dużej litery.

690x431

Następnym krokiem będzie otwarcie klasy, oraz zaimportowanie JavaPlugin, a więc otwórzmy klasę i dopiszmy extends JavaPlugin

690x431

Prawdopodobnie podświetla ci teraz JavaPlugin na czerwowno, musisz na niego najechać i kliknąć import JavaPlugin (org.bukkit.plugin.java) lub użyć kombinacji klawiszy CTRL + SHIFT + O

Następnym krokiem będzie dodanie funkcji uruchamiania pluginu, dopiszmy takie coś w następnej linijce public void onEnable(){ }

To będzie metoda która będzie zawsze wykonywana podczas startu pluginu, napiszmy tam żeby wyświetlało w konsoli Plugin został uruchomiony.

690x431

Ostatnim krokiem będzie stworzenie pliku plugin.yml musimy kliknąć na src -> new -> File nazwijmy go plugin.yml Otwórzmy go, albo przeciągnijmy go na prawe pole, i wpiszmy tam takie stadandowe wartości.

main: pl.luxdev.pierwszyplugin.Main
version: 0.0.1
name: PierwszyPlugin

main oznacza ścieżkę do naszej głównej klasy pluginu wpisz tam nazwę paczki i po kropce nazwe swojej głównej klasy w moim przypadku Main

version oznacza wersję pluginu name: oznacza nazwe pluginu wyświetlaną pod np. komendą /pl, /plugins. Bez tych wartości plugin się nie uruchomi

Ostatnią rzeczą jaką musimy zrobić to wyeksportować plugin

W tym celu klikamy na nasz projekt prawym przyciskiem, Export

690x431

Następnie będziemy musieli wybrać nazwe pliku oraz lokalizacje gdzie ma zostać zapisany.

To na tyle w tym poradniku daj like za włożoną pracę jeśli możesz :)

Marcoral
Marcoral Pionier

Polecam prywatne lekcje z tym użytkownikiem!!

  • Spójrzcie dokładnie na jego projekty 😄 Starsi bywalcy tego forum zrozumieją o czym mowa 😊
luxDev
luxDev Pionier

Tak, MaCore Commondore mówi wszystko.

Marcoral
Marcoral Pionier

Chyba najcenniejszy ze wszystkich tych projekcików!

koweq
koweq

luxDev:

ostatnio ktoś pytał co z serią

Chyba domyślam się kto xD A tak na serio - fajnie wyjaśnione ;)

Karolek
Karolek

Mam nadzieję, że błąd w tym poradniku poprawisz szybciej niż sprawdzanie kodu...

anon10657637
anon10657637

meh, eclipse. za co? toż to podpowiada gorzej niż paint, ale ok. wg. mnie:

  • naucz w tej serii mavena, toż to podstawa!

  • teraz się czepiam - w onEnable nie ma adnotacji @Override ;3. a powinna być, w końcu rozszerzamy klasę

po za tym jest w miarę git.

Karolek
Karolek

A wiesz po co ta adnotacja jest? xD

Mogą nawet pisać w notatniku, nie ma sensu czepiać się o środowisko.

anon10657637
anon10657637

@Override jest używane przy oznaczaniu metod, które się rozszerza/implementuje.

co do środowiska - czepiam się, gdyż z tego co się orientuje, eclipse nie ma wbudowanego mavena. a to jest raczej podstawa w pracy :<

Karolek
Karolek

Jest wbudowany maven.

@Override ma za zadanie sprawdzić czy aby na pewno w sposób właściwy nadpisujesz metodę z klasy rodzic.

Przykładowo, masz jakieś api, ma ono metodę foo(), ty ją rozszerzasz. Api się zmienia, i metoda foo() nagle zwraca już int'a a nie voida, @Override da Ci znać że metoda (czyli void z poprzedniej wersji api) nie jest możliwa do nadpisania. Bez @Override po prostu miałbyś swoją własną metodę :v

Arimer
Arimer

Mam pytanie będzie tego kontynuacją??

luxDev
luxDev Pionier

Na razie praktycznie nie mam czasu w tygodniu, do tego cięzko jest napisać taki poradnik z dokładnym opisem. Ten przygotowywałem około godzinę.

koweq
koweq

A znasz jakiś dobry poradnik może?

luxDev
luxDev Pionier

No nie wiem, ja się nauczyłem tego co robię (w sumie to cały czas się uczę na błędach) poprzez dekomplikację innych pluginów, forum bukkita.org pełno tego typu rzeczy, dokumentacja, trochę głowy, żeby to zrozumieć, ogólnie to jeszcze tak totalnie na początku to oglądałem freaq16 (kanał usunięty jak coś), ale nie wiem czy zabardzo polecać tego typu rzeczy.

Spróbuj, wszystkiego, to zależy od ciebie.

liamdj23
liamdj23

Minęło trochę czasu...bedzie następna część? :)

luxDev
luxDev Pionier

Się zobaczy :)

liamdj23
liamdj23

Dziękuję :D

KubusStaachol
KubusStaachol

Cześć, zrobiłem to samo co ty na poradniku, tylko na wersji eclipse 1.14.0.1 orax na wersji minecraft craftbukkit 1.8, weksportowałem mój plugin na server, ale server go nie widzi, wiesz może co robie nie tak albo masz dla mnie jakąś rade. Prosiłbym o pomoc. Z góry dziękuje

SP24
SP24

masz utworzony plik plugin.yml?

KubusStaachol
KubusStaachol

Tak, mam tez utworzoną klase Main oraz silniki craftbukkit 1.8

SP24
SP24

Użyj np. Spigota, jeśli masz jakieś błędy w konsoli przy uruchamianiu serwera lub po jego uruchomieniu wstaw je.

KubusStaachol
KubusStaachol

[code] [23:09:29 ERROR]: Could not load 'plugins\pierwszyplugin.jar' in folder 'plugins' org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: pl/staluch/pierwszyplugin/Main has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0 [/code]

SP24
SP24

Upewnij się czy na maszynie gdzie stoi serwer wersja Javy nie jest mniejsza niż ta pod która piszesz. Bo np jeśli plugin pisany jest pod Java 12 to nie zadziała na Java 8.

KubusStaachol
KubusStaachol

Mam server postawiony na kompie do testów, spigot 1.8 (testowalem tez na 1.12.2) w bibliotece dodaje dokladnie ten sam plik, błąd polega na versji JavarunTime, gdyż klasa jest na 57 a powinna do 52, w ustawieniach eclipse nie moge tego znalezc, moja verja java developer kit to 1.13.02

Nikox
Nikox

Pobierz JDK z tej strony: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Wersja jaką masz jest na javę 13.

Jasu
Jasu

Gdzie to mam wyeksportować?

mar232320
mar232320

do pliku .jar i zapisz go w widocznym miejscu - np. na pulpicie

logixdev
logixdev

Jasu:

Gdzie to mam wyeksportować? Ten poradnik jest dość stary. Kiedyś faktycznie korzystało się z eksportowania projektu po prostu do pliku .jar jak nadmienił @mar232320, ale teraz lepiej zainteresuj się IntelliJ IDE i kompilowaniem z użyciem Mavena. Dzięki temu będziesz miał zawsze aktualne API i w przyszłości uprości to całą operację. 😉 https://www.spigotmc.org/wiki/creating-a-plugin-with-maven-using-intellij-idea/

system
system

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