Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[BukkitDev][Java] Piszemy pierwszego plugina


Suchy™

Rekomendowane odpowiedzi

Opublikowano

Witajcie w pierwszej części (Bo jeśli się spodoba - będzie ich więcej) poradnika dotyczącego pisania własnego pluginu do Minecraft.

Zakładam, że każdy, kto bierze się za pisanie pluginu zna Jave chociaż w jakimś tam stopniu, więc nie musze tłumaczyć ściągania Eclipse itp.

 

Zakładam także, że każdy ma swój serwer bukkit, żeby sprawdzić, czy plugin działa poprawnie.

 

 

W Eclipse klikamy kolejno

 

File -> New -> Project

 

1336416600-U71814.jpg

 

Wybieramy Java Project, następnie

wpisujemy nazwę pluginu i nic więcej. Klikamy OK.

 

Ja nazwałem swój plugin Basic.

 

Teraz klikamy na src -> New -> Package

 

1336416622-U71814.jpg

 

Tutaj wpisujemy nazwę "paczki". Ja wpisałem me.suchy.basic (Jednak to wcale nie musi tak być, może być np. abc.abc i tyle

;)).

 

Teraz klikamy na me.suchy.basic (w moim wypadku) i wybieramy New -> Class

 

1336416642-U71814.jpg

 

Wpisujemy nazwę klasy głównej, np. Basic. Zatwierdzamy.

 


package me.suchy.basic;[/center]



[center] public class Basic {[/center]


[center]}[/center]


[center]


 

Mamy zalążek naszego kodu. Teraz bierzemy się do pracy.

 

 


package me.suchy.basic;[/center]



[center]import java.util.logging.Logger;[/center]


[center]import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;[/center]


[center]
public class Basic extends JavaPlugin{

public static Basic plugin; // zamiast pisać Basic, będziemy pisać plugin. Takie ułatwienie.
public final Logger logger = Logger.getLogger("Minecraft"); // tworzymy loggera (to, co jest konsoli)[/center]


[center]
@Override
public void onDisable(){ // gdy plugin jest wyłączony
PluginDescriptionFile pdfFile = this.getDescription(); // zdobywamy opis z pliku plugin.yml
this.logger.info(pdfFile.getName() + " jest wylaczony."); // tutaj zdobywamy nazwę i wersję pluginu z tego pliku (potem opiszę, co i jak)

}

@Override
public void onEnable(){ // gdy plugin jest włączony
PluginDescriptionFile pdfFile = this.getDescription(); //j/w
this.logger.info(pdfFile.getName() + " w wersji " + pdfFile.getVersion() + " jest wlaczony.");//j/w
}

}[/center]


[center]


 

W tym momencie nasz plugin jednak za dużo nie zrobi. Narazie nawet go nie wrzucajcie, czy cokolwiek, bo i tak nie mamy

plugin.yml.

 

Teraz dodamy komendę na "walnięcie piorunem". Zarówno w gracza jak w i nas, gdy nie podamy odpowiednich

argumentów.

 

Teraz bierzemy się do tworzenia komendy.

 


package me.suchy.basic;[/center]


[center]import java.util.logging.Logger;[/center]


[center]import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.java.JavaPlugin;[/center]


[center]
public class Basic extends JavaPlugin{

public static Basic plugin;
public final Logger logger = Logger.getLogger("Minecraft");[/center]


[center]
@Override
public void onDisable(){
PluginDescriptionFile pdfFile = this.getDescription();
this.logger.info(pdfFile.getName() + " jest wylaczony.");

}

@Override
public void onEnable(){
PluginDescriptionFile pdfFile = this.getDescription();
this.logger.info(pdfFile.getName() + " w wersji " + pdfFile.getVersion() + " jest wlaczony.");
}

public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String args[]){ // tutaj funkcja która zwraca prawdę lub fałsz, z parametrami zwyczajnie[/center]


[center]//potrzebnymi do tej funkcji. Nie wiem, jak to wytłumaczyć :P

Player player = (Player) sender; // ten, kto wysyła komendę, staje się graczem (zmienna player typu Player)
World world = player.getWorld(); // pobieramy świat, na którym jest gracz.

if(commandLabel.equalsIgnoreCase("basic")){ // gdy wpiszemy /basic (IgnoreCase znaczy, że nie patrzy na duże czy małe literki)
if(args.length == 0){ // jeżeli nie ma argumentów - sama komenda /basic
Location location = player.getLocation(); // zdobywamy lokalizację gracza (samych siebie w tym wypadku)
world.strikeLightning(location); //uderzamy piorunem w siebie.
player.sendMessage(ChatColor.YELLOW + "Uderzyles w siebie."); // komunikat o tym, że daliśmy sobie wpierdziel z pioruna
} else if(args.length == 1){ // gdy jest jeden argument - w tym wypadku nick gracza
if(player.getServer().getPlayer(args[0]) != null){ // sprawdzamy, czy gracz jest online (wlasciwie czy go nie nie ma - czyli czy jest :P)
Player target = player.getServer().getPlayer(args[0]); // ustawiamy zmienną target pod gracza, jeżeli jest online
Location location = target.getLocation(); // pobieramy jego pozycję

world.strikeLightning(location); // walimy w niego piorunem
player.sendMessage(ChatColor.YELLOW + "Piorun uderzyl w gracza " + target.getDisplayName()); // dostajemy komunikat, kto dostał

} else {
player.sendMessage(ChatColor.RED + "Ten gracz nie jest zalogowany."); // gdy gracz nie jest zalogowany
}
} else if (args.length > 1){ // gdy jest więcej niż jeden argument
player.sendMessage(ChatColor.RED + "Za duzo argumentow! " + ChatColor.BLUE + "/basic " + ChatColor.GREEN + "[gracz]"); // wyświetlamy ,jak powinna być użyta komenda
}

}

return false; // zwracamy fałsz, bo mamy do czynienia z boolean.

}
}[/center]


[center]


 

Teraz klikamy na Basic i tworzymy New -> File.

 

1336416671-U71814.jpg

 

Wpisujemy plugin.yml

Klikamy na plugin.yml dwa razy i wklejamy to :

 

 

 


name: Basic
main: me.suchy.basic.Basic
version: 0.1
description: Opis
commands:
basic:
description: Opis.

 

Oczywiście zmieniacie main na własne. Na końcu jest nazwa głównej klasy.

 

 

Teraz klikamy File -> Export -> Jar File

 

U góry, po lewej, zaznaczamy nasz plugin.

W Destination podajemy miejsce eksportu pliku .jar.

 

Wrzucamy go na serwer - do folderu plugins.

 

Wszystko śmiga

:)

 

Przez Suchy113 dla MPCForum.pl

Zakaz kopiowania bez dopisku.

1352970251-U713459.png

By Maxiu
"Because limits, like fears, are often just an illusion"

Opublikowano

Troszke Zagmatwane To ; )

Geonig Czy Jakoś Tak xD Napisał Ładniej i Przejrzyściej

Jeżeli nie potrafisz wykorzystać
każdej danej Ci chwili,
to nie zasługujesz na ani jedną
dodatkową sekundę.

  • 3 tygodnie później...
Opublikowano

Ładny poradnik tylko, że powinieneś zacząć od łatwiejszych rzeczy takich jak np. Pisanie tekstu na czacie gdy gracz wejdzie na serwer ( coś w stylu tekstu powitalnego ), albo przedstawić sam szkielet pluginu. Ludzie mogą się w tym potem gubić.

Kocham mame

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...