Клиентские игры
Как убить игрока который нажал на кнопку в майнкрафте (1.17.1)
Делаю карту с испытаниями, на викторине должен умереть именно тот кто нажал на кнопку связанную с командным блоком, @p может сработать неправильно.
Это можно сделать только при помощи датапака с кастомным достижением, обычный майнкрафт так не может.
Для начала нам понадобится пустой датапак. Создать его можно при помощи этой программы.
Порядок действий:
• Запускаем программу.
• В первой строке выбираем путь к папке "datapacks" нужного нам мира, во второй – будущее название папки с датапаком:

• Редактируем pack.mcmeta. Это файл, благодаря которому Майнкрафт распознаёт папку/архив с файлами как датапак. Указываем pack_format (формат датапака) в соответствии с нужной версией игры. Список значений pack_format можно посмотреть здесь. Сохраняем.

• Настраиваем пространство имён. Это главная подпапка датапака, которая содержит в себе его данные. По умолчанию в датапаках создаётся пространство имён "minecraft", которое нужно для замены или дополнения ванильных данных (уже имеющиеся рецепты крафта, теги сущностей или блоков, существующие достижения). Если мы создаём функциональный датапак, то в нём будет полезно создать теги для функций load и tick (выполняются один раз при запуске мира и каждый тик соответственно). Для этого указываем соответствующие галочки. После создания придётся вручную изменить содержимое файлов этих тегов, чтобы указать имена нужных функций (в нашем случае всё это не нужно, так как функция, убивающая игрока, будет запускаться достижением).

Нам же необходимо создать своё пространство имён и работать с ним. Для этого добавляем его при помощи [+] и указываем название. Оно может содержать только строчные буквы латинского алфавита и не может содержать пробелов.

В нём снимаем ненужные нам галочки (в нашем случае, нам нужны только папки functions и advancements) и нажимаем "Create/Save".
• Готово, шаблон для датапака создан. Теперь необходимо заполнить его нужными нам данными.
В нашем случае это достижение, выдающееся за нажатие рукой (то есть, предметом "воздух") по кнопке, и функция, убивающая игрока и забирающая это достижение, чтобы оно могло сработать повторно.
Достижение:
Достижения можно создавать и редактировать на этом сайте, но это требует некоторых знаний. Я уже создал его, поэтому скопируй текст ниже в файл <название_достижения>.json и помести его в папку <твоё_пространство_имён>\advancements
Текст достижения:
{
"criteria": {
"requirement": {
"trigger": "minecraft:item_used_on_block",
"conditions": {
"item": {
"items": [
"minecraft:air"
]
},
"location": {
"block": {
"blocks": [
"minecraft:<кнопка>"
]
}
}
}
}
},
"rewards": {
"function": "<твоё_пространство_имён>:<название_функции>"
}
}
В тексте достижения необходимо заполнить нужные параметры – указать вид кнопки и указать путь к функции.
Функция:
Это файл с расширением .mcfunction, который хранится в папке functions. В него можно вписывать нужные команды (без /), каждая с новой строчки. В нашем случае, это команда, забирающая сработавшее достижение и команда, убивающая игрока, если выполнены определённые условия:
advancement revoke @s only <твоё_пространство_имён>:<название_достижения>
execute if ...условия... run kill @s
Готово!
Для начала нам понадобится пустой датапак. Создать его можно при помощи этой программы.
Порядок действий:
• Запускаем программу.
• В первой строке выбираем путь к папке "datapacks" нужного нам мира, во второй – будущее название папки с датапаком:

• Редактируем pack.mcmeta. Это файл, благодаря которому Майнкрафт распознаёт папку/архив с файлами как датапак. Указываем pack_format (формат датапака) в соответствии с нужной версией игры. Список значений pack_format можно посмотреть здесь. Сохраняем.

• Настраиваем пространство имён. Это главная подпапка датапака, которая содержит в себе его данные. По умолчанию в датапаках создаётся пространство имён "minecraft", которое нужно для замены или дополнения ванильных данных (уже имеющиеся рецепты крафта, теги сущностей или блоков, существующие достижения). Если мы создаём функциональный датапак, то в нём будет полезно создать теги для функций load и tick (выполняются один раз при запуске мира и каждый тик соответственно). Для этого указываем соответствующие галочки. После создания придётся вручную изменить содержимое файлов этих тегов, чтобы указать имена нужных функций (в нашем случае всё это не нужно, так как функция, убивающая игрока, будет запускаться достижением).

Нам же необходимо создать своё пространство имён и работать с ним. Для этого добавляем его при помощи [+] и указываем название. Оно может содержать только строчные буквы латинского алфавита и не может содержать пробелов.

В нём снимаем ненужные нам галочки (в нашем случае, нам нужны только папки functions и advancements) и нажимаем "Create/Save".
• Готово, шаблон для датапака создан. Теперь необходимо заполнить его нужными нам данными.
В нашем случае это достижение, выдающееся за нажатие рукой (то есть, предметом "воздух") по кнопке, и функция, убивающая игрока и забирающая это достижение, чтобы оно могло сработать повторно.
Достижение:
Достижения можно создавать и редактировать на этом сайте, но это требует некоторых знаний. Я уже создал его, поэтому скопируй текст ниже в файл <название_достижения>.json и помести его в папку <твоё_пространство_имён>\advancements
Текст достижения:
{
"criteria": {
"requirement": {
"trigger": "minecraft:item_used_on_block",
"conditions": {
"item": {
"items": [
"minecraft:air"
]
},
"location": {
"block": {
"blocks": [
"minecraft:<кнопка>"
]
}
}
}
}
},
"rewards": {
"function": "<твоё_пространство_имён>:<название_функции>"
}
}
В тексте достижения необходимо заполнить нужные параметры – указать вид кнопки и указать путь к функции.
Функция:
Это файл с расширением .mcfunction, который хранится в папке functions. В него можно вписывать нужные команды (без /), каждая с новой строчки. В нашем случае, это команда, забирающая сработавшее достижение и команда, убивающая игрока, если выполнены определённые условия:
advancement revoke @s only <твоё_пространство_имён>:<название_достижения>
execute if ...условия... run kill @s
Готово!
Сергей Андреев
Отформатированный текст достижения: Будет работать и то, как в ответе, но так с ним работать удобнее.
Как альтернатива:
Можно использовать кликабельную табличку (генерировать можно на сайтах )
/give @p minecraft:oak_sign{BlockEntityTag:{Text1:'{"text":"\\u043a\\u043b\\u0438\\u043a","clickEvent":{"action":"run_command","value":"trigger trigger set 5"},"bold":true,"color":"black"}'},display:{Name:'{"text":"Custom Sign"}'}}
Табличка сверху выполняет команду триггер, устанавливая scorebord trigger на 5.
Остаётся проверять его.
p.s естественно его нужно создать и активировать каждый раз
/scoreboard objectives add trigger trigger
цикл*
/scoreboard players enable @a trigger
в цикле ловить его примерно так
/execute as @e[scores={trigger=1..}] at @s run say команда
/scoreboard players set @a[scores={trigger=1..}] trigger 0 (для того чтобы повторный цикл не ловил уже отловленного игрока)
Можно использовать кликабельную табличку (генерировать можно на сайтах )
/give @p minecraft:oak_sign{BlockEntityTag:{Text1:'{"text":"\\u043a\\u043b\\u0438\\u043a","clickEvent":{"action":"run_command","value":"trigger trigger set 5"},"bold":true,"color":"black"}'},display:{Name:'{"text":"Custom Sign"}'}}
Табличка сверху выполняет команду триггер, устанавливая scorebord trigger на 5.
Остаётся проверять его.
p.s естественно его нужно создать и активировать каждый раз
/scoreboard objectives add trigger trigger
цикл*
/scoreboard players enable @a trigger
в цикле ловить его примерно так
/execute as @e[scores={trigger=1..}] at @s run say команда
/scoreboard players set @a[scores={trigger=1..}] trigger 0 (для того чтобы повторный цикл не ловил уже отловленного игрока)
Похожие вопросы
- Нужна помощь с командой в Майнкрафт 1.17.1
- Каково ваше мнение по поводу Майнкрафт 1.17?
- Какой есть мод который убирает фризы в майнкрафт 1.18.1 fabric, который совместим с sodium
- Глючат текстуры и интерфейс в minecraft 1.17, 1.17.1
- Майнкрафт 1.14.4 /execute Как сделать что бы когда игрок становился на каких то координатах срабатывала команда
- МАЙНКРАФТ томозит - что 1.65 - что 1.7 итд ноутбук Hp pavilion
- Плагин на майнкрафт 1.19 Clearlag
- Помогите крашит майнкрафт 1.12.2
- Что делать если при запуске мира в майнкрафт 1.16.5 в KLauncher мир сохраняется и майнкрафт крашится. Модов у меня нет.
- Как запустить альфа версию майнкрафт 1.0.16.05 UNRPREVIEW 2?