/execute

V tomto návodu si ukážeme, jak v Minecraftu používat příkaz /execute. Execute (anglicky Proveď) je příkaz, který nám umožňuje měnit způsob, kterým se spouští Minecraftové příkazy. Může měnit kdo spouští příkaz (pokud například v příkazu používáš @s), odkud se příkaz spouští (pokud například v příkazu používáš relativní souřadnice; ~ ~ ~), nebo třeba kontrolovat podmínky.

Když v Minecraftu začneš psát příkaz /execute, bude se ti hra snažit doplnit nějaké možnosti; jsou to způsoby, kterými můžeš příkaz /execute používat. V tomto návodu si ukážeme funkce pár nejdůležitějších. Pokud se na to cítíš, můžeš si (v angličtině) přečíst více zde: Minecraft Wiki.

run

Možnost run je nejzákladnější možností, kterou můžeš do příkazu /execute napsat. Možnost run upřesňuje, jaký příkaz se má spustit. Do příkazu za run nepíšeme lomítko (/). Možnost run se většinou píše jako poslední. Vezmeme si jako příklad příkaz /say:

execute run say 😀

Příkaz /say donutí nějakou entitu napsat zprávu do chatu. Tento /execute příkaz neprovádí žádné změny, pouze obsahuje možnost run. Tento příkladový příkaz bude mít stejný výsledek, jako příkaz /say 😀. Samo o sobě je to trochu zbytečné, tak se společně podíváme, jak můžeme jinými možnostmi upravit Minecraft příkazy.

as

Možnost as v příkazu /execute nám umožňuje měnit, kdo spouští příkaz. To se hodí například v situacích, kdy používáme v příkazu selektor @s (což znamená spouštějící příkaz). Můžeme si to ukázat na příkazu /say:

execute run say 😀

Použijeme příkaz z předchozí části návodu. Tento příkaz jednoduše pošle do chatu zprávu. Když takový příkaz zadáš do command blocku a spustíš ho, stane se toto:

Do chatu přijde zpráva od uživatele “@”, toto jméno v chatu zobrazuje command blocky

Protože je příkaz v command blocku a nijak jsme neupravili kdo příkaz spouští, přijde do chatu zpráva od command blocku. Jak to změníme?

execute as @a run say 😀

Před run jsme přidali as @a. Když do příkazu /execute přidáš as, budeš muset napsat jméno hráče, který má příkaz spustit. Použít můžeš i selektory (@a, @s, @e, @p, @r). My jsme použili @a, tedy všechny hráče. Když takový příkaz spustíš, zpráva do chatu nebude napsaná command blockem, ale jménem všech hráčů.

Když jsme tento příkaz spustili my, byl na našem serveru pouze jeden hráč, takže se příkaz spustil jen jednou. Pokud máš na serveru víc hráčů, příkaz se spustí víckrát, pro každého hráče jednou.

Ukážeme si ještě jeden příkaz:

execute as @e run say 😀

Vyměnili jsme @a za @e, což znamená všechny entity. Takový příkaz donutí všechny entity poslat do chatu zprávu. Výsledek by mohl vypadat nějak takto:

Na mapu jsme přidali pár prasátek. Po levé straně můžeš vidět jejich zprávy v chatu.

Takže ještě jednou: V /execute ti možnost as dovoluje změnit, kdo příkaz spouští; jako kdyby hráč příkaz spustil přímo ze svého chatu.

DŮLEŽITÉ: Pokud používáš /execute na svém Minecraft serveru, nezáleží, jestli má hráč oprávnění spustit příkaz napsaný v možnosti run, nebo ne. /execute permise obchází.

at

Možnost at v příkazu /execute nám umožňuje měnit, kde se spouští příkaz. To se hodí například v situacích, kdy pracujeme s relativními souřadnicemi (~ ~ ~)

Uvedeme si jako příklad příkaz /setblock:

execute run setblock ~ ~-1 ~ red_wool

Tento příkaz změní kostku o jeden blok níž na červenou vlnu. A odkud? Protože v příkazu není žádné upřesnění, použije se umístění command blocku.

Jako výchozí umístění se použily souřadnice command blocku, takže souřadnice ~ ~-1 ~ ukazují na kostku pod command blockem. Nyní přijde úprava s at:

execute at @p run setblock ~ ~-1 ~ red_wool

Tento příkaz se bude spouštět z pozice nejbližšího hráče (protože používáme @p). Když tento příkaz spustíme, blok pod nejbližším hráčem se změní:

Stejně jako s možností as, i at může příkaz spustit vícekrát, pokud je pozic víc. To se projeví například když místo @p použiješ @a.

positioned

Možnost positioned v příkazu /execute nám umožňuje měnit, z jakých souřadnic se příkaz spouští. To se hodí v situacích, kdy potřebujeme příkaz spouštět na jiném místě, ale na tom místě nejsou entity. Můžeme tak nastavit souřadnicové umístění, ze kterého se příkaz spouští.

Řekněme, že chceš mít někde command block, který odmění nejbližšího hráče diamantem. Mohl by vypadat takto:

execute run give @p diamond

Kdyby někdo takový command block spustil, dostal by nejbližší hráč do ruky diamant. Nejbližší čemu? Protože jsme nenapsali ani at, ani positioned, diamant dostane ten, kdo je nejblíž command blocku. Co kdyby jsme ale chtěli, aby se nejbližší hráč zjišťoval z jiného místa? Pro to můžeš použít možnost positioned.

