Plugin Hello world do Bukkit z IntelliJ IDEA

Poradniki
minecraft, pluginy, java
SystemZ
SystemZ Admin lvlup.pro

Zanim zaczniemy

Przed rozpoczęciem prac, polecam zaopatrzyć się build toolsy od teamu spigot lub ściągnąć gotowego .jar na wersję której potrzebujemy https://lvlup.rok.ovh/t/skad-pobrac-spigot-bukkit-1-9/77

oraz sam InteliJ IDEA https://www.jetbrains.com/idea/#chooseYourEdition

Kilka uwag

Nie mam osobiscie za dużo wspólnego z javą, może tu się pojawić sporo błędów merytorycznych więc warto też zapoznać się z komentarzami pod tym postem aby poznać opinie osób które prawdopodobnie mają dużo większe doświadczenia z tym językiem niż ja.

W tym poradniku korzystam z Ubuntu 15.10, zapewne korzystasz z innego systemu więc trochę kroków może się różnić, jednakże będą to raczej subtelne różnice typu sposób wybór wersji JDK, ścieżka do wyprodukowanych plików .jar naszego pluginu czy wygląd obramowania okien.

Nie musisz przestrzegać używanych tu nazw typu HelloBukkit jednak gdy występują problemy których nie przewidziałem, spróbuj od nowa dokładnie tak samo jak ja, krok po kroku, litera po literce.

Tworzenie plików projektu

Uruchamiamy InteliJ IDEA. Klikamy Create New Project

668x489

Wybieramy Empty Project

519x500

Wpisujemy nazwę projektu, tu będzie to HelloBukkit

519x500

Może nam się pojawić okno Project Structure, jeśli nie to wystarczy użyć skrótu Ctrl + Alt + Shift + S lub wybrać File -> Project Structure z górnego paska narzędzi. W tym oknie dodajemy nowy moduł

599x500

Tu zostawiamy wszystko puste tak jak jest, chyba że chcemy od razu ustawić JDK jako Module SDK to klikamy New...

537x500

Jeśli nie wybraliśmy SDK to będzie o tym ostrzeżenie

528x156

W następnym kroku wpisujemy nazwę modułu, tu będzie to Hello 537x500

Pojawi nam się coś takiego. Wybieramy 7 z Language level, da to nam większą kompatybilność gdyż jeszcze nie wszędzie jest Java 8. Potem klikamy OK.

599x500

Wracamy do głównego okna. Klikamy prawym na src pod Hello i wybieramy New -> Package Wpisujemy nazwę, tu będzie to first, obstawiam że aby być w pełni zgodnym z językiem java trzeba w tym kroku oraz jeszcze w innym miejscu użyć nazwy domeny itp. ale to tylko przykład, następny plugin przygotujesz już z większą dbałością o szczegóły :) Edit Tak jak podejrzewałem popełniłem tu błąd, najlepszym zwyczajem jest umieszczeniu w tym miejscu odwróconej nazwy domeny. Przykładowo jeśli posiadamy domenę example.com i nasz plugin ma mieć nazwę first to powinniśmy umieścić tu np. com.example.first

477x144

Gdy mamy już swoją paczkę, tworzymy w niej klasę java. Klikamy prawym na first pod src i wybieramy New -> Java class

357x154

W tym momencie powinniśmy mieć już pierwszy początkowy plik z kodem, mniej więcej coś takiego co zostało wygenerowane przez IDEA

690x456

JDK i bukkit.jar

Teraz zadbamy o to aby spełnić zależności naszego projektu zanim będziemy mogli robić buildy. Udajemy się do Project Structure a dokładniej do zakładki Dependencies. Ustawiamy Module SDK zgodnie z systemem operacyjnym jakim posiadamy. U mnie była to kwestia wybrania Oracle Java z zasugerowanego przez IDEA folderu

426x495

