IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

3. diel - Prank plugin (Opakovanie)

Vitajte u tretieho tutoriálu. Minule sme si popísali, ako vytvoriť príkaz a používať jeho argumenty, dnes budeme pokračovať v príkazoch.

Čo dnes budeme tvoriť?

V dnešnom treťom diele si opäť budeme hrať s príkazmi a jeho argumenty. Vytvoríme si dva príkazy. Prvý bude príkaz / fakeop <hráč>, ktorý bude mať za úlohu oznámiť danému hráčovi, že dostal OP, zatiaľ čo nič nedostane. Ďalším príkazom bude / fakejoin <hráč>, ktorý bude mať za úlohu oznámiť do verejného chatu, že sa pripojil nejaký hráč, zatiaľ čo sa vôbec nepripojí. Bude to len FAKE! V poslednom rade sa pozrieme na rozšírenie správ pri vypnutí a zapnutí servera, aby som upresnil, pozrieme sa bližšie na plugin.yml.

Príkaz FakeOP (/ fakeop <hráč>)

Urobíme si ako vždy úplný základ, naše dve metódy + metódu na príkaz:

package cz.pandap.fake;

public class Main extends JavaPlugin {

        public void onEnable() {
                Bukkit.getServer().getLogger().info(&quot;Plugin Fake se zapnul!&quot;);
        }

        public void onDisable() {
                Bukkit.getServer().getLogger().info(&quot;Plugin Fake se vypnul!&quot;);
        }

        public boolean onCommand(CommandSender sender, Command cmd, String labels, String[] args) {
                if (!(sender instanceof Player)) {
                        sender.sendMessage(&quot;Konzole nemůže vykonat tento příkaz!&quot;);
                        return true;
                }

                Player player = (Player) sender;


                return false;
        }
}

Toto bude náš základ, toto však už poznáme. Teraz si napíšeme samotný príkaz:

if (cmd.getName().equalsIgnoreCase("fakeop")) {

}

Tento kód už taktiež poznáme. Ale aby som to naposledy spresnil, udávame tým, že toto bude príkaz / fakeop a bude zaregistrovaný na serveri. Zatiaľ nám nič nevykonáva, my to ale napravíme. Čo budeme potrebovať a chcieť overovať?

  • Urobíme podmienku, aby hráč musel určiť hráča, inak mu to vypíše chybovú správu
  • Ďalej či je cieľ online na serveri

Najprv začneme tou podmienkou, aby hráč (sender) určil cieľ:

if (cmd.getName().equalsIgnoreCase("fakeop")) {
        if (args.length == 0) {
                sender.sendMessage(ChatColor.RED + "Prosím specifikuj hráče!");
                return true;
        }
}

Farbičky taky už poznáme. :-) Aby som ešte raz zopakoval, ak argument sa rovná nule, teda príkaz nejako dal nepokračuje, napíše sa, aby hráč určil svoj cieľ - hráča.

Teraz potrebujeme určiť, čo je vlastne cil (target):

Player target = Bukkit.getServer().getPlayer(args[0]);

target je inštancia Player, target je hráč, ktorý je prvým argumentom v príkaze.

Ďalej potrebujeme zabezpečiť, aby sa overilo, či cieľ je online:

if (target == null) {
        sender.sendMessage(ChatColor.RED + "Nemůžu najít hráče jménem " + args[0] + ".";);
        return true;
}

Máme hotové podmienky, teraz sa vrhneme na samotnej správy. Napíšeme Ak príkaz / fakeop hráč, vypíšeme sa nám, že daný hráč dostal OP a príjemcovi sa oznámi, že sa stal OP. Ideme na to! Bude to naozaj jednoduché!

target.sendMessage(ChatColor.YELLOW + "Stal jsi se OP!");
sender.sendMessage(ChatColor.GREEN + "Vykonáno!");

Výborne, príkaz / fakeop máme hotový. Teraz by som sa chcel pozrieť na príkaz / fakejoin <hráč>

