Skocz do zawartości
Emormi

tekst
Pisanie pluginow minecraft #1

Rekomendowane odpowiedzi

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

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ą "JetBrains Intellij", oraz "Eclipse"

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 spigot 1.12.2 R0.1, oraz API  spigotApi 1.12.2 R0.1

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"

oMuiBD7.png

Nastepnie klikamy "next" 

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

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

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

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"

 

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

 

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

j9q0CsM.png

File > export

Jar file  > next

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

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

 

Pozdrawiam, Enormi

Edytowane przez Emormi
  • Lubię to! 2

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   (0 użytkowników)

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

Główny

Główny

Wprowadź swoją nazwę

×
×
  • Dodaj nową pozycję...