Skocz do zawartości

Pisanie pluginow minecraft #1


Enormi

Rekomendowane odpowiedzi

Witam serdecznie, z tej strony Enormi, jest tu mój pierwszy wpis na tym forum :D

Dziś przedstawie wam jak stworzyć swój pierwszy plugin na serwer :) 

 

1.Zacznijmy od pobrania IDE, pewnie zapytasz

-Enormi, ale co to jest ide? 

-IDE (ang.integrated development environment) jest to ziintegrowane środowisko programistyczne, najczęściej używanymi IDE do pisania pluginów są "Aby zobaczyć link musisz się zalogować. ", oraz "Aby zobaczyć link musisz się zalogować. "

Oczywiście istnieje wiele mniej znanych IDE, ale już nie chce się już zagłebiać w szczegóły. Osobiście preferuje Eclipse.

 

2.Po zainstalowaniu IDE:


a) Pobieramy silnik, pod który chcemy pisać plugin i fajnie byłoby, gdybyśmy jeszcze pobrali API silnika. Ja pisze pod Aby zobaczyć link musisz się zalogować. , oraz API  Aby zobaczyć link musisz się zalogować.

Pewnie znowu zadasz mi pytanie

-Emormi, ale czekaj co to jest api?

-API (ang. application programming interface) tłumaczać jest to interfejs programistyczny aplikacji.

 

b)Po pobraniu silnika uruchamiamy IDE, w moim przypadku to Eclipse .

* Tworzymy teraz nowy projekt javy, nazywamy go jak chcemy. W moim przypadku nazwa projektu to "mpspot"

I5b6Y7N.png

 

Nastepnie klikamy "next" 

Wchodzimy w zakładkę libraries, klikamy "Add externars Jars" i dodajemy nasz silnik, oraz jego API

gLgLfDz.png

 

Następnie klikamy "Otwórz" i gotowe.

* Teraz tworzymy nowy package, możemy go nazwać me.autor.nazwa_wtyczki w moim przypadku to będzie me.enormi.mcspot

I klikamy "Finish"

 

*Teraz tworzymy główną klasę pluginu w tym package`u. Klasę główną powinniśmy nazwać według zaleceń bukkita czyli Nazwa_PluginuJavaPlugin w moim przypadku to będzie

MpspotJavaPlugin (Pamiętaj, by klasa nazywała się z dużej litery)

3KRATS9.png

 

Teraz rozszerzamy naszą klasę o JavaPlugin, w tym momencie operujemy na kodzie, więc screenshot`y nie bedą potrzebne.

Robimy to przez dopisanie do klasy "extends JavaPlugin". W moim przypadku wyglądać to bedzie nastepująco:

 

public class MpspotJavaPlugin extends JavaPlugin{

}

Pewnie powiesz

-Emorni, tu jest błąd!

-Musisz teraz zaimportować "JavaPlugin"

-No, ale jak to zrobić?

-Kliknij na bład i wybierz "import org.bukkit(...)", lub dopisz na górze 

"import org.bukkit.plugin.java.JavaPlugin;"

 

*Teraz tworzymy metodę void onEnable()

 

Teraz kilka wyjaśnien

Metoda - Jest to zbiór instrukcji.

Metoda void to metoda, która wykonuje kod, ale zwraca żadnej wartości.

Metoda boolean to metoda, która wykonuje kod i zwraca wartosc przez return wartosc;.

 

Więc zacznijmy od dopisania do klasy 

"Public void onEnable(){ }"

Klasa wygląda następująco:

package me.enormi.mcspot;

import org.bukkit.plugin.java.JavaPlugin;

public class MpspotJavaPlugin extends JavaPlugin{
	
	public void onEnable(){
		
	}

}

No tylko co nam z metody, która się wykona, ale nic w niej nie będzie?

Zatem wyślijmy wiadomość do konsoli. Użyjemu do tego loggera, który daje nam bukkit, więc

dopisujemy w środku bloku ({ }) metody "Bukkit.getLogger().log(Level.INFO, "Hello world!");"

 

"Hello world!" to tekst, który zostanie wyświetlony w konsoli

INFO to rodzaj wiadomości wyświetlony w konsoli

 

Teraz powinniśmy zaimportować 

import java.util.logging.Level;
import org.bukkit.Bukkit;

*No dobra, ale co nam z pluginu, który tylko wyświetla wiadomośc do konsolii?

Zatem stwórzmy komende!

 

Zacznijmy od stworzenia nowego package "commands", żeby kod był schludny i na swoim miejscu.

d1OSZmN.png

Teraz klikamy "finish" i tworzymy nową klase, która nazywamy jak chcemy. Pamietaj, by po nazwie klasy można było się domyślić co w niej się znaduje. Ja ją nazwe  "HelloCommand"

