Датапаки Minecraft: Самостоятельный верстак

Привет. Продолжаем свой датапак. И теперь добавим что-то реально интересное. Идею я взял с этого форума. Спасибо им. Я же просто покажу как это можно реализовать в рамках датапака, чтобы не делать какие-то страшные манипуляции с командными блоками и т.д.

Улучшаем датапак

За базу возьмём результат предыдущего: Создаём простой датапак «Привет, игрок!». У нас там было лишь приветствие, так что его можно считать хорошей базой для чего-то большего.

Помните по пути data\minecraft\tags\functions мы добавляли файл load.json. Туда же добавляем новый: tick.json. Его отличие в том, что load будет выполнен только при загрузке датапака, тогда как tick будет стартовать с каждым тактом в мире. Игровой цикл повторяется двадцать раз в секунду, поэтому такт — 1⁄20 секунды или 50 миллисекунд.

Содержимое файла будет соответствовать load, просто укажем другой файл с командами:

Понятное дело, теперь его нужно создать. В директории data\geekstand\functions создаём loop.mcfunction.

И для теста и лучшего понимания добавим туда такую простую команду:

Т.е. эта инструкция будет работать постоянно, с каждым тиком.

Добавляем автоматическую установку верстака

Теперь добавим более интересный функционал.

Сохраняем и запускаем

Иногда тормозит, но это скорее из-за захвата и наличия кучи софта на фоне. При тесте отдельном датапака особых проблем не было

Что же происходит в этиом датапаке?

Мы запускаем команду при выполнении условия наличия предмета верстака на земле в радиусе 10 блоков. За это отвечает вот эта часть: [type=item, distance=..10,nbt={Item:{id:»minecraft:crafting_table»},OnGround:1b}]

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

Следующая строка убивает лежащий рядом на земле предмет: kill @e[type=item, distance=..1,nbt={Item:{id:»minecraft:crafting_table»}}]

И далее проверяем, если на месте упавшего предмета-блока пусто (воздух), то ставим там верстак.

Если в этих координатах стоит верстак, то удаляем тег у стойки, а после этого в следующей строк и удаляем саму стойку.

По сути, особо сложного нет. Если замените crafting_table, то будет работать с другими блоками. Если хотите, чтобы он заменял также траву или какие-то другие блоки, то это тоже можно легко сделать, дописав новую строку после замены блока воздуха (которая не сработает если блок не воздух).

На этом пока всё, но этот датапак уже можно считать готовым и использовать в своей игре. Удобство и практическая польза сомнительные, конечно, но выглядит эффектно 😀

Добавить комментарий