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.
@sOznačení
@sznamená 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
effectPodrobnosti o příkazu
effectnajdete v lekci 16 Příkaz effect a teleport