6. diel - Programovanie v Minecraftu - Príkaz / gamerule
V minulom diele seriálu o programovaní v Minecraftu sme si predstavili príkazy pre manipuláciu so svetom. Dnes túto tému zakončíme príkazom / gamerule, ktorý rozoberieme podrobne.
Príkaz / gamerule
Tento príkaz už podľa názvu mení "pravidlá hry" a to interne, v každom svete samostatne, podobne ako / difficulty. Tieto pravidlá mení štandardné správanie hry (resp. Keď sú pravidlá vo svojej východiskovej podobe, hra sa chová normálne). Kompletné tabuľku nájdete na minecraft wiki ( http://minecraft.gamepedia.com/Commands...), ja ich tu rozoberiem trochu podrobnejšie.
Najprv syntax príkazu:
/gamerule <pravidlo> [hodnota]
Ako môžete vidieť, každé pravidlo má svoju hodnotu - pokiaľ ju v príkaze neuvediete, príkaz hodnotu oznámi, inak ju prednastaví. Táto hodnota je väčšinou typu "boolean", čiže pravda alebo nepravda - zadáte "true" alebo "false" (bez úvodzoviek). Niekedy je tiež hodnota číselná, kedy zadáte príslušné číslo. Zoznam nižšie obsahuje pravidlá s vysvetlením funkčnosti a mojim komentárom k používaniu. V zozname zámerne vynechávam pravidlá pre zmenu správania serverov (multiplayerová pravidlá), tým sa nebudeme zbytočne zaťažovať, pretože len menia niektoré funkcie serverov, a ďalej tiež špecializovaná pravidlá, o ktorých si povieme ďalej v tutoriálu.
Zoznam pravidiel
- announceAdvancements - nastavuje, či má byť do chatu oznámené, keď hráč získa nejaký Advancement (minecraftový achievmentový systém, povieme si o ňom v inej lekcii). Predvolená hodnota je true.
- commandBlockOutput - nastavuje, či majú command bloky písať do chatu správu o úspešnom vykonaní príkazu (napr. [@: Found Krepsy3] po nájdení cez / testfor). Predvolená hodnota je true, nastavujem ju na false na creative svetoch a v mapách.
- doDaylightCycle - nastavuje, či má slnko obiehať po
oblohe, teda aj plynutie času. Predvolená hodnota je true, na creative svetoch
nastavujem na false v kombinácii s
/time set 6000
, je potom stále pravé poludnie. - doEntityDrops, doMobLoot a doTileDrops - všetky tri pravidlá nastavujú, či majú padať itemy (entity - z entít nepříšer, mob - z príšer, tile - z rozbitia blokov). Predvolená hodnota je true a kedykoľvek staviam niečo v creative, vždy si dám false, oveľa lepšie sa udržuje čistota inventára (inak stále padajú redstone dusty z rozbitia bloku pod nimi a pod.)
- doFireTick - nastavuje, či sa má šíriť oheň po pálitelných blokoch, ako je drevo či uhlie. Predvolená hodnota je true, na false nastavujem napr. Ak mám ohnisko u dreveného baraku (v creative).
- doLimitedCrafting - určuje, či môže hráč craftit recepty, ktoré ešte neobjavil. Objavovanie receptov prebieha postupne, ako hráč hrá, napr. Recept na loď objaví, keď sa dostatočne priblíži k vode. Ak je nastavené na true, hráč nemôže loď vycraftit skôr, než sa tak stane. Predvolená hodnota je false.
- doMobSpawning - určuje, či má prebiehať spawnovanie zvierat (na tráve) a príšer (v tme), predvolená hodnota je true. Na creative svetoch a mapách nastavujem vždy na false, prítomné teda budú iba entity, ktoré si pripravím sám.
- doWeatherCycle - obdobne ako u DaylightCycle, nastavuje, či má dochádzať ku striedanie počasia v závislosti na čase. Na creative nastavujem vždy na false, ten dážď je vážne otravný. Obrátene, ak chcete, aby pršalo neustále, tiež sa vám pravidlo bude hodiť.
- keepInventory - nastavuje, či majú po smrti hráčom zostať itemy v inventári. Predvolená hodnota je false, čiže pri smrti itemy vypadnú z hráčov okolo miesta úmrtia. V mapách a na creative odporúčam vždy přenastavovat na true.
- maxEntityCramming - ďalšie pravidlo s číselnou hodnotou. Nastavuje, do koľkých ďalších entít môže entita naraz strkať, než začne dostávať poškodenia (postupne zomrie). Toto pravidlo pridali okrem iného v súvislosti s tým, že hráči vytvárali farmy, kde napríklad v rámci jedného bloku uchovávali treba sto sliepok, aby znášali vajcia do hopper. Predvolená hodnota je 24, nastavením na 0 pravidlo deaktivujete. Môžete to vyskúšať, vezmite si spawn vajíčko, postavte vertikálne tunel 1x1 a naspawnujte doň väčšie množstvo treba kráv, postupne začnú umierať, pretože sa "utlačíme".
- mobGriefing - určuje, či môžu mobové (živočíšne entity) poničiť svet (napr. Creeper výbuchom či Enderman ukradnutím bloku). Netýka sa teda TNT a podobných. Predvolená hodnota je true, nastavujem na false najmä na mapách.
- naturalRegeneration - určuje, či sa má hráčovi samo obnovovať zdravie, pokiaľ je dostatočne najedené (má aspoň 9/10 zaplnených indikátorov zdravia). Bežne je nastavený na true, ak robíte nejakú súbojovú či přežívací mapu, prepnite pokojne na false. Len potom musíte zdravie dopĺňať cez lektvary či efekty (viď. Diel o príkaze / effect).
- randomTickSpeed - pravidlo nastavuje rýchlosť náhodných udalostí. Udalosťami myslím úplne všetko, čo sa v hre deje v nejakom náhodnom časovom intervale, tzn. napr. rast zasiahnutých rastlín a stromov, rast mláďat zvierat v dospelé jedince, šírenie trávy na hlinu, opadávanie lístia ... Tieto udalosti, ako asi tušíte, majú bežne celkom dlhý priebeh, ktorý sa časovo počíta v ticks. Rýchlosť priebehu týchto udalostí môžete zvýšiť zvýšením hodnoty pravidla (je číselná), predvolená hodnota je 3. Nastavením na nulu tieto udalosti vypnete.
- reducedDebugInfo - nastavuje, či sa majú na debug screenu zobrazovať iba určité informácie, s hodnotou true zmiznú napr. všetky informácie o súradniciach, takže napr. keď v rámci mapy hráča teleportuje, nebude môcť zistiť súradnice.
- sendCommandFeedback - nastavuje, či majú príkazy, ktoré vedia vracať textový výstup (správu - ako napr. / testfor), tento vytvárať. Hodí sa, ak príkazy súvisí s hráčom, a nechcete, aby sa im zobrazilo napr. Že im bol zmenený Gamemody, čo je bohužiaľ neovplyvniteľné pravidlom commandBlockOutput.
- showDeathMessages - nastavuje, či sa má po smrti hráča objavovať v chate správa o jeho smrti a spôsobu zabitie. V predvolenom nastavení je samozrejme true, a vypnúť sa hodí napríklad ak vo vašej mape má hráč cielene zomrieť a nechcete aby sa o tom zbytočne objavila správa v chate.
- spawnRadius - tretie pravidlo, ktoré má číselnú hodnotu. Minule som vám zámerne nepovedal, že worldspawn, nastavovaný pomocou / setworldspawn, nie je priamo definitívne miesto, kde sa hráči objavia, ale to miesto môže byť kdekoľvek vo štvorci 21x21 blokov, kedy prostriedok štvorca je práve worldspawn (teda s "polomer" - rádiusom 10 blokov). V multiplayeri je to len 11x11 blokov, teda je polomer len 5 blokov. Týmto pravidlom môžete veľkosť priestoru pre spawn nastaviť, 0 znamená, že to bude vždy na bloku označenom ako worldspawn, predvolená hodnota je 10. Slúži to najmä pre účel rozkladanie hráčov po vyspawnování na multiplayerových svetoch.
- spectatorsGenerateChunks - nastavuje, či hráči s Gamemody spectator ( "pozorovateľ" - špeciálny Gamemody, kde nemôžete nič robiť, ale môžete lietať aj skrz bloky a pozerať sa hráčom do inventárov) môžu generovať nové zavalitý. Ako už viete, zavalitý sa zapínajú a vypínajú podľa toho, či je v nich hráč alebo nie. To, či je prítomný, udáva nastavenie "Render distance" (vykresľovací vzdialenosť), kedy sú načítané všetky zavalitý, do ktorých je hráč schopný dohliadnuť - vzdialenosť sa nastavuje práve počtom zavalitý. Pokiaľ ale nebol ešte chunk vygenerovaný a zrazu ho niekto načíta, vygeneruje sa a uloží do súborov so svetom. Toto pravidlo, s východiskovou hodnotou true, vie vypnúť toto generovanie, ak by ho spustil hráč v režime pozorovateľa; šetrí to veľkosť zložky so svetom. Hodí sa to napr. Keď je v multiplayerovej mape hráč po smrti prepnutý do tohto módu, a mohol by tak spôsobiť nechcenú generáciu teréne
Ak ste práve založili nový creative svet alebo sa chystáte vytvoriť mapu, je dobré si pred začiatkom stavanie aplikovať prenastavenie pre niektoré pravidlá, aby sa vám lepšie žilo. Ja vždy nastavujem nasledujúce:
/gamerule commandBlockOutput false /gamerule doDaylightCycle false -> /time set 6000 /gamerule doWeatherCycle false -> /weather clear /gamerule doMobSpawning false /gamerule doEntityDrops false /gamerule doTileDrops false /gamerule doMobLoot false /gamerule mobGriefing false /gamerule keepInventory true /gamerule randomTickSpeed 2000 /gamerule sendCommandFeedback false
Niekedy, ak testujem nejaký komplexnejší systém, si zapnem commandBlockOutput a sendCommandFeedback, aby som lepšie videl, čo sa deje. Toto moje nastavenie vám odporúčam odskúšať a rozhodnúť si, ktoré pravidlá sa vám hodí alebo nie. Samozrejme si ich v chate projíždějte pomocou stláčanie klávesu Tab, nech sa s nimi nemusíte písať a nech ich vidíte všetky.
Precvičenie
Na koniec dnešného tutoriálu ešte zadám malé precvičenie. Otestujte funkčnosť všetkých dnes naučených pravidiel príkazu / gamerule. Príklady riešte za pomoci command blokov, ktoré nadviažete tlačidlami tak, aby demonštrovali funkčnosť pravidlá. Odpúšťam vám announceAdvancements, doEntityDrops, doFireTick, doLimitedCrafting, doMobLoot, doTileDrops, maxEntityCramming, mobGriefing, naturalRegeneration, randomTickSpeed a spectatorsGenerateChunks, pretože na ich plne automatický dôkaz zatiaľ nemáte potrebné znalosti. Ešte dám príklad. Pravidlo commandBlockOutput otestujete pomocou príkazu / testfor. Vykonáte teda tieto príkazy:
I. - časť pre štandardné správanie
/commandBlockOutput true //nastavíme pravidlo na hodnotu true /testfor @p //v chatu se nyní objeví *[@: Found Krepsy3]* (samozřejmě s vaším jménem)
II. - časť pre upravené správanie
/commandBlockOutput false //nastavíme pravidlo na hodnotu false /testfor @p //v chatu se nyní neobjeví nic
Stláčaním tlačidiel vždy zmeníte hodnotu pravidlá a po tej ju otestujete na rovnakom príkazu. U niektorých pravidiel bude treba ešte resetovacie časť.
Podobným spôsobom otestujte ostatné pravidlá, vždy tak, aby ste dokázali funkčnosť. Riešenie nájdete na svete k stiahnutiu. Pre tento diel je to všetko, nabudúce si preberieme reťazenie command blokov a zakončíme tak prvá časť nášho putovania, ďalej už nás čakajú zložitejšie veci. Máte sa na čo tešiť.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 22x (619.14 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Minecraft