Jump to content
Кио

Как создать задержку при выполнении команд в функции?

Recommended Posts

4 posts in this topic

При строительстве карты возникла необходимость постепенного выполнения функции в 1.13-1.15. Если, например, создать функцию

setblock 0 0 0 stone

setblock 0 1 0 stone

setblock 0 2 0 stone

все блоки поставятся одновременно. А необходимо сперва поставить первый, спустя несколько тиков второй, затем третий. Нужен аналог функции delay или sleep в ЯП. Это можно реализовать на КБ повторителями, либо на скорбордах, проверяя при установке каждого блока строгое равенство переменной таймера, однако во втором случае игра подвисает из-за проверки всех блоков каждый тик. Так же это можно реализовать отдельной функцией для каждого блока, которые будут вызывать друг друга посредством КБ, но это натуральный костыль. Блоков будет ставиться таким образом очень много, КБ+повторители не вариант. Какие можете предложить способы реализации?

На данный момент есть вот такая реализация через датапак, команда /function test2:1 запускает постройку. Как создать такой же эффект с меньшим числом функций?

https://yadi.sk/d/Ezty3Taqdns0Pg

В сети из материала нашёл только решения, предлагающие использовать проверку какого-либо игрового таймера, но это повышает вычислительную сложность с линейной до квадратичной, лаги при большом количестве блоков неминуемы.

https://www.minecraftforum.net/forums/minecraft-java-edition/redstone-discussion-and/commands-command-blocks-and/2826143-how-to-do-delay-inside-functions

Share this post


Link to post
Share on other sites

Всё очень просто, для этого случая есть команда - /schedule. /schedule function - с помощью ней ты сможешь запустить функцию через 5 тиков, 10 секунд, 27 игровых дней, число можно подставить любые. /schedule clear - убрать запланированную функцию.

Share this post


Link to post
Share on other sites
10 часов назад, Bigdan сказал:

Всё очень просто, для этого случая есть команда - /schedule. /schedule function - с помощью ней ты сможешь запустить функцию через 5 тиков, 10 секунд, 27 игровых дней, число можно подставить любые. /schedule clear - убрать запланированную функцию.

Да, полезная команда, которая избавит от костылей в виде командных блоков в мире, однако для того, что бы с её помощью создать вышеописанный эффект, всё равно понадобится отдельная функция для установки каждого блока, то есть тысячи файлов. Есть идеи, как сократить количество функций?

Share this post


Link to post
Share on other sites

Я немного доработал программу которую ты написал, и добавил туда немного интерфейса.

https://drive.google.com/file/d/1M_Jy2XjvYLkKBvZVzoOzuWntQdmXflbb/view?usp=sharing

Правда при создании больших объёмов файлов, выделяется не стандартные объёмы памяти для простых текстовых файлов.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...