Lekce 1 - Programování v Minecraftu - Úvod a Hello world
Vítejte u první lekce kurzu o programování a příkazech ve hře Minecraft. Předpokládám, že hru znáte alespoň trochu do hloubky, vzhledem k tomu, že si představíme docela pokročilé mechaniky. Důležitá je znalost chování předmětů a bloků hry, také znalost redstonu a herních mechanik. Programovat budeme přímo ve hře Minecraft, moddingu této hry přímo v jazyce Java se naopak věnuje seriál Minecraft modding. Navíc se na minecraftových příkazech příjemným způsobem naučíte i něco málo o Javě, jelikož je v ní Minecraft napsaný a například syntaxe NBT a další věci z ní vycházejí. Dnes začneme s úplnými základy, představíme si příkaz /say, /give a základy selectorů.
Tento tutoriál je napsán pro verzi Minecraftu 1.10.X (Java Edice).
Testovací svět
Jako první si vytvoříme svět. Doporučuji vám superflat s předvolbou „Redstone Ready“, ale výběr je samozřejmě čistě na vás. Musíte povolit cheaty (to aby vám příkazy fungovaly) a výchozí gamemode nastavit na creative.
Do inventáře si připravte:
- nějaký stavební blok
- čudlík
- redstone blok
- plot
- nějaká spawn vajíčka zvířat (já použiji prase a krávu).
Dále budete potřebovat command block (příkazový blok). Nenajdete ho nikde v inventáři, musíte použít příkaz. Otevřete si chat (Standardně klávesa T) a napište:
/give @p minecraft:command_block
V poslední části vám stačí napsat pouze něco jako „comman“ a stisknout Tab. Tab se v minecraftových textových polích chová jako automatický doplňovač textu (jako je např. Microsoft Intellisense ve Visual Studiu), v chatu napovídá jména, u příkazů doplní syntaxi. Doporučuji vám si zvyknout Tab mačkat, ušetříte dost času.
Do inventáře vám přibude takový oranžový blok, položte si jej na zem a rozklikněte pravým tlačítkem myši. Tlačítek dole si zatím nevšímejte, podívejte se nahoru, na textové pole. Právě sem se zadávají příkazy.
Pojďme si ještě říci, co jsme to vlastně předtím provedli. Lomítkem jsme uvedli příkaz give, který dá specifikované entitě specifikovaný předmět ze hry. Entita je vlastně každá věc ve hře, která není blok nebo součást prostředí (slunce tedy také není entita) - např. hráč, zvířata, příšery, ale i Item Framy apod. V tomto případě jsme entitu specifikovali selektorem @p, vysvětlíme si níže. Předmět minecraft:command_block je doufám jasný. V dalším díle si tento příkaz představíme komplexněji, uvidíte, že se do něj dá zapsat mnohem více.
Hello, world!
Bývá zvykem, že první program zobrazí nějaký text, říká se mu „Hello, world“, ani dnes tomu nebude jinak. Otevřete si command block a napište:
/say Hello, World!
Dole stiskněte tlačítko done, tím příkaz do bloku uložíte. Tlačítko Cancel nebo stisk Esc ukončí zadávání docommand blocku bez uložení. Vedle tohoto command blocku si přistavte blok, na který dejte čudlík, nebo prostě ke command blocku položte redstone block. Po zaktivování by se v chatu mělo objevit:
[@] Hello, World!
Ten zavináč v hranaté závorce je vlastně jméno command blocku, pokud si blok přejmenujete na kovadlině, zobrazí se tam právě toto jméno. Jak ho změnit přes příkazy si povíme později, zatím používejte kovadlinu, pokud se vám zavináč nelíbí.
Ještě si blok rozklikněte a podívejte se doprostřed, je tam takové zašedlé textové políčko, označené "previous output". Tam se vypisuje zpráva o provedení - co se provedlo a jak a pokud se něco nepovedlo, vypíše se, kde nastala jaká chyba (Chybové hlášení je vypsáno červeně i při provádění v chatu). Tlačítkem vedle můžete okénko zavřít.
Selektory
Nyní si povíme o selektorech. Když otevřete command block, máte je tam vypsané, jsou to:
@p – vybere nejbližšího hráče @a – vybere všechny hráče @r – náhodně vybere hráče @e – vybere všechny entity
Tyto selektory se používají v případě, že v příkazu specifikujete cíl (target), na kterém se má příkaz vykonat. Je to vždy nějaká entita (výše jsme v příkazu give specifikovali, že blok má dostat ten nejbližší hráč – vy). Zkuste si například toto:
/say Hello, @p
A výsledek bude něco jako:
[@] Hello, Krepsy3
(samozřejmě s vaším jménem)
Tím jsme příkazu say řekli, že má vypsat jméno nejbližšího hráče (pro opravdové programátory se object (entita) přetypovala na hráče a byla provedena metoda ToString()).
Použití na jiné entitě
Předpokládám, že hrajete sami, tak si ještě zkuste toto:
/say @e
Nyní si vedle postavte ohrádku a spawněte v ní nějaké entity, já použiji prase a krávu. Výstup příkazu:
[@] Cow, Krepsy3 and Pig
Pokud máte Minecraft v češtině, je možné, že dostanete
[@] Kráva, Krepsy3 a Prase
Jestli hrajete ještě alespoň s jedním hráčem na tomtéž světě, vyzkoušejte si i oba zbývající selektory.
Argumenty selektorů
Selektorům můžeme také předávat argumenty, kterých je poměrně slušné množství. Úplný výčet najdete na Minecraft wiki (http://minecraft.gamepedia.com/Commands#…), my si je však představíme postupně během celého seriálu. Začneme nám již známým příkazem /say. Jak víte,
/say @p
řekne jméno nejbližšího hráče (ke command blocku, který příkaz vykonal). Doplňte nyní tento příkaz o argument „m“, a to takto:
/say @p[m=0]
Jak vidíte, argumenty se píší ihned za selector do hranaté závorky. Nejdříve sdělíte jméno argumentu (m), uvedete znaménko "=" rovná se a za něj hodnotu argumentu, po které má selektor pátrat. Když se nyní pokusíte příkaz vykonat, nestane se nic. Argument m totiž deklaruje, že se hledá hráč se specifickým herním módem (gamemode). Ty jsou celkem čtyři:
- Survival - 0
- Creative - 1
- Adventure - 2
- Spectator - 3
Survival i creative jistě znáte. V creativu se právě nacházíte, survival je hlavní mód (přežití). Jistě nyní chápete, že příkaz má říci jméno nejbližšího hráče, který se nachází v módu survival. Vzhledem k rozložení látky na celý seriál musel být první selektorový argument publikován již v tomto díle. Jak změnit gamemode si tedy ukážeme hned na začátku příštího dílu a poté plynule navážeme již podle plánu. Pokud tedy nebudete v příštím díle něčemu z argumentů selektorů rozumět, dopuručuji vám vrátit se sem.
Pro úvodní díl je to již vše, příště budeme pokračovat s prací se selectory a podíváme se na příkazy /tell, /give (trochu pokročileji), /clear, /gamemode, /kill a /testfor. Tyto příkazy se týkají čistě entit, takže si na nich procvičíte selektory a budete moci s entitami manipulovat. Svět máte níže ke stažení, můžete se na vše znovu podívat a vyzkoušet.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 116x (448.97 kB)
Aplikace je včetně zdrojových kódů v jazyce Minecraft