Top.Mail.Ru
Ответы

Просьба помочь с командой в Minecraft

Поскольку предыдущий вопрос остался без ответа, задам его еще раз. Просьба помочь с командой, которая бы инициировала взрыв динамита (/summon tnt) около стрелы (в процессе полета). Т.е. игрок стреляет, и при активации команды в месте, где находится летящая стрела, взрывается динамит.
P.S. Речь о Java Edition
P.P.S Скорее всего для этого используется /execute, но я не смог найти хорошего объяснения в интернете.

Дополнен

Уже нашел, как сделать. Для тех, кому нужно:
/execute at @e[type=arrow] run summon tnt ~ ~ ~

По дате
По рейтингу
Аватар пользователя
Просветленный

Уже нашел, как сделать. Для тех, кому нужно:
/execute at @e[type=arrow] run summon tnt ~ ~ ~

Не самое лучшее решение. При выполнении такой команды у тебя будут взрываться все стрелы, которые существуют в мире, а не только та, которой ты выстрелил.
Чтобы этого избежать, необходимо как-то маркировать стрелы. Например, можно выдать игроку специально заготовленные стрелы с меткой, и призывать динамит только относительно стрел с такой меткой. На новейшей версии игры (1.20.6) это делается так:

1
 give @a minecraft:arrow[custom_data={tnt_arrow:1b}] 

А чтобы призвать динамит относительно такой стрелы, нужно воспользоваться этой командой:

1
 execute at @e[type=arrow, nbt={item:{components={"minecraft:custom_data"={tnt_arrow:1}}}}] run summon tnt 

Также рекомендую сразу после взрыва удалять стрелу из мира, чтобы избежать возможности повторного взрыва при следующем выполнении команды:

1
 kill @e[type=arrow, nbt={item:{components={"minecraft:custom_data"={tnt_arrow:1}}}}] 

Это простой подход. Однако он не учитывает параллельную обработку нескольких игроков, то есть, взрываться будут все стрелы сразу у всех, кто стреляет взрывными стрелами. Если нужно сделать, чтобы каждый игрок сам контролировал момент взрыва своей стрелы, то для этого понадобится создавать систему ID, и без датапаков тут не обойтись.

Аватар пользователя
Ученик

0258