Свой сервер
Квесты: принеси и получи награду
До пяти заданий «собери 32 бревна — получи хлеб»: датапак сам заметит, что у игрока набралось, заберёт предметы и выдаст награду. Список заданий — /trigger quests. Для Minecraft 1.21.11 — 26.3, без плагинов.
Задания · пример
Датапак · 1.21.11 — 26.3-
Дубовое бревно ×32
Хлеб ×8
-
Железный слиток ×16
Алмаз ×1 + 5 ур.
-
Алмаз ×5
Элитры ×1 + 30 ур.
Игрок открывает список
/trigger questsЧто внутри архива — 9 файлов
data/minecraft/tags/function/load.json
Тег load: игра зовёт эти функции при загрузке мира и после /reload.
{
"values": [
"quests:load"
]
}
data/minecraft/tags/function/tick.json
Тег tick: эти функции идут каждый тик — 20 раз в секунду.
{
"values": [
"quests:tick"
]
}
data/quests/function/load.mcfunction
При загрузке мира: счёт, триггер списка и проверка раз в секунду.
scoreboard objectives add quests dummy
scoreboard objectives add quests trigger "Задания"
schedule function quests:check 1s
data/quests/function/tick.mcfunction
Каждый тик: /trigger quests открывает список.
scoreboard players enable @a quests
execute as @a[scores={quests=1..}] run function quests:list
data/quests/function/done/1.mcfunction
Задание 1 сдано: забрать 32, выдать награду.
clear @s minecraft:oak_log 32
give @s minecraft:bread 8
tag @s add quests_done_1
playsound minecraft:ui.toast.challenge_complete master @s
tellraw @a ["",{"selector":"@s"},{"text":" выполнил задание: Принеси: Дубовое бревно ×32 → Хлеб ×8","color":"green"}]
data/quests/function/done/2.mcfunction
Задание 2 сдано: забрать 16, выдать награду.
clear @s minecraft:iron_ingot 16
give @s minecraft:diamond 1
experience add @s 5 levels
tag @s add quests_done_2
playsound minecraft:ui.toast.challenge_complete master @s
tellraw @a ["",{"selector":"@s"},{"text":" выполнил задание: Принеси: Железный слиток ×16 → Алмаз ×1 и 5 ур. опыта","color":"green"}]
data/quests/function/done/3.mcfunction
Задание 3 сдано: забрать 5, выдать награду.
clear @s minecraft:diamond 5
give @s minecraft:elytra 1
experience add @s 30 levels
tag @s add quests_done_3
playsound minecraft:ui.toast.challenge_complete master @s
tellraw @a ["",{"selector":"@s"},{"text":" выполнил задание: Принеси: Алмаз ×5 → Элитры ×1 и 30 ур. опыта","color":"green"}]
data/quests/function/check.mcfunction
Раз в секунду: хватает ли предметов на несданные задания.
execute as @a[tag=!quests_done_1] store result score @s quests run clear @s minecraft:oak_log 0
execute as @a[tag=!quests_done_1,scores={quests=32..}] run function quests:done/1
execute as @a[tag=!quests_done_2] store result score @s quests run clear @s minecraft:iron_ingot 0
execute as @a[tag=!quests_done_2,scores={quests=16..}] run function quests:done/2
execute as @a[tag=!quests_done_3] store result score @s quests run clear @s minecraft:diamond 0
execute as @a[tag=!quests_done_3,scores={quests=5..}] run function quests:done/3
schedule function quests:check 1s
data/quests/function/list.mcfunction
/trigger quests — список заданий с галочками.
scoreboard players set @s quests 0
tellraw @s {"text":"Задания:","bold":true}
execute if entity @s[tag=quests_done_1] run tellraw @s {"text":"✔ Принеси: Дубовое бревно ×32 → Хлеб ×8","color":"green"}
execute unless entity @s[tag=quests_done_1] run tellraw @s {"text":"• Принеси: Дубовое бревно ×32 → Хлеб ×8"}
execute if entity @s[tag=quests_done_2] run tellraw @s {"text":"✔ Принеси: Железный слиток ×16 → Алмаз ×1 и 5 ур. опыта","color":"green"}
execute unless entity @s[tag=quests_done_2] run tellraw @s {"text":"• Принеси: Железный слиток ×16 → Алмаз ×1 и 5 ур. опыта"}
execute if entity @s[tag=quests_done_3] run tellraw @s {"text":"✔ Принеси: Алмаз ×5 → Элитры ×1 и 30 ур. опыта","color":"green"}
execute unless entity @s[tag=quests_done_3] run tellraw @s {"text":"• Принеси: Алмаз ×5 → Элитры ×1 и 30 ур. опыта"}
Как поставить
- Скачайте датапак
Распаковывать не нужно: игра читает его прямо из zip.
- Положите в мир
В одиночной игре — saves/<мир>/datapacks, на сервере — world/datapacks, потом /reload.
- Собирайте
Набралось нужное в инвентаре — через секунду предметы заберутся, придёт награда и сообщение в чат.
Что нужно знать
- Каждое задание — один раз. Сданное помечается у игрока, и второй раз за ту же награду его не сдать.
- Забирается ровно сколько нужно. Лишние предметы остаются в инвентаре.
- Предметы — по-русски или id. «Дубовое бревно» и oak_log — одно и то же. Только те, что есть и в 1.21.11: иначе пак не загрузится на старой версии.
Награду поинтереснее — предмет с чарами и именем — соберёт генератор /give, а меню с кнопками — генератор /dialog.
Частые вопросы
Как сделать квесты в Майнкрафте без плагинов?
Датапаком: впишите, что принести и что дать в награду. Пак сам заметит, что у игрока набралось, заберёт предметы и выдаст награду.
Как игроку посмотреть задания?
Командой /trigger quests — список заданий с галочками у сданных. Права оператора для неё не нужны.
Можно ли сдать задание дважды?
Нет: сданное помечается у игрока, второй раз за ту же награду его не сдать.
