Свой сервер
Прятки: датапак для игры с друзьями
Водящий ждёт с закрытыми глазами, остальные прячутся, над хотбаром — таймер раунда. Ники прячущихся не видны сквозь стены, найденные переходят к водящему. Датапак для Minecraft 1.21.9 — 26.3, роли и старт — без прав оператора.
Фора и раунд
Фора прячущимся
Длина раунда
Как играть
Датапак · 1.21.9 — 26.31. Водящий пишет в чат
/trigger seeker2. Любой начинает раунд
/trigger start- Фора
- 30 с
- Раунд
- 5 мин
Что внутри архива — 15 файлов
data/minecraft/tags/function/load.json
Тег load: игра зовёт эти функции при загрузке мира и после /reload.
{
"values": [
"hideseek:load"
]
}
data/minecraft/tags/function/tick.json
Тег tick: эти функции идут каждый тик — 20 раз в секунду.
{
"values": [
"hideseek:tick"
]
}
data/hideseek/function/load.mcfunction
При загрузке мира: счета, триггеры и команды с цветом ника.
scoreboard objectives add hideseek dummy
scoreboard objectives add seeker trigger "Стать водящим"
scoreboard objectives add start trigger "Начать прятки"
scoreboard objectives add hideseek_hurt minecraft.custom:minecraft.damage_taken
team add hideseek_seekers
team modify hideseek_seekers color red
team add hideseek_hiders
team modify hideseek_hiders color green
team modify hideseek_hiders nametagVisibility hideForOtherTeams
team modify hideseek_hiders friendlyFire false
tellraw @a ["",{"text":"Прятки загружены. Водящий — "},{"text":"/trigger seeker","color":"red","click_event":{"action":"run_command","command":"/trigger seeker"}},{"text":", начать — "},{"text":"/trigger start","color":"gold","click_event":{"action":"run_command","command":"/trigger start"}},{"text":"."}]
data/hideseek/function/tick.mcfunction
Каждый тик: роли, старт, кого нашли и не кончились ли прячущиеся.
scoreboard players enable @a seeker
scoreboard players enable @a start
execute as @a[scores={seeker=1..}] run function hideseek:role
execute as @a[scores={start=1..}] run function hideseek:start
execute if score #running hideseek matches 1 as @a[tag=hideseek_hider,scores={hideseek_hurt=1..}] at @s if entity @a[tag=hideseek_seeker,distance=..6] run function hideseek:found
scoreboard players reset @a hideseek_hurt
execute if score #running hideseek matches 1 unless entity @a[tag=hideseek_hider] run function hideseek:seekers_win
data/hideseek/function/role.mcfunction
Игрок стал водящим (до старта раунда).
scoreboard players set @s seeker 0
execute if score #running hideseek matches 1 run return run tellraw @s {"text":"Раунд уже идёт."}
tag @s add hideseek_seeker
team join hideseek_seekers @s
tellraw @a ["",{"selector":"@s"},{"text":" — водящий."}]
data/hideseek/function/round/start.mcfunction
Старт отсчёта: 300 с полосой босса.
bossbar remove hideseek:round
bossbar add hideseek:round {"text":"До конца раунда"}
bossbar set hideseek:round color green
bossbar set hideseek:round max 300
scoreboard players set #round hideseek 300
function hideseek:round/second
data/hideseek/function/round/second.mcfunction
Раз в секунду: полоса и надпись «мм:сс», по нулю — конец.
execute if score #round hideseek matches ..0 run return run function hideseek:round/end
bossbar set hideseek:round players @a
execute store result bossbar hideseek:round value run scoreboard players get #round hideseek
scoreboard players operation #m hideseek = #round hideseek
scoreboard players operation #s hideseek = #round hideseek
scoreboard players set #60 hideseek 60
scoreboard players operation #m hideseek /= #60 hideseek
scoreboard players operation #s hideseek %= #60 hideseek
execute if score #s hideseek matches 10.. run bossbar set hideseek:round name ["",{"text":"До конца раунда "},{"score":{"name":"#m","objective":"hideseek"}},{"text":":"},{"score":{"name":"#s","objective":"hideseek"}}]
execute if score #s hideseek matches ..9 run bossbar set hideseek:round name ["",{"text":"До конца раунда "},{"score":{"name":"#m","objective":"hideseek"}},{"text":":0"},{"score":{"name":"#s","objective":"hideseek"}}]
scoreboard players remove #round hideseek 1
schedule function hideseek:round/second 1s
data/hideseek/function/round/end.mcfunction
Время вышло: полосу убрать, дальше — своё.
bossbar remove hideseek:round
function hideseek:hiders_win
data/hideseek/function/round/stop.mcfunction
Остановить отсчёт.
schedule clear hideseek:round/second
bossbar remove hideseek:round
data/hideseek/function/start.mcfunction
Старт: все не водящие — прячутся, у них 30 с.
scoreboard players set @s start 0
execute unless entity @a[tag=hideseek_seeker] run return run tellraw @s ["",{"text":"Сначала кто-то должен стать водящим: "},{"text":"/trigger seeker","color":"red","click_event":{"action":"run_command","command":"/trigger seeker"}}]
tag @a[tag=!hideseek_seeker] add hideseek_hider
team join hideseek_hiders @a[tag=hideseek_hider]
scoreboard players set #running hideseek 1
title @a title {"text":"Прячьтесь!"}
title @a subtitle {"text":"Водящий выйдет через 30 с"}
execute as @a[tag=hideseek_seeker] run attribute @s minecraft:movement_speed base set 0
execute as @a[tag=hideseek_seeker] run attribute @s minecraft:jump_strength base set 0
effect give @a[tag=hideseek_seeker] minecraft:blindness 30 0 true
schedule function hideseek:release 30s
data/hideseek/function/glow.mcfunction
Последняя минута: прячущиеся светятся сквозь стены.
effect give @a[tag=hideseek_hider] minecraft:glowing 60 0 true
title @a actionbar {"text":"Последняя минута — прячущиеся светятся!","color":"yellow"}
data/hideseek/function/release.mcfunction
Фора вышла: водящему вернуть скорость, пошёл отсчёт раунда.
execute as @a[tag=hideseek_seeker] run attribute @s minecraft:movement_speed base reset
execute as @a[tag=hideseek_seeker] run attribute @s minecraft:jump_strength base reset
title @a title {"text":"Водящий вышел!"}
function hideseek:round/start
schedule function hideseek:glow 240s
data/hideseek/function/found.mcfunction
Прячущегося нашли: становится водящим.
tag @s remove hideseek_hider
tellraw @a ["",{"selector":"@s"},{"text":" найден!"}]
effect clear @s minecraft:glowing
tag @s add hideseek_seeker
team join hideseek_seekers @s
data/hideseek/function/hiders_win.mcfunction
Время вышло, кто-то не найден — победа прячущихся.
title @a title {"text":"Прячущиеся победили!","color":"green"}
scoreboard players set #running hideseek 0
schedule clear hideseek:glow
tag @a remove hideseek_hider
tag @a remove hideseek_seeker
team empty hideseek_hiders
team empty hideseek_seekers
data/hideseek/function/seekers_win.mcfunction
Прячущихся не осталось — победа водящих.
function hideseek:round/stop
title @a title {"text":"Всех нашли!","color":"red"}
scoreboard players set #running hideseek 0
schedule clear hideseek:glow
tag @a remove hideseek_hider
tag @a remove hideseek_seeker
team empty hideseek_hiders
team empty hideseek_seekers
Как поставить
- Скачайте датапак
Распаковывать не нужно: игра читает его прямо из zip.
- Положите в мир
В одиночной игре — saves/<мир>/datapacks, на сервере — world/datapacks. Лучше карта с домами и закоулками.
- Перезагрузите
/reload — в чате появятся кнопки «стать водящим» и «начать».
Что нужно знать
- Найти — значит ударить. Прячущийся найден, когда получил урон, а водящий стоит ближе 6 блоков: падение в другом конце карты не считается.
- Ники не выдают. Надпись над прячущимся не видна чужой команде — ни сквозь стены, ни из-за угла.
- Победа — сама. Нашли всех — победили водящие, время раунда вышло — прячущиеся. Полоса над хотбаром показывает, сколько осталось.
- Права не нужны. Роли и старт — через /trigger, его может писать любой игрок.
Охота на одного с компасом — манхант, свой таймер для ивента — таймер на экране. Сервера с прятками — в мониторинге.
Частые вопросы
Как играть в прятки в Майнкрафте?
Поставьте датапак в мир. Водящий пишет /trigger seeker, раунд начинает /trigger start: водящий ждёт с закрытыми глазами, остальные прячутся, над хотбаром — таймер раунда.
Как скрыть ник над головой в прятках?
Датапак ставит прячущихся в команду, ник которой не виден чужим: водящий не увидит надпись сквозь стены.
Как понять, что игрока нашли?
Водящий бьёт прячущегося: урон рядом с водящим — значит, найден. Найденный становится водящим или выбывает — по выбору.
