6. díl - Programování v Minecraftu - Příkaz /gamerule

Ostatní jazyky Minecraft Programování v Minecraftu - Příkaz /gamerule

V minulém díle seriálu o programování v Minecraftu jsme si představili příkazy pro manipulaci se světem. Dnes toto téma zakončíme příkazem /gamerule, který rozebereme podrobně.

Příkaz /gamerule

Tento příkaz již podle názvu mění "pravidla hry" a to interně, v každém světě samostatně, podobně jako /difficulty. Tato pravidla mění standardní chování hry (resp. když jsou pravidla ve své výchozí podobě, hra se chová normálně). Kompletní tabulku najdete na minecraft wiki (http://minecraft.gamepedia.com/Commands#…), já je zde rozeberu poněkud podrobněji.

Nejprve syntaxe příkazu:

/gamerule <pravidlo> [hodnota]

Jak můžete vidět, každé pravidlo má svou hodnotu - pokud ji v příkazu neuvedete, příkaz hodnotu sdělí, jinak ji přenastaví. Tato hodnota je většinou typu "boolean", čili pravda nebo nepravda - zadáte "true" nebo "false" (bez uvozovek). Někdy je také hodnota číselná, kdy zadáte příslušné číslo. Seznam níže obsahuje pravidla s vysvětlením funkčnosti a mým komentářem k používání. V seznamu záměrně vynechávám pravidla pro změnu chování serverů (multiplayerová pravidla), tím se nebudeme zbytečně zatěžovat, protože pouze mění některé funkce serverů.

Seznam pravidel

  • commandBlockOu­tput - nastavuje, zda mají command bloky psát do chatu zprávu o úspěšném provedení příkazu (např. [@: Found Krepsy3] po nalezení přes /testfor). Výchozí hodnota je true, nastavuji ji na false na creative světech a v mapách.
  • doDaylightCycle - nastavuje, zda má slunce obíhat po obloze, tedy i plynutí času. Výchozí hodnota je true, na creative světech nastavuji na false v kombinaci s /time set 6000, je pak stále pravé poledne.
  • doEntityDrops, doMobLoot a doTileDrops - všechna tři pravidla nastavují, jestli mají padat itemy (entity - z entit nepříšer, mob - z příšer, tile - z rozbití bloků). Výchozí hodnota je true a kdykoli stavím něco v creative, vždy si dám false, mnohem lépe se udržuje čistota inventáře (jinak stále padají redstone dusty z rozbití bloku pod nimi apod.)
  • doFireTick - nastavuje, zdali se má šířit oheň po pálitelných blocích, jako je dřevo či uhlí. Výchozí hodnota je true, na false nastavuji např. pokud mám ohniště u dřevěného baráku (v creative).
  • doMobSpawning - určuje, zdali má probíhat spawnování zvířat (na trávě) a příšer (ve tmě), výchozí hodnota je true. Na creative světech a mapách nastavuji vždy na false, přítomny tedy budou pouze entity, které si připravím sám.
  • doWeatherCycle - obdobně jako u DaylightCycle, nastavuje, zdali má docházet ke střídání počasí v závislosti na čase. Na creative nastavuji vždy na false, ten déšť je vážně otravný. Obráceně, pokud chcete, aby pršelo neustále, také se vám pravidlo bude hodit.
  • keepInventory - nastavuje, zdali mají po smrti hráčům zůstat itemy v inventáři. Výchozí hodnota je false, čili při smrti itemy vypadnou z hráče kolem místa úmrtí. V mapách a na creative doporučuji vždy přenastavovat na true.
  • maxEntityCramming - další pravidlo s číselnou hodnotou. Nastavuje, do kolika dalších entit může entita naráz strkat, než začne dostávat poškození (postupně zemře). Toto pravidlo přidali mimo jiné v souvislosti s tím, že hráči vytvářeli farmy, kde například v rámci jednoho bloku uchovávali třeba sto slepic, aby snášely vejce do hopperů. Výchozí hodnota je 24, nastavením na 0 pravidlo deaktivujete. Můžete to vyzkoušet, vezměte si spawn vajíčko, postavte vertikální tunel 1x1 a naspawnujte do něj větší množství třeba krav, postupně začnou umírat, protože se "umačkají".
  • mobGriefing - určuje, zdali mohou mobové (živočišné entity) poničit svět (např. Creeper výbuchem či Enderman ukradením bloku). Netýká se tedy TNT a podobných. Výchozí hodnota je true, nastavuji na false zejména na mapách.
  • naturalRegene­ration - určuje, zdali se má hráčovi samo obnovovat zdraví, pokud je dostatečně najedený (má alespoň 9/10 zaplněných indikátorů zdraví). Běžně je nastaven na true, pokud děláte nějakou soubojovou či přežívací mapu, přepněte klidně na false. Jen pak musíte zdraví doplňovat přes lektvary či efekty (viz. díl o příkazu /effect).
  • randomTickSpeed - pravidlo nastavuje rychlost náhodných událostí. Událostmi myslím úplně vše, co se ve hře děje v nějakém náhodném časovém intervalu, tzn. např. růst zasázených rostlin a stromů, růst mláďat zvířat v dospělce, šíření trávy na hlínu, opadávání listí... Tyto události, jak asi tušíte, mají běžně docela dlouhý průběh, který se časově počítá v ticks. Rychlost průběhu těchto událostí můžete zvýšit zvýšením hodnoty pravidla (je číselná), výchozí hodnota je 3. Nastavením na nulu tyto události vypnete.
  • reducedDebugInfo - nastavuje, zda se mají na debug screenu zobrazovat pouze určité informace, s hodnotou true zmizí např. všechny informace o souřadnicích, takže např. pokud v rámci mapy hráče teleportujete, nebude moci zjistit souřadnice.
  • sendCommandFe­edback - nastavuje, zda mají příkazy, které umí vracet textový výstup (zprávu – jako např. /testfor), tento vytvářet. Hodí se, pokud příkazy souvisí s hráčem, a nechcete, aby se jim zobrazilo např. že jim byl změněn gamemode, což je bohužel neovlivnitelné pravidlem commandBlockOutput.
  • showDeathMessages - nastavuje, zda se má po smrti hráče objevovat v chatu zpráva o jeho smrti a způsobu zabití. Ve výchozím nastavení je samozřejmě true, a vypnout se hodí třeba pokud ve vaší mapě má hráč cíleně zemřít a nechcete aby se o tom zbytečně objevila zpráva v chatu.
  • spawnRadius - třetí pravidlo, které má číselnou hodnotu. Minule jsem vám záměrně neřekl, že worldspawn, nastavovaný pomocí /setworldspawn, není přímo definitivní místo, kde se hráči objeví, ale to místo může být kdekoliv ve čtverci 21x21 bloků, kdy prostředek čtverce je právě worldspawn (tedy s "poloměrem" - radiusem 10 bloků). V multiplayeru je to jen 11x11 bloků, tedy je poloměr pouhých 5 bloků. Tímto pravidlem můžete velikost prostoru pro spawn nastavit, 0 znamená, že to bude vždy na bloku označeném jako worldspawn, výchozí hodnota je 10. Slouží to zejména pro účel rozprostření hráčů po vyspawnování na multiplayerových světech.
  • spectatorsGene­rateChunks - nastavuje, zdali hráči s gamemode spectator ("pozorovatel" - speciální gamemode, kde nemůžete nic dělat, ale můžete létat i skrz bloky a dívat se hráčům do inventářů) mohou generovat nové chunky. Jak již víte, chunky se zapínají a vypínají podle toho, zdali je v nich hráč či ne. To, zdali je přítomen, udává nastavení "Render distance" (vykreslovací vzdálenost), kdy jsou načteny všechny chunky, do kterých je hráč schopen dohlédnout - vzdálenost se nastavuje právě počtem chunků. Pokud ale nebyl ještě chunk vygenerován a najednou ho někdo načte, vygeneruje se a uloží do souborů se světem. Toto pravidlo, s výchozí hodnotou true, umí vypnout toto generování, pokud by ho spustil hráč v režimu pozorovatele; šetří to velikost složky se světem. Hodí se to např. pokud je v multiplayerové mapě hráč po smrti přepnut do tohoto módu, a mohl by tak způsobit nechtěnou generaci terénu

Nastavení nového světa

Pokud jste právě založili nový creative svět nebo se chystáte vytvořit mapu, je dobré si před začátkem stavění aplikovat přenastavení pro některá pravidla, aby se vám lépe žilo. Já vždycky nastavuji následující:

/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

Někdy, pokud testuji nějaký komplexnější systém, si zapnu commandBlockOutput a sendCommandFe­edback, abych lépe viděl, co se děje. Toto mé nastavení vám doporučuji odzkoušet a rozhodnout si, která pravidla se vám hodí či ne. Samozřejmě si je v chatu projíždějte pomocí mačkání klávesy Tab, ať se s nimi nemusíte psát a ať je vidíte všechna.

Procvičení

Na konec dnešního tutoriálu ještě zadám malé procvičení. Otestujte funkčnost všech dnes naučených pravidel příkazu /gamerule. Příklady řešte za pomoci command bloků, které navážete tlačítky tak, aby demonstrovaly funkčnost pravidla. Odpouštím vám doEntityDrops, doFireTick, doMobLoot, doTileDrops, maxEntityCramming, mobGriefing, naturalRegeneration a randomTickSpeed, protože na jejich plně automatický důkaz zatím nemáte potřebné znalosti. Ještě dám příklad. Pravidlo commandBlockOutput otestujete pomocí příkazu /testfor. Provedete tedy tyto příkazy:

I. - část pro standardní chování
/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. - část pro upravené chování
/commandBlockOutput false //nastavíme pravidlo na hodnotu false
/testfor @p //v chatu se nyní neobjeví nic

Mačkáním tlačítek vždy změníte hodnotu pravidla a po té ji otestujete na stejném příkazu. U některých pravidel bude potřeba ještě resetovací část.

Zapojené command bloky ve dvou větvích pro důkaz pravidla

Podobným způsobem otestujte ostatní pravidla, vždy tak, abyste dokázali funkčnost. Řešení najdete na světě ke stažení. Pro tento díl je to vše, příště si probereme řetězení command bloků a zakončíme tak první část našeho putování, dále už nás čekají složitější věci. Máte se na co těšit.


 

Stáhnout

Staženo 3x (610.42 kB)
Aplikace je včetně zdrojových kódů v jazyce Minecraft

 

  Aktivity (6)

Článek pro vás napsal krepsy3
Avatar
Autor se učí programovat zde na itnetworku, zatím zejména jazyk C#. Znalosti chce mít ucelené, proto při vývoji aplikací studuje potřebné funkce do hloubky. Vyzná se v programování ve hrách, jako je Minecraft či Ricochet.

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 



 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!