Еще раз приветствую вас, дорогие юзеры сайта!
В этой новости предоставлена информация по интересному и нужному параметру detect в работе с командой /execute
Принцип данного параметра в том, что он позволяет задать условие обнаружения любой сущности относительно указанного блока. И если нужная нам сущность будет обнаружена на заданном удалении от указанного нами блока, то выполнится команда, которую мы задали в этом же командном блоке.
Если прежде, чтоб обнаружить сущность нам нужно было поставить командный блок с тестом этой сущности в определенных координатах, далее после командного блока вставляли компаратор, чтоб при положительном тесте и обнаружении сущности давался из командного блока на него сигнал. И после компаратора приходилось ставить другой командный блок с командой, которая должна будет выполниться, если эта сущность будет обнаружена. То теперь при помощи параметра detect мы можем сделать всё это в одном командном блоке и без задержки, причем поставив ориентиром обнаружения не координаты, а нужный блок.
Чтобы вам было понятно, как это работает, я предлагаю посмотреть видео, где показаны варианты работы этого параметра и предоставлены несколько разных типов сущностей - от игрока до снежка.
Командные блоки с такими командами необходимо присоединить к импульсам сигналов. Чем чаще импульс, тем лучше работает команда.
1. Поставить блок красного камня в указанных координатах, если под игроком на один блок ниже будет располагаться блок кварца
execute @a ~ ~ ~ detect ~ ~-1 ~ minecraft:quartz_block 0 setblock 704 4 -25 minecraft:redstone_block 0
2. Вызвать молнию на сущность, если на один блок ниже этой сущности будет располагаться блок лазурита
execute @e ~ ~ ~ detect ~ ~-1 ~ minecraft:lapis_block 0 summon LightningBolt
3. Вызвать фейерверк, если на один блок ниже под сущностью будет располагаться изумрудный блок
execute @e ~ ~ ~ detect ~ ~-1 ~ minecraft:emerald_block 0 summon FireworksRocketEntity ~ ~1 ~ {Motion:[0.0,9.0,0.0],LifeTime:1,FireworksItem:{id:fireworks,Count:1,tag:{Fireworks:{Explosions:[{Type:1,Flicker:1,Colors:[4534527],FadeColors:[16711680]}]}}}}
4. Сменить погоду на дождливую как только над игроком на три блока вверх от его нахождения будет обнаружен блок лазурита
execute @p ~ ~ ~ detect ~ ~3 ~ minecraft:lapis_block 0 /weather rain
5. Сменить погоду на ясную, если на три блока ниже золотого блока окажется игрок
execute @p ~ ~ ~ detect ~ ~3 ~ minecraft:gold_block 0 weather clear
6. Вызвать взрыв от стрелы, если на -1 блок по оси "х" от этой стрелы будет обнаружен кирпичный блок
execute @e[type=Arrow] ~ ~ ~ detect ~-1 ~ ~ minecraft:brick_block 0 summon PrimedTnt
7. Заменить кирпичный блок методом его разрушения на блок воздуха, когда в него попадает снежок. То есть, при обнаружении снежка и условии, что по -1 блоку по координате "х" от него будет располагаться кирпичный блок, то в этом месте выполнится команда разрушения кирпичного блока и замена его блоком воздуха
execute @e[type=Snowball] ~ ~ ~ detect ~-1 ~ ~ minecraft:brick_block 0 setblock ~-1 ~ ~ minecraft:air 0 destroy
Ну и подытожу, параметр detect позволяет выполнить ЛЮБУЮ команду относительно любой сущности только в том случае, если эта сущность будет обнаружена на указанном расстоянии от заданного нами блока.
Дорогие юзеры сайта, как всегда
жду вашей критики и оценок.