Następnie dodajemy nasz bukkit.jar (plik silnika serwera), może być też spigot. Nie jestem pewien jednak czy to optymalne rozwiązanie. Sądzę że da się to zrobić lepiej i użyć pliku .jar z samym kodem API czyli dużo mniejszym niż cały silnik. Działać działa, ale z chęcią przeczytam propozycje co zmienić w tym kroku. Obecnie banalny plugin ma tylko samo MB co silnik więc na pewno da się to zrobić lepiej :)

690x275

599x500

Tworzenie plików .jar pluginu

Teraz damy znać IDEA co dokładnie ma budować i co ma się znaleźć w plikach .jar których potrzebujemy

Ponownie udajemy się do Project Structure Wybieramy po lewej Artifacts a następnie po kliknięciu na zielony plusik dajemy JAR -> From modules with dependencies...

690x401

Pojawi się okno, zostawiamy w nim wszystko jak jest i zatwierdzamy przez OK

519x375

W naszym ulubionym Project Structure zobaczymy nowy wpis. Zwracamy uwagę na Output directory gdyż tam będzie się tworzyć nasz wymarzony plik .jar naszego własnego pluginu! Najlepiej gdy w tym momencie sobie przekleimy tą ścieżkę do naszego menadżera plików. Skoro wiemy już gdzie jest ten folder, potwierdzamy przez OK na samym dole okna

599x500

Podstawowy kod i plugin.yml

Mamy już gotowe środowisko, teraz możemy zacząć w końcu pisać kod :slight_smile:

Edytujemy klasę Start, powinna wyglądać tak:

package first;
 
import org.bukkit.plugin.java.JavaPlugin;
import java.util.logging.Logger;
 
public class Start extends JavaPlugin {
 
    Logger log = Logger.getLogger("Minecraft");
 
    public void onEnable()
    {
        log.info("Hello world plugin enabled");
    }
 
    public void onDisable()
    {
        log.info("Hello world plugin disabled");
    }
 
}

Teraz stwórzmy wymagany plik plugin.yml W nim będą znajdować się informacje o twórcy, wersji, którą klasę powinien uruchomić silnik Bukkit/Spigot aby wystartować plugin oraz zestaw uprawnień o ile w nasz plugin będzie dostarczać komendy.

Klikamy prawym na src -> New -> File i wpisujemy plugin.yml

Jego zawartość powinna wyglądać tak

name: Hello World
main: first.Start
version: 0.1

Oto zrzuty jak wygląda to po już dodaniu tych plików

690x424

690x424

Mamy już wszystko gotowe więc czas zbudować nasz .jar :slight_smile: Z górnego paska wybieramy Build -> Build artifacts -> Build

Wchodzimy do zanotowanego przez nas folderu gdzie ląduje plik .jar oraz wrzucamy go do katalogu plugins naszego serwera oraz go restartujemy. Powinniśmy w konsoli serwera uświadczyć coś podobnego:

15:15:52 [INFO] Preparing level "world"
15:15:52 [INFO] Preparing start region for level 0 (Seed: -8448833253681720546)
15:15:52 [INFO] Preparing start region for level 1 (Seed: -8448833253681720546)
15:15:52 [INFO] Hello world plugin enabled
15:15:52 [INFO] Server permissions file permissions.yml is empty, ignoring it
15:15:52 [INFO] Done (0,069s)! For help, type "help" or "?"

Oznacza to że nasz plugin wczytał się poprawnie i wykonał kod przy jego włączaniu. Teraz tylko wystarczy stworzyć klasy i kod jakiego potrzebujemy i możemy podbijać kwadratowy świat - programistycznie 😉

Źródła:

https://bukkit.org/threads/hello-world.58014/

https://www.youtube.com/watch?v=X3IS5pu32pg

luxDev
luxDev Pionier

Może komendy, argumenty?

SystemZ
SystemZ Admin lvlup.pro

Poradnik ten ma głównie pokazać jak ustawić środowisko. Ja osobiście nigdy nie pamiętam co i jak kliknąć w IDE więc przygotowałem poradnik, zapewne zerknę do niego sam za jakiś czas jak będę chciał napisać coś do bukkita :slight_smile:

Jeśli chciałbyś za to stworzyć poradnik co i jak już z samym kodem i przykładami zastosowań to byłoby super 😉