https://static.devmc.org/images/ca67dda5-111f-462c-a564-0c460f2e976b.png
Датапаки для новичков [Часть 1]

Первые вопросы, которые возникают, когда Вы сталкиваетесь с датапаками:

  • Что же такое датапак?
  • Что такое функции в датапаках?
  • Что такое теги в датапаках?

Что такое датапак?

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

Датапаки не являются модами или плагинами. Их проще создать, но они гораздо сильнее ограничены.

Что такое функции и теги?

Когда Вы выполняете команду в чате майнкрафта - Вы даёте игре прямые инструкции что-то сделать.
Так вот функции - это файлы, состоящие из набора подобных команд.
Теги же — это специальные группы (селекторы), которые могут состоять из нескольких функций, блоков, сущностей, элементов и жидкостей. Они также представлены файлами и любой датапак может расширить тег, определенный в любом другом месте.
⁣⁣

Почему датапаки, а не плагины или моды?

Иногда майнкрафт может стать скучным. Датапаки позволяют изменить поведение игры и создать новый опыт для игроков - при этом Вам не нужно знать языки программирования для создания датапаков. Датапаки взаимозаменяемы между однопользовательскими и многопользовательскими мирами, а также официально поддерживаются Mojang / Microsoft.

Настройка редактора и отображение логов

Для создания датапаков нужно довольно много работать с текстовыми файлами - поэтому для этого нужен хороший текстовый редактор.
Я настоятельно рекомендую Вам использовать Notepad++ — текстовый редактор с набором полезных возможностей, например, c предложением для ввода слов основываясь на ранее введённом тексте.

Также, чтобы настроить вывод логов игры, необходимо в лаунчере майнкрафта зайти в меню настроек и отметить пункт «Открывать журнал вывода при запуске Minecraft».
После этого, при запуске игры Вы сможете увидеть второе окно, в котором будут перечислены ошибки в функциональных файлах — что очень поможет Вам при отладке.

Создаём датапак

Откройте папку datapacks интересующего Вас мира из клиента майнкрафт: (Редактировать -> Открыть папку мира -> папка datapacks) или самостоятельно перейдите в папку %APPDATA%/.minecraft/saves/<название вашего мира>/datapacks на системном диске в папке пользователя системы. Создайте в ней новую папку и назовите её «First datapack». Перейдите в эту папку и создайте в ней файл pack.mcmeta.

Откройте этот файл с помощью вашего текстового редактора и приведите его к следующему виду:

{
  "pack": {
    "pack_format": 7,
    "description": "your text here"
  }
}

⁣⁣
Теперь выполните команду /reload в вашем мире в майнкрафт, а затем выполните команду /datapack list. Название ранее созданного Вами датапака должно появиться в чате. Вы можете навести указатель мыши на название в чате, чтобы увидеть секцию description файла, созданного чуть ранее. Вы можете более подробно изучить структуру и наполнение файла pack.mcmeta посетив эту страницу.

Создаём функцию

Создайте папку с названием data и создайте ещё одну папку внутри неё. Название второй папки, к примеру, может быть Вашим именем пользователя, главное - чтобы она была уникальной в глобальном смысле и отличалась от возможных названий датапаков других пользователей, так как является пространством имён Вашего датапака. Ниже по тексту будет использоваться плейсхолдер <nаmespace> - который указывает на Ваше название папки.

Внутри созданной Вами папки создаёте ещё одну папку с названием functions, а внутри неё ещё одну папку. Последняя папка также используется для идентификации Ваших функций во всех созданных Вами датапаках.
После этого создайте файл toggle-gamemode.mcfunction со следующим содержимым:

tag @s[gamemode=spectator] add tut_fd_go_creative
gamemode spectator @s[gamemode=creative]
gamemode creative @s[tag=tut_fd_go_creative]
tag @s[tag=tut_fd_go_creative] remove tut_fd_go_creativef


Итоговый путь до файла получается следующий:
.minecraft/saves/<название Вашего мира>/datapacks/First datapack/data/<namеspace>/funсtions/<ваша уникальная папка для функций>/toggle-gamemode.mcfunction
⁣⁣
В первой строке игроку назначается тег, если он находится в режиме наблюдателя. Если сразу изменить игровой режим игрока без назначения тега, то он изменится обратно на предыдущий игровой режим игрока сразу же во второй строке.
Вторая и третья строки меняют игровые режимы, а четвертая строка наводит порядок в первой строке.

Теперь вновь выполните команду /reload, а затем команду /funсtion <namespаce>:<ваша уникальная папка для функций>/toggle-gamemode - если на момент выполнения команды вы находились в режиме наблюдателя или же в творческом режиме, ранее созданная Вами функция переключит Ваш игровой режим на противоположный.

Подключаемся к майнкрафту

На момент написания этого руководства существует два встроенных тега: minecraft:load и minecraft:tick - зарегистрировав функцию в этих тегах можно заставить майнкрафт автоматически запускать команды функции, вместо того чтобы заставлять игроков вручную вводить команды через /functiоn …. Функции внутри тега minecraft:tick запускаются 20 раз в секунду.

Перейдите в папку data и рядом с Вашей папкой для пространства имён создайте новую папку с названием minecraft. Создайте внутри неё папку tags, а внутри неё ещё одну папку с названием functiоns. Внутри этой папку создайте файл load.json со следующим содержимым:

{
  "values": [
    "<namespace>:<ваша уникальная папка для функций>/load"
  ]
}

и файл tick.json:

{
  "values": [
    "<namespace>:<ваша уникальная папка для функций>/tick"
  ]
}


Как вы могли заметить, названия файлов точно соответствуют ранее упомянутым тегам minecraft:load и minecraft:tick.
Структуру подобных файлов можно подробнее изучить здесь.

Вновь вернитесь в папку /data/<namеspace>/funсtions/<ваша уникальная папка для функций>.
Создайте в ней новый файл load.mcfunction со следующим содержимым:

tellraw @a {"text":"Привет мир!","color":"green","extra":[{"text":"\nЭто первый датапак созданный <ваш ник?>","color":"purple"},{"text":"\n Используйте /functiоn <namespace>:<ваша уникальная папка для функций>/uninstall чтобы удалить датапак.","color":"gray"}]}

⁣⁣
Обычно функцию load используют для загрузки и настройки датапака.
Команда tellraw использует формат JSON для описания структуры текста - подробное содержание можно посмотреть здесь.

Создайте ещё один файл с названием tick.mcfunction со следующим содержимым:

execute as @a[x_rotation=-90] at @s run function <namespace>:<ваша уникальная папка для функций>/toggle-gamemode
execute as @a[x_rotation=-90] at @s run tp @s ~ ~ ~ ~ 0


Первая строка вызывает функцию toggle-gamemode, когда ваш персонаж в игре смотрит наверх, вторая строка возвращает ваш взгляд в прямое положение.
Вновь выполните команду /reload. После успешной перезагрузки вы обнаружите, что теперь, когда команды функции запускаются каждый тик - Вы можете переключать игровой режим Вашего персонажа взглядом наверх в любое время.

Помните, в подсказке чуть выше, было написано, что датапак можно удалить? Давайте реализуем и этот функционал.
Создайте файл uninstall.mcfunction со следующим содержимым:

tellraw @a {"text":"Датапак успешно удалён!","color":"green"}
datapack disable "file/First datapack"
datapack disable "file/First datapack.zip"


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

В следующей части мы разберёмся с тегами (или селекторами), условиями и скорбордами.