Plugin Hello world do Bukkit z IntelliJ IDEA

Tagi: #<Tag:0x00007ff3809a7308> #<Tag:0x00007ff3809a7240> #<Tag:0x00007ff3809a7178>

Zanim zaczniemy

Przed rozpoczęciem prac, polecam zaopatrzyć się build toolsy od teamu spigot lub ściągnąć gotowego .jar na wersję której potrzebujemy

oraz sam InteliJ IDEA

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

Wybieramy Empty Project

Wpisujemy nazwę projektu, tu będzie to HelloBukkit

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ł

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

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

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

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.

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 :slight_smile:
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

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

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

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

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 :slight_smile:

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...

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

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

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

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 :wink:

Źródła:

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

1lajk

Może komendy, argumenty?

2lajki

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 :wink:

3lajki