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

img

Что вообще это такое и с чем его едят?

Начать стоит с того, что датапаки не едят (к сожалению)… Далекая в истории версия игры - 1.4.2. В этой версии Minecraft были добавлены особые блоки - командные (КБ)! Они позволяют выполнять, как ни странно, команды, которые, в свою очередь, могут влиять на игровой мир, прямо или косвенно, изменять параметры игры, создавать внутриигровые предметы а также призывать сущности. Это лишь малая часть того, на что они способны.

img

Командные блоки делятся на 3 типа:

  • импульсные - позвоняют выполять команды единоразово при подаче сигнала “красного камня”.

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

  • цепные - выполняют команды последовательно, по цепочке
  • цикличные - выполняют команду в цикле (20 раз в секунду (каждый игровой тик)).

С течением времени, и по ходу развития игры Minecraft, разработчкики внедряли больше и больше (и еще больше) новых команд и возможностей. Со временем стало невозможно (не удобно) строить всю логику на командах прям в игровом мире - множество КБ занимали очень большую площадь и это вызывало неудобство в обслуживании. ((D)DOS командными блоками сюдааа).

К версии 1.13 была добавлена альтернатива КБ - Датапаки (Data Pack, набор данных). Это структурированные команды командных блоков в виде текстовых файлов (.mcfunction). Кроме файлов .mcfunction датапаки могут содержать .json файлы с описанием достижений, предикатов (логические проверки да/нет), модификатров предметов и даже свойств генератора мира, структур и т.д… и не только.

Как их используют?

Например, самый простой вариант - написать плагин. А, ой… Ну допустим, игрок хочет наглядно видеть здоровье другого игрока или сущности. Для этого в игре есть bossbar - элемент визуализации данных в виде шкалы прогресса (словно progressbar (вспомнил игру progressbar95. Рекомендую!)).

Можно выполнить команду:

execute store result bossbar minecraft:bossbar value run data get entity @n[tag=mypet] Health 1

эта команда будет записывать здоровье сущности с тегом mypet в боссбар.

К счастью, тут я не буду делать полный гайд на датапаки, это просто общая информация. А то SCH не выдержит и потатом закроется :(

Как научиться использовать датапаки?

Ты в своем уме? Учить датапаки??? Серьезно? Ты себя видел? Иди учи Java или хотя бы Python, на крайний случай! Учить датапаки… достойны только избанные. А ты избраный? ну тогда иди … учи.

Это как с любым языком программирования. Конечно, .mcfunction сложно назвать таковым (однако, его можно считать доменным языком или языком скриптования для Minecraft), но технология обучения аналогична. Начать стоит с изучения основ команд Minecraft.

Достаточно разобрать пару простых кейсов на командных блоках:

  • написать Hello world
  • получить предмет
  • призвать сущность
  • сделать проверку на тот или иной предмет у игрока в руке
  • выдать особый предмет с красочным названием
  • призвать зомби с 1000 сердец и в супер-пупер-дупер броне и умереть от него.

Далее можно углубиться в эту тему, создавая свои собственные условия:

  • при клике по предмету призывать молнию в жителя неподалёку, чтобы эта ведьма съела твою собаку в далёком забытом мире из 2012.
  • при ношении супр-пупер-дупер брони выдавать старость (ну типа ходить как дед по грядкам) и отображать частицы вокруг игрока.
  • сделать собственный стол для крафтов и добавть пару особых магических предметов (ну там… трава, гранаты, автоматы).

Перед тем, как ты выйдешь в окно (на 1 этаже погулять) рекомендую ознакомиться с парой ссылок:

  • Основа основ - Minecraft Wiki
  • Гайд на датапаки - Datapack Wiki
  • Удобный генератор команд - MCStacker
  • Не менее практичный и удобный генератор различных рецептов, достижений и предикатов - Misode

Комьюнити “программистов” на .mcfunction очень добродушное, милое и открытое (ага, поверил ХАХА). На любой вопрос можно найти ответ или спросить у таких же как ты (ChatGPT не поможет, он слишком умный, чтобы разбираться в этом)!

  • Datapack Hub - https://discord.gg/gy7pYuM8tZ
  • СвинСоюз - https://discord.gg/YAqujn77pC
  • Anthill - https://discord.gg/yZSTNPUTP9
  • Minecraft Commands - https://discord.gg/QAFXFtZ

Что обычно делают на Датапаках?

Много всего всякого! Это если вкратце :)

Есть разные проекты, начиная с рас (Эльфы, Друиды, Тритоны и т.д), где каждая имеет свои уникальные особенности, заканчивая переносом популярного Bad Apple! Начиная с переработки генерации мира, заканчивая машинками с полноценной физикой, топливом и т.д. в игре, где физика отсутствует!

Но не переживай. У тебя ничего не получится, у меня тоже не получилось!

Женщина

Интересные проекты:

  • BadApple на генераторе мира.
Загрузка видео...
Ссылка на видео
YouTube недоступен в вашем регионе.
Ссылка на видео
  • BadApple на диалогах.
Загрузка видео...
Ссылка на видео
YouTube недоступен в вашем регионе.
Ссылка на видео
  • Just Atlas - Алтас, как на географии контурные карты чеек (ну ты понял).
Загрузка видео...
Ссылка на видео
YouTube недоступен в вашем регионе.
Ссылка на видео
  • Terralith - Самый популярный датапак на генерацию мира.

img

  • Vanilla Tweaks - Генератор Датапаков! Можно собрать единый датапак из нескольких.

img

Как я использую датапаки? Какие датапаки лучше выбрать?

В основном я предпочитаю не использовать датапаки. ХАХАХАХ а ты что думал?

Функционально полезные, при этом легковесные датапаки лучше, чем бесполезные и лагающие, написанные школьниками 5 лет (да и пофиг, что в школу ходят с 7).

Стоит заметить, что большое количество тикающих функций (tick.mcfunction и аналогичные) довольно сильно нагружает сервер, особенно если в них происходит обращение сразу во всем сущностя мира (@e), или ко всем игрокам (@a).

Поэтому лучше использовать датапаки, в качестве хранилища заготовленных команд, которые, при необходимости, легко можно вызвать и получить желаемый результат. Юзайте плагины, а датапаки как удобный инструмент.

К примеру, есть команда плагина CMI для выдачи монет игроку: cmi money give <Nick> <count>. Она выдает игроку <Nick> количество <count> монет. Каждый раз писать такую команду не удобно, особенно, если переменые <Nick> и <count> динамические. Поэтому я сохранил команду в фунцию w3s:bank/give и могу легко ее вызвать с нужными мне параметрами!

пытается выдать себе мод сбербанк много денег онлайн бесплтано без смс и регистрации читы на майнкрафт (читы на реальную жизнь, как пройти эту игру?).

Мне стало лень писать дальше… Итоги

Датапаки это классно. Сам на них делал ключевую механику для 2 сезона моего сервера Welten - расовое превосходство!

Я люблю, когда игру можно запустить и не надо скачивать никакие моды, чтобы добавить пушку гонку, броню бога и еще 42 предмета в 64 степени зачарованности на тапанье хомяка. Берешь, пишешь датапак и чувствуешь себя богом этого мира.

Если бы не они… ___________________________________(произошло бы)