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
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 :)
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 :)
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 😉
Źródła: