Свой сервер
Сплиф и TNT Run
Арена в воздухе одной командой и правила датапаком для Minecraft 1.21.9 — 26.3. В сплифе пол ломают лопатой под соперником, в TNT Run он исчезает сам под ногами. Упал ниже нижнего этажа — выбыл, последний на арене побеждает.
Игра
Лопатой ломают пол под соперниками.
Арена
Пол
Размер
Этажей
Этажи — через 6 блоков: провалился — летишь на нижний, ниже нижнего — выбыл.
Сплиф
Датапак · 1.21.9 — 26.31. Арена над вами (права оператора)
/function spleef:build2. Начать или начать заново — любой игрок
/trigger spleef-
Блок снега
+20
- Арена
- 25 × 25
- Этажей
- 1
- Ломают
- алмазная лопата
Что внутри архива — 17 файлов
data/minecraft/tags/function/load.json
Тег load: игра зовёт эти функции при загрузке мира и после /reload.
{
"values": [
"spleef:load"
]
}
data/minecraft/tags/function/tick.json
Тег tick: эти функции идут каждый тик — 20 раз в секунду.
{
"values": [
"spleef:tick"
]
}
data/spleef/function/load.mcfunction
При загрузке мира: счета, триггер старта и подсказка в чат.
scoreboard objectives add spleef_game dummy
scoreboard objectives add spleef trigger "Начать: Сплиф"
tellraw @a ["",{"text":"Сплиф загружен. Арена — "},{"text":"/function spleef:build","color":"aqua","click_event":{"action":"suggest_command","command":"/function spleef:build"}},{"text":", начать — "},{"text":"/trigger spleef","color":"gold","click_event":{"action":"run_command","command":"/trigger spleef"}},{"text":"."}]
data/spleef/function/tick.mcfunction
Каждый тик: старт по триггеру, кто упал и не остался ли один.
scoreboard players enable @a spleef
execute as @a[scores={spleef=1..}] run function spleef:start
execute if score #running spleef_game matches 2 at @e[type=minecraft:marker,tag=spleef_arena,limit=1] positioned ~-13 ~-64 ~-13 as @a[tag=spleef_player,dx=26,dy=81,dz=26] run function spleef:out
execute if score #running spleef_game matches 2 store result score #alive spleef_game if entity @a[tag=spleef_player]
execute if score #running spleef_game matches 2 if score #alive spleef_game matches ..1 run function spleef:finish
data/spleef/function/build.mcfunction
/function spleef:build — арена над вами (оператору), старая убирается.
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run function spleef:clear
kill @e[type=minecraft:marker,tag=spleef_arena]
execute align xyz positioned ~0.5 ~ ~0.5 run summon minecraft:marker ~ ~ ~ {Tags:["spleef_arena"]}
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run forceload add ~-13 ~-13 ~13 ~13
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run function spleef:walls
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run function spleef:floors
tellraw @s ["",{"text":"Арена 25 × 25 стоит в 20 блоках над вами, лобби — здесь. Начать — "},{"text":"/trigger spleef","color":"gold","click_event":{"action":"run_command","command":"/trigger spleef"}},{"text":"."}]
data/spleef/function/walls.mcfunction
Стены арены из стекла от нижнего этажа до верха.
fill ~-13 ~20 ~-13 ~13 ~23 ~-13 minecraft:glass
fill ~-13 ~20 ~13 ~13 ~23 ~13 minecraft:glass
fill ~-13 ~20 ~-13 ~-13 ~23 ~13 minecraft:glass
fill ~13 ~20 ~-13 ~13 ~23 ~13 minecraft:glass
data/spleef/function/floors.mcfunction
Пол всех этажей заново.
fill ~-12 ~20 ~-12 ~12 ~20 ~12 minecraft:snow_block
data/spleef/function/clear.mcfunction
Убрать старую арену и отпустить её чанки.
fill ~-13 ~20 ~-13 ~13 ~23 ~13 minecraft:air
forceload remove ~-13 ~-13 ~13 ~13
data/spleef/function/count/start.mcfunction
Старт отсчёта цифрами: 5 с.
title @a[tag=spleef_player] times 0 25 5
scoreboard players set #count spleef_game 5
function spleef:count/second
data/spleef/function/count/second.mcfunction
Раз в секунду: цифра на весь экран и щелчок.
execute if score #count spleef_game matches ..0 run return run function spleef:count/end
title @a[tag=spleef_player] title {"score":{"name":"#count","objective":"spleef_game"},"color":"gold"}
execute as @a[tag=spleef_player] at @s run playsound minecraft:block.note_block.hat master @s ~ ~ ~ 1 1
scoreboard players remove #count spleef_game 1
schedule function spleef:count/second 1s
data/spleef/function/count/end.mcfunction
Отсчёт кончился.
title @a[tag=spleef_player] clear
function spleef:go
data/spleef/function/start.mcfunction
Старт: пол заново, игроки — на верхний этаж, 5 секунд на месте.
scoreboard players set @s spleef 0
execute if score #running spleef_game matches 1.. run return run tellraw @s {"text":"Игра уже идёт."}
execute unless entity @e[type=minecraft:marker,tag=spleef_arena] run return run tellraw @s ["",{"text":"Сначала оператор ставит арену: "},{"text":"/function spleef:build","color":"aqua","click_event":{"action":"suggest_command","command":"/function spleef:build"}}]
execute store result score #n spleef_game if entity @a[gamemode=!spectator]
execute if score #n spleef_game matches ..1 run return run tellraw @s {"text":"Нужно хотя бы двое игроков не в режиме наблюдателя."}
kill @e[type=minecraft:marker,tag=spleef_fall]
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run function spleef:floors
tag @a[gamemode=!spectator] add spleef_player
gamemode adventure @a[tag=spleef_player]
effect give @a[tag=spleef_player] minecraft:resistance infinite 4 true
effect give @a[tag=spleef_player] minecraft:saturation infinite 0 true
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run spreadplayers ~ ~ 1 11 false @a[tag=spleef_player]
execute as @a[tag=spleef_player] run attribute @s minecraft:movement_speed base set 0
execute as @a[tag=spleef_player] run attribute @s minecraft:jump_strength base set 0
scoreboard players set #running spleef_game 1
function spleef:count/start
data/spleef/function/go.mcfunction
Отсчёт кончился: ноги вернулись, у каждого инструмент, которым ломается только пол.
scoreboard players set #running spleef_game 2
execute as @a[tag=spleef_player] run attribute @s minecraft:movement_speed base reset
execute as @a[tag=spleef_player] run attribute @s minecraft:jump_strength base reset
title @a[tag=spleef_player] title {"text":"Вперёд!","color":"green"}
give @a[tag=spleef_player] minecraft:diamond_shovel[minecraft:can_break={blocks:"minecraft:snow_block"},minecraft:enchantments={"minecraft:efficiency":5},minecraft:unbreakable={},minecraft:custom_data={spleef:1b}]
data/spleef/function/leave.mcfunction
Игрок уходит с арены: в лобби, режим выживания, без эффектов и без инструмента сплифа.
tag @s remove spleef_player
execute at @e[type=minecraft:marker,tag=spleef_arena,limit=1] run tp @s ~ ~ ~
gamemode survival @s
effect clear @s
attribute @s minecraft:movement_speed base reset
attribute @s minecraft:jump_strength base reset
clear @s *[minecraft:custom_data~{spleef:1b}]
data/spleef/function/out.mcfunction
Упал ниже нижнего этажа — выбыл.
function spleef:leave
tellraw @a ["",{"selector":"@s","color":"red"},{"text":" выбывает."}]
data/spleef/function/finish.mcfunction
Остался один: победитель на весь экран, все — в лобби.
scoreboard players set #running spleef_game 0
schedule clear spleef:count/start
schedule clear spleef:count/second
kill @e[type=minecraft:marker,tag=spleef_fall]
execute if entity @a[tag=spleef_player] run title @a title {"selector":"@a[tag=spleef_player]","color":"gold"}
execute if entity @a[tag=spleef_player] run title @a subtitle {"text":"побеждает!"}
execute unless entity @a[tag=spleef_player] run title @a title {"text":"Ничья"}
execute as @a[tag=spleef_player] run function spleef:leave
tellraw @a ["",{"text":"Ещё раз — "},{"text":"/trigger spleef","color":"gold","click_event":{"action":"run_command","command":"/trigger spleef"}},{"text":"."}]
data/spleef/function/stop.mcfunction
/function spleef:stop — остановить игру (оператору).
scoreboard players set #running spleef_game 0
schedule clear spleef:count/start
schedule clear spleef:count/second
kill @e[type=minecraft:marker,tag=spleef_fall]
execute as @a[tag=spleef_player] run function spleef:leave
tellraw @a {"text":"Игра остановлена."}
Как поставить
- Скачайте датапак
Распаковывать не нужно: игра читает его прямо из zip.
- Положите в мир
В одиночной игре — saves/<мир>/datapacks, на сервере — world/datapacks, затем /reload.
- Поставьте арену
Встаньте, где будет лобби, и напишите /function spleef:build: арена встанет в 20 блоках над вами.
- Играйте
/trigger spleef — все разлетятся по верхнему этажу, через 5 секунд — старт.
Что нужно знать
- Ломается только пол. На время игры все в режиме приключения, а алмазная лопата с Эффективностью V ломает лишь снег арены — стены и чужой мир целы. После игры инструмент забирается, остальной инвентарь не трогается.
- Падать не больно. У игроков на арене Сопротивление V и насыщение: провал между этажами не убивает, голод не мешает.
- Выбывший — в лобби. Упавший ниже нижнего этажа переносится туда, где стоял строивший, в режиме выживания. Последний на арене побеждает, его имя — на весь экран.
- Перезапуск — тем же триггером. /trigger spleef ставит пол всех этажей заново. Новое место — снова build, старая арена исчезнет сама.
Режимы серверов, сплиф и TNT Run в том числе, — в вики, серверы с мини-играми — в мониторинге. Ещё игры для друзей — Death Swap и лаки-блоки.
Частые вопросы
Как сделать сплиф в Майнкрафте?
Скачайте датапак, положите в мир и встаньте, где нужна арена: /function spleef:build поставит её над вами. Игру начинает /trigger spleef — у каждого лопата, которой ломается только снег.
Как сделать TNT Run в Майнкрафте?
Выберите режим TNT Run: арена из песка на ТНТ ставится командой /function tntrun:build, старт — /trigger tntrun. Блок под ногами исчезает через полсекунды, стоять на месте нельзя.
Как перезапустить арену?
Тем же /trigger: пол всех этажей ставится заново, игроки снова оказываются на верхнем этаже. Выбывшие ждут в лобби под ареной.
