Přidat článek mezi oblíbenéZasílat nové komentáře e-mailem Vzdálené ovládání výhybek v Minecraftu

V článku si ukážeme, jak na železnici v Minecraftu ovládat výhybky na velkou vzdálenost. Použijeme k tomu command blocky.

Ovládání výhybek v Minecratu je nejjednoduší pomocí přepínače, páčky (lever), umístěné třeba vedle ní. Prostým přepínáním páčky doleva/doprava výhybku přepínáme do požadovaného směru, viz obrázky:

[1734-1-png]

[1735-2-png]

Stejného přehazování výhybky dosáhneme také, pokud páčku od výhybky přesuneme někam, kde se nám to bude více hodit, pomocí redstoneového vedení. Příklad je na dalším obrázku, redstoneové vedení můžeme schovat pod zem nebo pod "nástupiště" vedle kolejí.

[1736-3-png]

Tohle řešení je jednoduché a u malých železničních projektů i akceptovatelné. Horší situace nastane, pokud železniční síť v našem světě je docela rozsáhlá co do vzdáleností, s větším množstvím křižovatek. Možnosti samozřejmě existují. Třeba natáhnout redstoneové vedení na velké vzdálenosti, což bude neuvěřitelně pracné, protože vedení pravděpodobně budeme chtít skrýt. Další možnost je před křižovatku ze všech směrů zařadit napájené koleje, které ale napájené nebudou, viz další obrázek:

[1737-4-png]

Při jízdě z kteréhokoliv směru na napájené koleji, která napájená není, vagón zastaví. Pak můžeme bez vystupování rukou nastavit výhybku do požadovaného směru a ručně (defaultně klávesou W) se rozjet přes křižovatku. Až narazíme na napájenou kolej "pod proudem" (tedy napájenou redstonem), pojedeme už dále sami.

Byl jsem na návštěvě na jednom soukromém serveru, kde bylo cestování po železnici vyřešeno "výdejem jízdenek", kdy po jejím obdržení došlo k přestavení výhybek tak, aby ze zájemce o cestování na určité místo tam bez zastavování a přestupování dostal. Podrobnosti nevím, jedná se nějaký multiplayerový addon. Hledal jsem možnosti, jak něčeho obdobného dosáhnout i v singlu.

V Minecraftu bohužel neexistuje něco jako bezdrátový přenos signálu, který by vzdálené ovládání výhybek velmi zjednodušil. Hledal jsem, čím bych to mohl nahradit a jako jediná možnost se mi jeví použití příkazového bloku (command block). Dále budu pro zjednodušení uvádět jen zkratku CB.

[1738-5-png]

CB je blok, který v hře o přežití (survival) neexistuje. Neexistuje ani v kreativním módu, je nutno jej vyvovat příkazem, pokud je povoleno cheatování. Ukážeme si, jak se k CB dostat i v rozehrané hře o přežití, kdy cheaty nejsou povoleny.

1. Během hry zmáčkneme Esc, v nabídce vybereme položku "Zpřístupnit pro LAN" (Open to LAN), dále nastavíme "Povolit podvádění" na Zapnuto (Allow Cheats) a spustíme hru pomocí "Spusť svět pro LAN" (Start LAN World). Jedná se pouze o dočasné nastavení, po uložení a znovunačtení hry budeme zase ve světě bez cheatů.

2. Ve spuštěné LAN hře s cheaty se "přepneme" do kreativního módu. Stisknutím konzole (defaultně T) vyvoláme příkazový řádek, do kterého napíšeme

/gamemode 1 <jméno_hráče>

tedy například

/gamemode 1 Pavel

Pro pořádek uvádím i příkaz k přepnutí z kreativu do survivalu, je to

/gamemode 0 <jméno_hráče>

3. "Vyčarujeme" si CB, raději rovnou dostatečné množství. V konzoli (klávesa T) napíšeme

/give <jméno_hráče> minecraft:command_block <počet>

Tedy například příkaz

/give Pavel minecraft:command_block 64

přidá hráči jménem Pavel 64 kusů CB.
Těchto CB si rovnou vygenerujeme dostatečné množství.

Pokud hru uložíme a restartujeme, jsme opět v módu o přežití, příkazy nefungují. Pokud umístíme někam CB, je neovladatelný a nedá se následně normálně odstranit (rozbít). Jde to jedině za použití příkazů (v režimu cheatů), změnou CB na vzduch.

To teď nechceme (pokud bychom tak učinili, opět bychom se výše uvedeným postupem museli dostat do kreativního módu s cheaty), takže hru po získání CB neukládáme, nerestartujeme. Pokračujeme v kreativním módu hry.

-----------
Trochu obecných informací o CB.
Po kliknutí na někam umístěný CB pravým tlačítkem myši se objeví následující GUI:

[1739-6-png]

Do horního řádku se zadává příkaz.

Podrobné informace pro zájemce (v angličtině):
Command_Block
Commands

Kdo se nechce CB teoreticky více zabývat, může klidně pokračovat dál a výše uvedené linky nemusí studovat
-----------

Pro vzdálené nastavení správného směru výhybky využijeme vlastností kolejí v Minecraftu (zájemci mohou studovat tady: Rail). Kolej (pomineme-li stoupání) může nabývat těchto hodnot (parametr block data):

0 - rovná kolej ve směru sever-jih
1 - rovná kolej ve směru východ-západ
6 - odbočka ve směru jih-východ
7 - odbočka ve směru jih-západ
8 - odbočka ve směru sever-západ
9 - odbočka ve směru sever-východ

