Top.Mail.Ru
Ответы

Как написать команду в майнкрафт.

Хочу сделать TNT run на командных блоках. Проблема вот в чём: Моя команда может ставить под игроком воздух, если под ним сейчас камень. Но камень уходит слишком быстро, игрок тупо не сможет уйти с блока. Как сделать задержку перед выполнением команды? Вот как выглядит команда: /execute as @a at @a if block ~ ~-1 ~ stone run setblock ~ ~-1 ~ minecraft:air

Дополнен

Понял, что "as @a" - не нужная часть.
/execute at @a if block ~ ~-1 ~ stone run setblock ~ ~-1 ~ minecraft:air

Дополнен

Или может можно сделать так, чтоб блок менялся через секунду после того, как игрок наступил на него?

Дополнен

Придумал как решить проблему, спасибо человеку с ником "a Vitness". Тупо вместо цикл-КБ поставить обычный, и зациклить редстоун сигнал к нему. Каждый цикл под игроком будет уходить блок (меняться на воздух). Но игрок может подгадать цикл и прыгать в нужный момент, поэтому можно тупо поставить от первого КБ ко второму сигнал редстоуна, чтоб ещё ниже блок менялся на воздух. То-есть прыгает игрок или нет, блок под ним уйдёт.

Дополнен

Щас осознал, что вариант с циклами ее пройдёт, ведь блоки будут уходить всё равно из под ног сразу. Нужна то именно команда, шоб блок убирался после того, как игрок встал на дру

Дополнен

Блин с телефона в полусонном состоянии вообще писать невозможно, извините за предыдущее дополнение.

Дата
Популярность
Аватар пользователя
3 года назад

Просто сделай задержку. Через редстоун или счетчик

Аватар пользователя
3 года назад

у меня есть идея сделать что то подобное через стойки для брони но будет слишком большая нагрузка на компьютер. И еще от версии зависит. Например в 1.14 добавили команды /schedule. /schedule function. При помощи них можно сделать так чтобы блоки убирались через некоторое количество тиков, а если 1.12.2 то придется делать через стойки для брони, это сложно объяснить и долго, так что лучше будет в личке объяснить со скриншотами и возможно можно зайти на 1 сервер и я построю что то подобное
Можешь написать мне в дискорде
NOTESSSSSS#7906
(6 букв S)

Аватар пользователя
3 года назад

Как ты и написал в одном из комментариев, schedule действительно было бы оптимально использовать. Однако Schedule не сохраняет точку исполнения, так что в любом случае придётся создавать сущности-маркеры. Лучше прямо minecraft:marker и использовать – сущность нетиковая, нагрузки на клиент 0, да ещё и скорборды обрабатывает корректно. Просто призывай рядом с игроком маркеры, прибавляй каждый тик им одно очко в time (скорборд), а потом убирай блок под маркером с time=10 и убивай этот маркер. Всё элементарно:

1) execute at @a run summon minecraft:marker
2) scoreboard players add @e[type=minecraft:marker] time 1
3) execute at @e[type=minecraft:marker, scores={time=10..}] run fill ~ ~ ~ ~ ~-2 ~ minecraft:air replace minecraft:stone (это получше чем куча if block...)
4) kill @e[type=minecraft:marker, scores={time=10..}]

+ команда на создание счётчика timer с типом dummy.