Dop1
Aktivní člen
Úvod:
Zdravím Vás u mých návodů v programování Spigot/Bukkit pluginů!
Doufám, že jsem tě mým návodem zaujmul a budeš mě sledovat i nadále. Budu se Vás snažit naučit programovat na profesionální úrovni.
Instalace Eclipse:
Stáhneme si program Eclipse z tohoto odkazu:
Eclipse nainstalujeme jako Eclipse Neon.
Začátky:
V našem prvním kódu si popíšeme základní metody Spigotu a uděláme si také první příkaz. Co budeme potřebovat? Budeme potřebovat importovat knihovny Spigotu do našeho projektu. Čím začneme? Založíme si nový projekt pod názvem Test, zvolíme si Javu 8 či 7. Doporučuji dát nejnovější Javu.
Máme založený projekt a dalším krokem bude:
Klikneme pravým na projekt Test, zvolíme možnost Properties, zobrazí se nám okno v tomto okně přejdeme na Java
Build Path.
V poslední řadě nahoře přejdeme na Libraries, po pravé straně se nachází Add External JARs.
Otevře se nám adresář, my zvolíme API Spigotu, který si stáhneme ze stránky http://getspigotmc.org/ .
Skvěle, dáme OK a máme v našem projektu k dispozici API Spigotu (knihovny).
My postoupíme dál a vytvoříme si package v adresáři SRC a pojmenujeme si ho, jak se nám zachce (doporučuji pojmenovávat ,,cz.jméno.jménopluginu.main"). Do tohoto balíčku si vytvoříme třídu, kterou si opět pojmenujeme podle nás. Já jí vždy dávám název Main nebo Core, protože má vyjadřovat hlavní třídu. Máme tedy něco takového:
Potřebujeme dědit metody Spigotu a říci pluginu, že právě toto je hlavní třída. Uděláme to jednoduše:
Ano, uděláme to pomocí třídy JavaPlugin (třída od Spigotu) a to tím že jí zdědíme. Nyní bychom určitě chtěli, aby to něco dělalo, že? Co takhle zkusit něco vypsat do konzole, když zapneme a vypneme server? Taktéž to uděláme jednoduše a to ve dvou krocích, prvně si napíšeme jednu povinnou a jednu nepovinnou metodu to této třídy:
Metoda onEnable() se volá, když se server zapíná a tato metoda je pro plugin povinná, tedy nesmíme jí vynechat, jelikož by nám server plugin nespustil. Metoda onDisable() se volá, když se server vypíná a tato metoda je nepovinná. Nyní si zorganizujeme zprávy, které budeme chtít vypisovat při zapnutí a vypnutí do konzole.
Ano, jak jste zjistili, je to velice jednoduché! Pro koho ne, tak to tedy vysvětlím. Voláme metodu info(), které má svůj argument typu String. Tímto řetězcem je právě zpráva, která se vypíše při spuštění. Není to zatím nic těžkého, co myslíte? Nyní bychom mohli vytvořit nějaký příkaz. Příkaz se dělá pomocí metody, která má 4 argumenty. Je to opět naprosto jednoduché. Samozřejmě u obtížnějších příkazu to už tak lehké nebude... K tomu ale až v dalších dílech
Návratová hodnota je boolean z toho důvodu, že se může vykonat, ale také nemusí a argumenty jsou z důvodu, aby se vám dobře definoval hráč. Příklad: send message Dop zpráva
Tento příkaz obsahuje 3 argumenty, nezapočítávám samotný příkaz send. Tomuto se tedy říká argumenty v příkazu. V naší metodě je to pod názvem args. Zatím máme pouze metodu, která příkaz vyvolá, my musíme vymyslet samotné jádro příkazu (co to udělá). Nyní potřebujeme ověřit, jestli příkaz neposílá někdo jiný než hráč. Samozřejmě to může být naopak nebo také vůbec, ale my to prozatím chceme takhle:
Takto napíšeme podmínku, jestli sender (odesílatel) není instancí hráče. Pokud toto platí, vypíše se nám zpráva o tom, že konzole nemůže vykonat tento příkaz. Konzole píšu rovnou, protože nikdo jiný než konzole nebo hráč ani příkaz odeslat nemůže. Podmínku máme hotovu, ale pořád nemáme samotný příkaz:
Ano předposlední fáze, než plugin půjde spustit na reálném serveru. Nadefinovali jsme si proměnnou player, instanci třídy Player. Nyní máme podmínku, která prostě takhle bude a nikdo ji nemůže nějak ovlivnit (samozřejmě kromě vývojářů Spigotu ). Musíme si jí zapamatovat. Tato podmínka značí to, že pokud hráč napíše příkaz test, vykoná se nějaká akce. V tomto případě tou akcí je, že proměnné player se odešle zpráva.
Plugin máme hotový! Ale pozor, nesmíme ještě zapomenout na jeden soubor jménem plugin.yml, který nám udává informace o pluginu (jméno, příkazy, verzi, hlavní třídu, ...). Vytvoříme si ho a naše podoba bude následující:
Plugin zkompilujeme. Uděláme to následujícím způsobem:
Klikneme pravým na náš projekt
2. Zvolíme možnost Export
3. Otevřeme okno, kde zvolíme možnost Java a JAR File
4. Nyní pouze zvolíme cestu, kde se nám soubor JAR uloží
5. Klikneme Finish
Gratuluji! Máte vyhráno!
Nahrání pluginu na server:
Máme-li zkompilovaný plugin, chceme ho určitě někde nahrát. Počítám s tím, že máte již připravený server. Pokud nemáte, na internetu jsou o tom stovky návodů. Po zapnutí serveru máme v hlavním adresáři složku plugins, do této složky přejdeme a přetáhneme zde náš JAR soubor. Když už máme plugin nahrán do této složky, resetujeme server nebo napíšeme do chatu/konzole příkaz /reload. Doporučuji resetovat server, je to bezpečnější.
Pokud server nemáte, plugin si spustťe pomocí terminálu, pokud někdo bude chtít, tak napíšu, jak.
Závěr:
Dnes jsme se naučili první příkaz a zprávu. Omlouvám se za chyby, které jsem tam neopatrností napsal .
U dalšího návodu, ahoj!
Zdravím Vás u mých návodů v programování Spigot/Bukkit pluginů!
Doufám, že jsem tě mým návodem zaujmul a budeš mě sledovat i nadále. Budu se Vás snažit naučit programovat na profesionální úrovni.
Instalace Eclipse:
Stáhneme si program Eclipse z tohoto odkazu:
Zdrojový kód:
https://www.eclipse.org/downloads/download.php?file=/oomph/epp/oxygen/R/eclipse-inst-win64.exe
Začátky:
V našem prvním kódu si popíšeme základní metody Spigotu a uděláme si také první příkaz. Co budeme potřebovat? Budeme potřebovat importovat knihovny Spigotu do našeho projektu. Čím začneme? Založíme si nový projekt pod názvem Test, zvolíme si Javu 8 či 7. Doporučuji dát nejnovější Javu.
Máme založený projekt a dalším krokem bude:
Klikneme pravým na projekt Test, zvolíme možnost Properties, zobrazí se nám okno v tomto okně přejdeme na Java
Build Path.
V poslední řadě nahoře přejdeme na Libraries, po pravé straně se nachází Add External JARs.
Otevře se nám adresář, my zvolíme API Spigotu, který si stáhneme ze stránky http://getspigotmc.org/ .
Skvěle, dáme OK a máme v našem projektu k dispozici API Spigotu (knihovny).
My postoupíme dál a vytvoříme si package v adresáři SRC a pojmenujeme si ho, jak se nám zachce (doporučuji pojmenovávat ,,cz.jméno.jménopluginu.main"). Do tohoto balíčku si vytvoříme třídu, kterou si opět pojmenujeme podle nás. Já jí vždy dávám název Main nebo Core, protože má vyjadřovat hlavní třídu. Máme tedy něco takového:
Zdrojový kód:
package cz.dop.test.main;
public class Main {
}
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
}
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
public void onEnable() {
}
public void onDisable() {
}
}
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getServer().getLogger().info("Plugin Test se zapnul!");
}
public void onDisable() {
Bukkit.getServer().getLogger().info("Plugin Test se vypnul!");
}
}
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getServer().getLogger().info("Plugin Test se zapnul!");
}
public void onDisable() {
Bukkit.getServer().getLogger().info("Plugin Test se vypnul!");
}
public boolean onCommand(CommandSender sender, Command cmd, String labels, String[] args) {
return false;
}
}
Tento příkaz obsahuje 3 argumenty, nezapočítávám samotný příkaz send. Tomuto se tedy říká argumenty v příkazu. V naší metodě je to pod názvem args. Zatím máme pouze metodu, která příkaz vyvolá, my musíme vymyslet samotné jádro příkazu (co to udělá). Nyní potřebujeme ověřit, jestli příkaz neposílá někdo jiný než hráč. Samozřejmě to může být naopak nebo také vůbec, ale my to prozatím chceme takhle:
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getServer().getLogger().info("Plugin Test se zapnul!");
}
public void onDisable() {
Bukkit.getServer().getLogger().info("Plugin Test se vypnul!");
}
public boolean onCommand(CommandSender sender, Command cmd, String labels, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Konzole nemůže vykonat tento příkaz!");
return true;
}
return false;
}
}
Zdrojový kód:
package cz.dop.test.main;
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getServer().getLogger().info("Plugin Test se zapnul!");
}
public void onDisable() {
Bukkit.getServer().getLogger().info("Plugin Test se vypnul!");
}
public boolean onCommand(CommandSender sender, Command cmd, String labels, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Konzole nemůže vykonat tento příkaz!");
return true;
}
Player player = (Player) sender;
if (cmd.getName().equalsIgnoreCase("test")) {
player.sendMessage("Toto se vykoná, když hráč napíše příkaz test!");
}
return false;
}
}
Plugin máme hotový! Ale pozor, nesmíme ještě zapomenout na jeden soubor jménem plugin.yml, který nám udává informace o pluginu (jméno, příkazy, verzi, hlavní třídu, ...). Vytvoříme si ho a naše podoba bude následující:
Zdrojový kód:
name: Test
main: cz.dop.test.main.Main
version: 1.0
commands:
test:
Klikneme pravým na náš projekt
2. Zvolíme možnost Export
3. Otevřeme okno, kde zvolíme možnost Java a JAR File
4. Nyní pouze zvolíme cestu, kde se nám soubor JAR uloží
5. Klikneme Finish
Gratuluji! Máte vyhráno!
Nahrání pluginu na server:
Máme-li zkompilovaný plugin, chceme ho určitě někde nahrát. Počítám s tím, že máte již připravený server. Pokud nemáte, na internetu jsou o tom stovky návodů. Po zapnutí serveru máme v hlavním adresáři složku plugins, do této složky přejdeme a přetáhneme zde náš JAR soubor. Když už máme plugin nahrán do této složky, resetujeme server nebo napíšeme do chatu/konzole příkaz /reload. Doporučuji resetovat server, je to bezpečnější.
Pokud server nemáte, plugin si spustťe pomocí terminálu, pokud někdo bude chtít, tak napíšu, jak.
Závěr:
Dnes jsme se naučili první příkaz a zprávu. Omlouvám se za chyby, které jsem tam neopatrností napsal .
U dalšího návodu, ahoj!