Do CB (umístěného kdekoliv na mapě) zadáme příkaz, který vyplní prostor, kde má výhybka být, tím správným typem koleje/odbočky, který potřebujeme. Místo přepínání páčkou či páčkou s redstoneovým vedením prostě vygenerujeme požadovaný tvar bloku "koleje". Nakonec, i ta páčka nedělá nic jiného. Příkaz má tvar

fill <x1> <y1> <z1> <x2> <y2> <z2> rail <parametr>

X, Y, Z jsou souřadnice, *1 a *2 označují počátek a konec ohraničeného prostoru. My chceme vyplnit jen jeden blok (výhybku), takže počáteční a koncové hodnoty budou stejné.

Příklad: chceme-li nastavit výhybku na souřadnicích 100 4 80 (druhé číslo je výška!) ve směru jih-západ, do CB napíšeme příkaz:

fill 100 4 80 100 4 80 rail 7

Na CB umístíme tlačítko. Přitom je třeba držet Shift, jinak otevřeme menu CB. Stisknutím tlačítka se provede příkaz v CB, tedy kolej na souřadnicích 100 4 80 bude nastavena ve směru jih-západ.
Potřebujeme přepínat výhybku i do směru jih-východ, proto si obdobně připravíme další CB, tentokrát s příkazem

fill 100 4 80 100 4 80 rail 6

Přidáme tlačítko.
Teď si můžeme stisknutím jednoho z tlačítek vybírat směr výhybky. I když jsme stovky metrů daleko.

Celá situace z výše uvedeného příkladu je na následujících obrázcích:

[1740-7-png]

[1741-8-png]

[1742-9-png]

CB můžeme schovat za zeď. Tlačítko na zdi pak s CB spojíme redstonem.

[1733-10-png]

Pro aktivaci příkazu CB můžeme použít také nášlapné desky. Doplnění tabulek s příslušným popiskem je už jen estetická záležitost.

Bohužel je zde jedno omezení, vyplývající z toho, že příkaz /fill funguje jen v renderovaném světě. Maximální vzdálenost činí 32 chunků, tedy 512 bloků/metrů. Pátrám nad cestami, jak tohle nějak obejít. Nelze tedy takto přehazovat výhybky třeba kilometr daleko.

To je pro dnešek vše.
Závěrem děkuji J.R.Ewingovi, který mě na hledání vzdáleného ovládání výhybek "navnadil".

--------
V dalším (připravovaném) článku si ukážeme pokročilejší postupy použití CB při jednoduchém nastavování celých složitých tras (více výhybek) jedním kliknutím, možnosti automatického zastavení při zvolení cíle cesty někde uprostřed trati, optimalizaci ovládání rozsáhlých železničních sítí při cestování z různých míst.

Předmět Autor Datum
Jak uvedeno dole v článku, přehazování výhybek funguje jen tehdy, pokud se tak děje v načtených chun…
L-Core 22.06.2015 21:59
L-Core
no docela si mně zklamal to si nemůžeš vypnout déšť a dát perma den? :-D
Ekmos 09.08.2015 19:27
Ekmos
To asi jo, ale musel bych hledat příkaz :-) Myslím, že ten déšť v tomhle případě (ilustrační obrázky… poslední
L-Core 09.08.2015 20:46
L-Core

Jak uvedeno dole v článku, přehazování výhybek funguje jen tehdy, pokud se tak děje v načtených chuncích, tedy do maximální vzdálenosti 32 chunků. Hledal jsem, jak toto obejít - a (asi) našel.

Finta je v tom, nějak donutit cílovou oblast (chunk, kde chceme výhybku přehodit), aby byla aktivní. Toho lze dosáhnout příkazem /spreadplayers, který na chvíli načte cílový chunk (stejný, ve kterém chceme přehazovat výhybku - tedy vlastně měnit blok).

Podrobnější popis:
Jde o sekvenci čtyř příkazů, zadávaných v posloupnosti. Vytvoříme si "řetězec" 4 command blocků, mezi druhým a třetím dávám krátkou prodlevu (jeden "natažený" repeater).

/summon ArmorStand ~ ~1 ~ {Marker:1,Invisible:1,CustomName:"ANCHOR"}
/spreadplayers X* Z* 0 1 false @e[type=ArmorStand,name=ANCHOR]
/fill X1 Y1 Z1 X2 Y2 Z2 rail <parametr>
/kill @e[type=ArmorStand,name=ANCHOR]

O co v příkazech jde?

1. Vygenerujeme si pomocný item, stojan na brnění, neviditelný, pojmenovaný ANCHOR.
2. Ten přesuneme na souřadnice X* Z* (Y, výška se nezadává). Tenhle přesun způsobí to, že se asi na 3 vteřiny načte chunk, kde se nachází souřadnice X* Z*. To potřebujeme, toho využijeme.
3. Vygenerujeme požadovaný typ koleje na souřadnicích X1 Y1 Z1 (souřadnice *2 jsou totožné), které se nachází ve stejném chunku.
4. Odstraníme ("zabijeme") ten stojan.

Testováno v Minecraftu 1.8.0, s OptiFine & LiteLoader, bez Forge. Vzdálenost mezi mnou (tedy u command blocků) a výhybkou byla asi 700 metrů/bloků.

(původně mi to nějak nefungovalo, problém byl právě v tom, že stojan a výhybka nebyly ve stejném chunku, prostě jsem se "strefil" těsně za jeho hranice)

Zpět na články Přidat komentář k článku Nahoru