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

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

Командные блоки делятся на 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 на генераторе мира.
Ссылка на видео
Ссылка на видео
- BadApple на диалогах.
Ссылка на видео
Ссылка на видео
- Just Atlas - Алтас, как на географии контурные карты чеек (ну ты понял).
Ссылка на видео
Ссылка на видео
- Terralith - Самый популярный датапак на генерацию мира.

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

Как я использую датапаки? Какие датапаки лучше выбрать?
В основном я предпочитаю не использовать датапаки. ХАХАХАХ а ты что думал?
Функционально полезные, при этом легковесные датапаки лучше, чем бесполезные и лагающие, написанные школьниками 5 лет (да и пофиг, что в школу ходят с 7).
Стоит заметить, что большое количество тикающих функций (tick.mcfunction и аналогичные) довольно сильно нагружает сервер, особенно если в них происходит обращение сразу во всем сущностя мира (@e), или ко всем игрокам (@a).
Поэтому лучше использовать датапаки, в качестве хранилища заготовленных команд, которые, при необходимости, легко можно вызвать и получить желаемый результат. Юзайте плагины, а датапаки как удобный инструмент.
К примеру, есть команда плагина CMI для выдачи монет игроку: cmi money give <Nick> <count>. Она выдает игроку <Nick> количество <count> монет. Каждый раз писать такую команду не удобно, особенно, если переменые <Nick> и <count> динамические. Поэтому я сохранил команду в фунцию w3s:bank/give и могу легко ее вызвать с нужными мне параметрами!
пытается выдать себе мод сбербанк много денег онлайн бесплтано без смс и регистрации читы на майнкрафт (читы на реальную жизнь, как пройти эту игру?).
Мне стало лень писать дальше… Итоги
Датапаки это классно. Сам на них делал ключевую механику для 2 сезона моего сервера Welten - расовое превосходство!
Я люблю, когда игру можно запустить и не надо скачивать никакие моды, чтобы добавить пушку гонку, броню бога и еще 42 предмета в 64 степени зачарованности на тапанье хомяка. Берешь, пишешь датапак и чувствуешь себя богом этого мира.
Если бы не они… ___________________________________(произошло бы)