Začneme úplne rovnako ako minule. Čo budeme potrebovať?

  • Musíme overiť, či hráč špecifikoval meno, využijeme na to opäť argument 0.
if (cmd.getName().equalsIgnoreCase("fakejoin")) {
        if (args.length == 0) {
                sender.sendMessage(ChatColor.RED + "Prosím specifikuj hráče!");
                return true;
        }
}

Definoval som príkaz / fakejoin a potom som zadal, či príkaz nebude mať žiadny argument, vypíše sa, aby daný odosielateľ špecifikoval hráča.

Ak podmienka prejde, musí sa niečo vykonať. My potrebujeme, aby sa do chatu napísalo, že sa pripojil hráč, ktorého som definovali. Jeho meno je uložené v args [0] - prvým argumentu.

Bukkit.getServer().broadcastMessage(ChatColor.YELLOW + args[0] + " se připojil");

Tu je finálna kód:

package cz.pandap.fake;

public class Main extends JavaPlugin {

        public void onEnable() {
                Bukkit.getServer().getLogger().info(&quot;Plugin Fake se zapnul!&quot;);
        }

        public void onDisable() {
                Bukkit.getServer().getLogger().info(&quot;Plugin Fake se vypnul!&quot;);
        }

        public boolean onCommand(CommandSender sender, Command cmd, String labels, String[] args) {
                if (!(sender instanceof Player)) {
                        sender.sendMessage(&quot;Konzole nemůže vykonat tento příkaz!&quot;);
                        return true;
                }

                Player player = (Player) sender;

        if (cmd.getName().equalsIgnoreCase("fakeop")) {
            if (args.length == 0) {
                        sender.sendMessage(ChatColor.RED + "Prosím specifikuj hráče!");
                        return true;
                }

            Player target = Bukkit.getServer().getPlayer(args[0]);

            if (target == null) {
                sender.sendMessage(ChatColor.RED + "Nemůžu najít hráče jménem " + args[0]);
                    return true;
            }

            target.sendMessage(ChatColor.YELLOW + "Stal jsi se OP!");
            sender.sendMessage(ChatColor.GREEN + "Vykonáno!")
        }

        if (cmd.getName().equalsIgnoreCase("fakejoin")) {
                if (args.length == 0) {
                        sender.sendMessage(ChatColor.RED + "Prosím specifikuj hráče!");
                        return true;
                }

            Bukkit.getServer().broadcastMessage(ChatColor.YELLOW + args[0] + " se připojil");
        }
                return false;
        }
}

Teraz si ešte popíšeme sľúbenú funkciu. Bude to čítanie hodnôt z plugin.yml. Ak chceme, aby sa nám pri štarte, či nejaké správe vypísala napr. Verzie, meno či autor plugin, musíme to nejakým spôsobom prečítať. Prečítanie bude úplne jednoduché. Ukážeme si to na metóde onEnable ():

public void onEnable() {
     Bukkit.getServer().getLogger().info("Prank v" + this.getDescription().getVersion() + " se zapnul!");
}

Ako vidíte, získame deskripcia pluginu a jej verziu, môžeme tak získať meno, autora a veľa ďalšej hodnôt.

Čo sme sa naučili?

V tomto diele sme si zopakovali príkazy a jeho argumenty, pozreli som sa tiež na vypisovanie hodnôt z plugin.yml

Záver

Toto by bolo všetko k tomuto tretiemu dielu, v budúcom diele by sme sa pozreli, ako vytvoriť a spravovať konfiguráciu. Ďakujem za prečítanie! V prípade problémov sa obráťte do komentárov alebo do správ!


 

Predchádzajúci článok
Viac o príkazoch a farby
Všetky články v sekcii
Tvorba pluginov pre spigot
Preskočiť článok
(neodporúčame)
Prvý event a konfigurácia (MOTD)
Článok pre vás napísal PandaP968
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor se zabývá programováním v Javě. Většinu času programuje pluginy pro Minecraft servery.
Aktivity