execute positioned 4 -53 160 run give @p diamond

Přidali jsme možnost positioned, a k ní napsali souřadnice. Diamant by nyní dostal ten hráč, který je nejblíž pozici 4 -53 160.

if

Možnost if nám v příkazu /execute umožňuje nastavit podmínku. Pokud tato podmínka není splněna, příkaz se vůbec nespustí. Tímto můžeš vytvořit například stavby, které reagují na blízkost hráčů (například světlo, které svítí jen, když je nějaký hráč nablízku).

Když v příkazu execute začneš psát možnost if, zobrazí se řada podmožností:

Podíváme se společně na pár nejdůležitějších z nich.

if – entity

Možnost execute if entity nám umožňuje zkontrolovat, jestli existuje nějaká entita – tedy mob, zvíře, hráč, armor stand a jiné. Za execute if entity píšeme jméno hráče nebo selektor.

Jako příklad si uvedeme příkaz, který bude psát do chatu, když je ve světě Ender drak:

execute if entity @e[type=ender_dragon] run say Ender Dragon! :O

Použili jsme selektor @e (všechny entity), a dále filtr, který omezí výběr jen na entity, které jsou typu “ender_dragon”. if entity kontroluje, jestli může takovou entitu najít. Pokud ve světě nebude Ender drak, počet nalezených entit bude 0, a příkaz say se nespustí.

PRO TIP: Více užitečných informací o práci se selektory najdeš v návodu – odkaz zde

Command block jsme nastavili jako Repeat a Always active; po přivolání Ender draka se stane toto:

if – block

Možnost execute if block nám umožňuje zkontrolovat, jestli je na nějakém místě nějaký block. To se nám může hodit například v minihrách, kde musíme najít skryté tlačítko. Pomocí execute if block můžeme zjistit, jestli je toto tlačítko zmáčknuté. Ale teď jednodušší příklad:

execute if block ~ ~1 ~ gold_block run say Gold

Tento příkaz zjišťuje, jestli je blok nad spouštícím command blockem blok zlata. Pokud ano, napíše do chatu zprávu.

Nad command blockem je hlína, po stisknutí tlačítka se nic nestane
Nad command blockem je zlato, po stisknutí tlačítka se spustí příkaz

if – score

Možnost execute if score nám umožňuje zkontrolovat stav skóre nějakého hráče. K tomu je důležité vědět, jak funguje příkaz /scoreboard. Můžeme zjistit, jestli je nižší, vyšší nebo rovné bodům jiného hráče, nebo jestli spadá do nějakého rozsahu.

Uvažujme, že máme v našem Minecraft světě scoreboard, který se jmenuje Scoreboard, a dva hráče, Alex a Steve:

Jejich skóre můžeme porovnat třeba takto:

execute if score Alex Scoreboard > Steve Scoreboard run give Alex diamond

Takový příkaz by dal hráči Alex do inventáře diamant v případě, že jeho skóre je vyšší než skóre hráče Steve.

Pro porovnání můžeš použít tato znaménka:

  • > Větší než
  • < Menší než
  • >= Větší než nebo stejné
  • <= Menší než nebo stejné
  • = Stejné

Také můžeš použít rozsah, pokud chceš zkontrolovat skóre, ale nechceš ho porovnávat s někým jiným:

execute if score Alex Scoreboard matches 50.. run give Alex diamond

Tento příkaz by dal hráči Alex do inventáře diamant v případě, že jeho skóre je v rozsahu 50.., tedy 50 a víc.

unless

Možnost unless má v Minecraftu podobné použití jako if – ve skutečnosti používá stejné podpříkazy: block, entity, score… Ale v čem je jiný? Jak vyplývá z názvu (unless – anglicky když ne), unless má opačný účinek jako if. Příkaz, který obsahuje unless se spustí když, ale nespustí se, když je podmínka splněná. Unless tedy zablokuje spuštění příkazu, když je nějaká podmínka splněna.

Kombinování možností v /execute

Možnosti příkazu /execute jdou všelijak kombinovat a vrstvit. Můžeš kontrolovat podmínku a zároveň příkaz spouštět na jiném místě, kontrolovat více podmínek, a jiné. Zde je pár příkladů:

Zkontroluje, jestli má Alex vyšší skóre než Steve a zároveň jestli má Alex více než 50:

execute if score Alex Scoreboard matches 50.. if score Alex Scoreboard > Steve Scoreboard run give Alex diamond

Teleportuje všechny hráče o blok vzhůru:

execute as @a at @s run tp @s ~ ~1 ~

Zkontroluje, jestli hráč stojí na kostce zlata, a jestli ano, dá mu diamant:

execute as @a at @s if block ~ ~-1 ~ gold_block run give @s diamond

/replaceitem

V tomto návodu se naučíme jak na tento příkaz. /replaceitem nahradí nějakou věc v inventáři, hotabaru nebo ve slotech například na nějaký nástroj. Jsou dvě varianty buď /replaceitem entity to nahradí item třeba na hráči, nebo v jeho inventáři, nebo také /repaceitem block tento příkaz nahradí item z truhly. V závěru návodu máte spoustu příkladů jak jednoduchých tak pokročilých, nebo pro zapálené hráče i velmi pokročilé.

Continue reading “/replaceitem”