Просьба помочь с командой в 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) это делается так:
give @a minecraft:arrow[custom_data={tnt_arrow:1b}]
А чтобы призвать динамит относительно такой стрелы, нужно воспользоваться этой командой:
execute at @e[type=arrow, nbt={item:{components={"minecraft:custom_data"={tnt_arrow:1}}}}] run summon tnt
Также рекомендую сразу после взрыва удалять стрелу из мира, чтобы избежать возможности повторного взрыва при следующем выполнении команды:
kill @e[type=arrow, nbt={item:{components={"minecraft:custom_data"={tnt_arrow:1}}}}]
Это простой подход. Однако он не учитывает параллельную обработку нескольких игроков, то есть, взрываться будут все стрелы сразу у всех, кто стреляет взрывными стрелами. Если нужно сделать, чтобы каждый игрок сам контролировал момент взрыва своей стрелы, то для этого понадобится создавать систему ID, и без датапаков тут не обойтись.
0258