Датапаки для новичков [Часть 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"
Конечно, функция удаления датапака через команду не является необходимостью, но это очень полезная возможность, позволяющая быстро обнаружить на что именно влияет тот или иной датапак, в случае, когда в мире установлено пара десятков других различных датапаков.
В следующей части мы разберёмся с тегами (или селекторами), условиями и скорбордами.