V této lekci si ukážeme 2 užitečné příkazy, kterými můžeme měnit místo, odkud se příkaz spouští nebo entitu, která příkaz spouští.

/execute as

Tento příkaz můžeme využít v případě, že chceme nějaký příkaz spustit jako jiná entita/hráč. Příkaz totiž mění entitu, která příkaz spouští. Připomeňme příkaz /say. Tento příkaz vypíše jméno hráče, který ho spouští a nějakou zprávu. Pokud ale příkaz spustíme z příkazového bloku, žádné jméno nám nevypíše.

To můžeme změnit díky příkazu /execute as.

Pokud dáme do příkazového bloku příkaz

/execute as @p say ahoj

Když příkaz spustíme, napíše se do chatu jméno nejbližšího hráče a zpráva “ahoj”.

Nemusíme se ovšem limitovat pouze na jednoho hráče, ale tento příkaz můžeme spustit pro všechny entity. To uděláme nahrazením @p za @e. Tento příkaz vypíše zprávu “ahoj” za všechny entity, které jsou v načtené oblasti světa a za každou entitu vypíše i její jméno.

/execute at

Na rozdíl od /execute as tento příkaz mění pouze pozici, na které je spouštěn, ale nemění entitu, která příkaz spouští. Dobře to jde vidět na příkazu

/execute at @e setblock ~ ~ ~ stone

Tento příkaz položí blok na místo všech entit.

Pokud bychom ale použili příkaz execute as

/execute as @e setblock ~ ~ ~ stone

tak se blok položí jen místo příkazového bloku nebo na místo, odkud hráč spouští příkaz (pokud jej spouští z chatu). Je to proto, že příkaz se spustí jakoby ho spouštěla každá entita zvlášť, ale pozice jsou stále stejné - místo, odkud se spouští příkaz.

Změnu souřadnic ale můžeme využít i na zajímavější věci, než jenom pokládání bloku a to na kontrolu bloku pod hráči. To uděláme tak, že zkombinujeme tyto dva příkazy dohromady.

/execute as @a at @s if block ~ ~-1 ~ stone run say kámen

Spustíme příkaz za všechny hráče as @a a na souřadnicích každého hráče at @s zkontrolujeme, zda se pod hráčem nachází určitý blok if block ~ ~-1 ~ stone.

@s

Označení @s znamená aktuální entita, což můžeme brát tak, že to je entita, která spouští příkaz. Pokud to tedy použijeme v kombinaci s /execute as @a, tak to znamená, že se pro každého hráče zvlášť provede nějaká další kontrola/akce.

Tímto způsobem můžeme použít i jakýkoliv jiný příkaz. Například můžeme dát efekt nějakému hráči, který stojí na určitém bloku.

/execute as @a at @s if block ~ ~-1 ~ stone run effect give @s minecraft:blindness 10 1 true

Příkaz effect

Podrobnosti o příkazu effect najdete v lekci 16 Příkaz effect a teleport