Случайные обновления блоков — различия между версиями

Строка 23: Строка 23:
 
</div>
 
</div>
  
 +
<div class="mw-parser-output">
 
== Случайная анимация ==
 
== Случайная анимация ==
  
Строка 30: Строка 31:
  
 
<u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u>
 
<u style="text-underline:black">Для регистрации события случайной анимации используется функция:</u>
 +
<syntaxhighlight lang="setAnimationTick">Block.setAnimationTickCallback(id, function(x, y, z, id, data) {
 +
    // параметры: координаты, а также id и data обновляемого блока
 +
});</syntaxhighlight>
  
''Block.setAnimationTickCallback(id, function(x, y, z, id, data) {''
+
''&nbsp;'' </div>
 
 
''// параметры: координаты, а также id и data обновляемого блока''
 
 
 
''});&nbsp;''
 
 
</div>
 
</div>

Версия 19:12, 15 августа 2018

Случайные обновления блоков

Многие блоки не требуют обновления каждый игровой тик, это нужно только тем блокам, которые постоянно выполняют какое-то действие. Однако блоки вроде пшеницы или листвы должны иногда обновляться для проверки и обновления состояния, а факела - испускать частицы огня.

Листвы, пшеницы и факелов в мире крайне много, и потому регистрировать их как tile entity не представляется возможным из-за нагрузки, которую они в таком случае дадут.

Потому в MCPE существует механика случайных обновлений блоков, позволяющая блокам некоторого типа в произвольный момент обновляться и выполнять какое-то действие.

Случайные обновления являются сильнейшей оптимизацией и упрощением создания подобных процессов и далее будет описано, почему.

Случайный тик

Случайный тик регистрируется как функция для какого-то типа блока (по его ID) и вызывается, когда такой блок где-то произвольно обновляется. Для каждого в мире блока в среднем такое обновление происходит раз в 1.5-2 минуты.

Для регистрации события случайного тика используется функция:

Block.setRandomTickCallback(id, function(x, y, z, id, data) { 
    // параметры: координаты, а также id и data обновляемого блока 
});

Случайный тик идеально подходит для создания блоков, которые должны со временем изменяться (к примеру, расти). Даже достаточно большое кол-во блоков со случайным тиком в мире не создает большой нагрузки, главное, чтобы такими блоками не было заполнено более 5-10% всего мира. 

Случайная анимация

Данная механика похожа на случайный тик, это тоже случайное событие для блока с каким-то ID и с теми же параметрами. Главное отличие в том, что это событие вызывается чаще, где-то раз в 5-10 секунд, однако только для блоков, рядом с которыми находится игрок.

Это крайне хорошо подходит для создания каких-либо анимаций, вроде испускания частиц, которое актуально только, если игрок находится в непосредственной близости. Для этого события так же существует ограничение, при котором он не вызывает нагрузки, это примерно те же 5-10% от объема пространства рядом с игроком.

Для регистрации события случайной анимации используется функция:

Block.setAnimationTickCallback(id, function(x, y, z, id, data) {
    // параметры: координаты, а также id и data обновляемого блока
});