V přechozích lekcích jsme si ukazovali, jak pomocí příkazu execute otestovat nějaký blok. Nyní si ukážeme, jak pomocí tohoto příkazu otestovat, zda existuje nějaká entita a jak tento příkaz využít na otestování vzdálenosti hráče.

Testování entit

Entity můžeme testovat následujícím příkazem:

/execute if entity <cíl>

Tímto příkazem můžeme testovat, zda daná entita existuje a případně, zda splňuje vlastnosti, které chceme

  • cíl zadáváme buď pomocí @ nebo přímo jménem hráče

Znak @

@ - Ctrl+Alt+V
Místo Ctrl+Alt můžeme použít klávesu AltGr (klávesa Alt na pravé straně klávesnice)*

Například můžeme otestovat, zda ve světě existuje nějaký hráč:

/execute if entity @a

Tento příkaz nám vypíše zprávu Zkouška proběhla úspěšně, počet: 1. Nejen, že nám tedy zobrazí informaci, zda nějaká taková entita existuje, ale dokonce nám vrátí i počet.

Například tedy pomocí následujícího příkazu můžeme otestovat celkový počet entit ve světě:

/execute if entity @e

Omezení

Příkaz na testování entit testuje pouze entity v načtené oblasti. Tedy v oblasti okolo hráče. Nevrací nám tedy informaci o všech entitách v celém světě, ale jen okolo hráče.

Testování vlastností

Testování entit dále můžeme omezit tím, že uvedeme vlastnosti, které chceme, aby entita splňovala. Například můžeme testovat typ entit (zombie, hráč,…) nebo zda se entita nachází v určité vzdálenosti od pozice, kde se spouští příkaz.

Vlastnosti, které chceme otestovat píšeme přímo za cíl do hranatých závorek []

Hranaté závorky []

[ - Ctrl+Alt+F
] - Ctrl+Alt+G
Místo Ctrl+Alt můžeme použít klávesu AltGr (klávesa Alt na pravé straně klávesnice)

Tyto vlastnosti můžeme testovat jen, když použijeme výběr pomocí @. Vlastnost zadáváme jako vlastnost=hodnota a můžeme kombinovat i více vlastností, ty oddělíme čárkou ,.

Například pomocí následujícího příkazu můžeme otestovat, zda se v okolí nachází nějaký zombie:

/execute if entity @e[type=minecraft:zombie]

Dále můžeme testovat vzdálenost entity. To uděláme pomocí vlastnosti distance. Pokud bychom ale zadali jen přesné číslo, tak nám příkaz nebude fungovat, protože by hráč musel být přesně v dané vzdálenosti a to se nám jen tak nepovede. Proto u této vlastnosti většinou používáme rozmezí hodnot. Testujeme tedy, zda je hráč/entita ve vzdálenosti větší nebo menší, než nějaké číslo nebo testujeme rozsah hodnot. Na určení těchto rozsahů používáme dvě tečky ..:

  • ..5 jsou čísla menší než 5
  • 5.. jsou čísla větší než 5
  • 1..5 jsou čísla v rozmezí 1 až 5

Vyzkoušet si to můžeme tak, že položíme opakovací příkazový blok nastavený na vždy aktivní následujícím způsobem: A pomocí následujícího příkazu můžeme testovat, zda je nějaký hráč blíže, než 5 bloků od příkazového bloku:

/execute if entity @p[distance=..5]

Pokud se hráč k příkazovému bloku přiblíží, tak se rozsvítí lampa. Jakmile se hráč vzdálí, tak lampa zhasne.

Dále můžeme stejně jako u testování bloku použít slovo run a spustit nějaký příkaz.

/execute if entity @p[distance=..5] run say ahoj

Tento příkaz bude do chatu vypisovat zprávu ahoj, jakmile se k příkazovému bloku přiblíží nějaký hráč.