IyaJPQ3.png

 

Teraz zaimplementujemy do klasy CommandExecutor i zaimportujmy

"import org.bukkit.command.CommandExecutor;"

 

Obecnie całą klasa wygląda tak:

package me.enormi.mcspot.commands;

import org.bukkit.command.CommandExecutor;

public class HelloCommand implements CommandExecutor{

}

Teraz IDE może wyrzucić nam błąd "The type HelloCommand must implement the inherited abstract method CommandExecutor.onCommand(CommandSender, Command, String, String[])"

Musimy stworzyć metodę boolean

 

	public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
		return false;
	
	}

następnie musimy coś zrobić w tej metodzie, dajmy na to, że jesli gracz wyśle komende, która podamy w plugin.yml i klasie głównej dostanie wiadomość "Hello world"

Więc wyślijmy do sendera wiadomość, możemy zrobić to tak:

"sender.sendMessage("Hello world);"

 

Kod wygląda następująco:

 

package me.enormi.mcspot.commands;

import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;

public class HelloCommand implements CommandExecutor{
	
	public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
		sender.sendMessage("Hello world");
		return true;
	
	}

}

Teraz w klasie głównej definiujemy tą komende w następujący sposób

 

this.getCommand("komenda").setExecutor(new Klasa());

 

Cała klasa będzie wyglądać tak

 

package me.enormi.mcspot;

import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

import me.enormi.mcspot.commands.HelloCommand;


public class MpspotJavaPlugin extends JavaPlugin{
	
	public void onEnable(){
		Bukkit.getLogger().log(Level.INFO, "Hello world!");
		this.getCommand("hello").setExecutor(new HelloCommand());
	}

}

 

Teraz tworzymy plik yaml (plugin.yml)

Podajemy w nim takie wartości jak:

 

main: ścieżka do klasy głównej

version: wersja pluginu

author: autor pluginu

name: nazwa pluginu

commands:

  komenda:

 

Więc zaczynamy od

L86PaSs.png

 

I podajmy wartości i klucze w pliku

 

Zawartość pliku w moim przypadku wygląda następująco

 

name: testmpspot
author: enormi
main: me.enormi.mcspot.MpspotJavaPlugin
version: 1.0
commands:
  hello:

Teraz eksportujemy plugin

 

File > export

u4YnFHN.png

Jar file  > next

Teraz wybieramy nasz plugin, podajemy lokacje pliku gdzie go chcemy i "finish" :D

I to na tyle. W razie problemów zapraszam do komentowania.

 

Pozdrawiam, Enormi

 

 

Edytowane przez Enormi
  • Lubię to! 2
Odnośnik do komentarza
Udostępnij na innych stronach

12 godzin temu, pepq_ napisał:

Dlaczego nie uczysz od razu używania mavena, z resztą jeśli ktoś ma zamiar nauczyć się pisać pluginy najpierw powinien zapoznać się z javą. 

 

Pytanie:

Dlaczego preferujesz eclipse? (rzygam)

Ponieważ uważam, że używanie mavena w tak małych projektach jest bez sensu. Uczywiście jave powinna znać chociaż w minimalnym stopniu każda osoba, która chce zacząć pisać pluginy.
 

Każdy preferuje co innego. Ja w eclipse pisze już dość długi czas i nie chce przyzwyczajać się do nowego interfejsu, oraz całkowicie nowego IDE. Jeśli chcesz to mogę zrobić kolejną cześć poradnika z użyciem

mavena i JetBrains IDE.

 

Pozdrawiam, Enormi

Edytowane przez Enormi
Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...
Dnia 19.04.2018 o 12:20, mateuszeqq12331 napisał:

Pomocne. Pisz dalej, a może w końcu się tego nauczę :D

 

Nie nie nauczysz się z tego. Ten poradnik to nawet nie 1% z tego od czego się zaczyna zabawę z pluginami.

Aby zobaczyć link musisz się zalogować.

Masz link wyżej do podstaw pisania pluginów. Ale większości z tego nie zrozumiesz ponieważ na początku powinieneś nauczyć się Javy

Dnia 18.04.2018 o 20:19, pepq_ napisał:

Dlaczego nie uczysz od razu używania mavena, z resztą jeśli ktoś ma zamiar nauczyć się pisać pluginy najpierw powinien zapoznać się z javą. 

 

Pytanie:

Dlaczego preferujesz eclipse? (rzygam)

Eclispse jest w wersji 32-bit z tego co wiem JetBrains Intellij Idea takiej wersji nie posiada

Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić obrazków. Dodaj lub załącz obrazki z adresu URL.

×
×
  • Dodaj nową pozycję...