Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужна команда для майнкрафта, наверное для командного блока, нужен профессионал

Елена Тихонова Профи (674), закрыт 3 года назад
Хочу с другом пройти пак с 600+ ачивками, но каждому выполнять это сложновато, если команда которая будет выдавать ачивки АВТОМАТИЧЕСКИ, которые есть у одного игрока, другому, знаю что можно вручную, но хочется автоматизации, если не очень понятно, пишите ответ, обьясню подробнее, может можно через /scoreboard team хз
Лучший ответ
АІ (Александръ Івановъ) Просветленный (41718) 4 года назад
Ты прав, тут действительно нужен профессионал. Хорошо, что он тут есть :)
Предупреждаю сразу, что для того, чтобы реализовать желаемое, нужно будет ооооооочень сильно потрудиться.

Начнём с того, что достижение по задумке майнкрафта предназначается строго для одного игрока. Одной простой командой изменить это не получится. Однако если речь идёт о готовом датапаке с кастомными достижениями, то наша задача немного упрощается. Разберу на примере датапака Blaze&Caves.

Итак, мы хотим добиться того, чтобы при выполнении одним игроком ачивки из датапака она начислялась всем игрокам (либо можно объединить игроков по какому-либо признаку). Для этого нам нужно будет дополнить функцию, отвечающую за награду при выполнении достижения одной командой (advancement grant @a only [путь к достижению])

0) Устанавливаем нормальную программу для редактирования кода. Я использую VSCode и расширение Datapack Helper Plus. Без них добиться результата будет тоже возможно, но процесс растянется в несколько раз.

1) Первым делом, распаковываем архив датапака, чтобы получить возможность его редактирования.
2) Внутри него расположена папка "data". Это основная папка датапака. В ней находится "корневая" подпапка "minecraft", а так же другие корневые папки датапака.
3) В каждой из корневых папок проверяем наличие папки "advancements". В ней хранятся сами достижения.
4) Если такая папка есть, открываем в ней достижение (файл с расширением .json).
5) Ищем в нём строчку, начинающуюся с "rewards": {"function":.. и смотрим, какая функция активируется при выполнении достижения (1 окно).
6) Открываем эту функцию. С новой строки в самом её конце дописываем команду, которую нужно составить, исходя из названия достижения (2 окно). Тут мы остановимся подробнее.
Сама команда выглядит так: execute as @a[advancements={ путь_к_достижению=false }] run advancement grant @s only путь_к_достижению
Разберём её.

"execute as @a[advancements={ путь_к_достижению=false }]" запускает поиск всех игроков без достижения
"run advancement grant @s only путь_к_достижению" выдаёт достижение по адресу "путь_к_достижению" игроку, у которого его нет.

Как ты уже догадался, вместо "путь_к_достижению" мы будем указывать путь, по которому расположено достижение. Он состоит из корневой папки, в которой лежало достижение (к примеру, blazeandcave), и самого достижения (допустим, all_chained_up). Если достижение в свою очередь лежало в подпапке (возьмём папку adventure), то перед названием достижения нужно указать и её, используя / (получится blazeandcave:adventure/all_chained_up)

7) сохраняем файл и повторяем процедуру для всех оставшихся файлов.

После этих операций получившийся датапак можно будет поместить в папку с миром, и достижения будут выдаваться всем игрокам, если один из них выполнил его. Если же вы играете на собственном сервере с большим количеством игроков, но хотите выполнять достижения только вдвоём, то создайте команду, вступите в неё, а в пункте 6 вместо селектора @a[advancements={ путь_к_достижению=false }] используйте селектор @a[team=КОМАНДА, advancements={ путь_к_достижению=false }]
АІ (Александръ Івановъ)Просветленный (41718) 2 года назад
UPD: теперь можно так не париться, в Blaze&Caves добавили совместный режим – в настройках датапака (/function blazeandcave:config) можно выбрать Cooperative Mode.
Остальные ответы
abobsasd Знаток (288) 4 года назад
ну как я понял просто сделать ачивки надо. и все. это не трудно. ну я могу наверн
Alex Знаток (465) 4 года назад
Прикольная игруха! Но у меня не хватает на нее времени, Этож надо жить игрой, А у Меня реальная Жизнь интереснее
Похожие вопросы