Свой сервер

SkyWars в Майнкрафт без плагинов

Датапак SkyWars для Minecraft 1.21.11 — 26.3: острова игроков в пустоте вокруг центрального, сундуки с лутом, старт из стеклянных капсул. Упал — выбыл, последний живой побеждает, и арена строится заново.

Острова

Игроков — по острову на каждого

Острова — по кругу в 28 блоках от центра. Кому острова не хватило, смотрит раунд наблюдателем.

Лут

5 вещей в сундуке на острове и 32 доски сверху, в центре — на две вещи больше и лучше.

Карта сверху

Датапак · 1.21.11 — 26.3
Игроков
до 8
Сундуков
8 × 2 + 4
До центра
28 блоков

Начать раунд — любой игрок в лобби

/trigger start
Скачать датапак
Что внутри архива — 27 файлов

data/minecraft/tags/function/load.json

Тег load: игра зовёт эти функции при загрузке мира и после /reload.

{
  "values": [
    "skywars:load"
  ]
}

data/minecraft/tags/function/tick.json

Тег tick: эти функции идут каждый тик — 20 раз в секунду.

{
  "values": [
    "skywars:tick"
  ]
}

data/minecraft/dimension/overworld.json

Обычный мир без земли: игра читает этот файл только при создании мира.

{
  "type": "minecraft:overworld",
  "generator": {
    "type": "minecraft:flat",
    "settings": {
      "biome": "minecraft:the_void",
      "features": false,
      "lakes": false,
      "layers": [
        {
          "block": "minecraft:air",
          "height": 1
        }
      ],
      "structure_overrides": []
    }
  }
}

data/skywars/function/loot/island.mcfunction

Макрос: один бросок по таблице — предмет в ячейку $(slot).

execute store result score #roll skywars run random value 1..238
$execute if score #roll skywars matches 1..16 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_sword 1
$execute if score #roll skywars matches 17..24 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_pickaxe 1
$execute if score #roll skywars matches 25..32 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_axe 1
$execute if score #roll skywars matches 33..40 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:bow 1
$execute if score #roll skywars matches 41..52 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:arrow 8
$execute if score #roll skywars matches 53..64 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:snowball 16
$execute if score #roll skywars matches 65..72 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:egg 16
$execute if score #roll skywars matches 73..88 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:cobblestone 32
$execute if score #roll skywars matches 89..104 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:oak_planks 32
$execute if score #roll skywars matches 105..112 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:chainmail_helmet 1
$execute if score #roll skywars matches 113..120 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:chainmail_boots 1
$execute if score #roll skywars matches 121..128 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:leather_chestplate 1
$execute if score #roll skywars matches 129..138 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:cooked_beef 8
$execute if score #roll skywars matches 139..144 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:water_bucket 1
$execute if score #roll skywars matches 145..156 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_sword 1
$execute if score #roll skywars matches 157..162 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_pickaxe 1
$execute if score #roll skywars matches 163..170 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_helmet 1
$execute if score #roll skywars matches 171..178 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_chestplate 1
$execute if score #roll skywars matches 179..186 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_leggings 1
$execute if score #roll skywars matches 187..194 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_boots 1
$execute if score #roll skywars matches 195..202 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:arrow 16
$execute if score #roll skywars matches 203..210 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:golden_apple 1
$execute if score #roll skywars matches 211..216 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:ender_pearl 1
$execute if score #roll skywars matches 217..220 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:lava_bucket 1
$execute if score #roll skywars matches 221..224 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_sword[minecraft:enchantments={"minecraft:knockback":1}] 1
$execute if score #roll skywars matches 225..227 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_sword 1
$execute if score #roll skywars matches 228..229 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_chestplate 1
$execute if score #roll skywars matches 230..231 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_helmet 1
$execute if score #roll skywars matches 232..232 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_sword[minecraft:enchantments={"minecraft:sharpness":2}] 1
$execute if score #roll skywars matches 233..234 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_chestplate[minecraft:enchantments={"minecraft:protection":2}] 1
$execute if score #roll skywars matches 235..236 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:ender_pearl 2
$execute if score #roll skywars matches 237..238 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:golden_apple 3

data/skywars/function/fill/island.mcfunction

Сундук под ногами: очистить и 5 бросков по таблице.

data modify block ~ ~ ~ Items set value []
item replace block ~ ~ ~ container.26 with minecraft:oak_planks 32
function skywars:loot/island {slot:13}
function skywars:loot/island {slot:3}
function skywars:loot/island {slot:23}
function skywars:loot/island {slot:11}
function skywars:loot/island {slot:15}

data/skywars/function/loot/center.mcfunction

Макрос: один бросок по таблице — предмет в ячейку $(slot).

execute store result score #roll skywars run random value 1..252
$execute if score #roll skywars matches 1..16 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_sword 1
$execute if score #roll skywars matches 17..24 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_pickaxe 1
$execute if score #roll skywars matches 25..32 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_axe 1
$execute if score #roll skywars matches 33..40 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:bow 1
$execute if score #roll skywars matches 41..52 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:arrow 8
$execute if score #roll skywars matches 53..64 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:snowball 16
$execute if score #roll skywars matches 65..72 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:egg 16
$execute if score #roll skywars matches 73..88 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:cobblestone 32
$execute if score #roll skywars matches 89..104 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:oak_planks 32
$execute if score #roll skywars matches 105..112 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:chainmail_helmet 1
$execute if score #roll skywars matches 113..120 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:chainmail_boots 1
$execute if score #roll skywars matches 121..128 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:leather_chestplate 1
$execute if score #roll skywars matches 129..138 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:cooked_beef 8
$execute if score #roll skywars matches 139..144 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:water_bucket 1
$execute if score #roll skywars matches 145..156 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_sword 1
$execute if score #roll skywars matches 157..162 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_pickaxe 1
$execute if score #roll skywars matches 163..170 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_helmet 1
$execute if score #roll skywars matches 171..178 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_chestplate 1
$execute if score #roll skywars matches 179..186 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_leggings 1
$execute if score #roll skywars matches 187..194 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_boots 1
$execute if score #roll skywars matches 195..202 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:arrow 16
$execute if score #roll skywars matches 203..210 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:golden_apple 1
$execute if score #roll skywars matches 211..216 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:ender_pearl 1
$execute if score #roll skywars matches 217..220 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:lava_bucket 1
$execute if score #roll skywars matches 221..224 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:stone_sword[minecraft:enchantments={"minecraft:knockback":1}] 1
$execute if score #roll skywars matches 225..230 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_sword 1
$execute if score #roll skywars matches 231..234 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_chestplate 1
$execute if score #roll skywars matches 235..238 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_helmet 1
$execute if score #roll skywars matches 239..240 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:diamond_sword[minecraft:enchantments={"minecraft:sharpness":2}] 1
$execute if score #roll skywars matches 241..244 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:iron_chestplate[minecraft:enchantments={"minecraft:protection":2}] 1
$execute if score #roll skywars matches 245..248 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:ender_pearl 2
$execute if score #roll skywars matches 249..252 run return run item replace block ~ ~ ~ container.$(slot) with minecraft:golden_apple 3

data/skywars/function/fill/center.mcfunction

Сундук под ногами: очистить и 7 бросков по таблице.

data modify block ~ ~ ~ Items set value []
function skywars:loot/center {slot:13}
function skywars:loot/center {slot:3}
function skywars:loot/center {slot:23}
function skywars:loot/center {slot:11}
function skywars:loot/center {slot:15}
function skywars:loot/center {slot:1}
function skywars:loot/center {slot:25}

data/skywars/function/build.mcfunction

Загрузить чанки арены и, когда все готовы, строить.

forceload add -47 -47 47 47
execute unless loaded -40 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded -40 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded -40 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded -40 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded -40 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded -40 ~ 40 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded -24 ~ 40 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded -8 ~ 40 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded 8 ~ 40 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded 24 ~ 40 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ -40 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ -24 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ -8 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ 8 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ 24 run return run schedule function skywars:build 5t
execute unless loaded 40 ~ 40 run return run schedule function skywars:build 5t
function skywars:make

data/skywars/function/make.mcfunction

Арена заново: уборка, острова, сундуки, капсулы и лобби.

kill @e[type=!player,x=-47,y=80,z=-47,dx=94,dy=45,dz=94]
fill -47 80 -47 47 82 47 minecraft:air
fill -47 83 -47 47 85 47 minecraft:air
fill -47 86 -47 47 88 47 minecraft:air
fill -47 89 -47 47 91 47 minecraft:air
fill -47 92 -47 47 94 47 minecraft:air
fill -47 95 -47 47 97 47 minecraft:air
fill -47 98 -47 47 100 47 minecraft:air
fill -47 101 -47 47 103 47 minecraft:air
fill -47 104 -47 47 106 47 minecraft:air
fill -47 107 -47 47 109 47 minecraft:air
fill -47 110 -47 47 112 47 minecraft:air
fill -47 113 -47 47 115 47 minecraft:air
fill -47 116 -47 47 118 47 minecraft:air
fill -47 119 -47 47 121 47 minecraft:air
fill -47 122 -47 47 124 47 minecraft:air
fill -47 125 -47 47 125 47 minecraft:air
fill -4 139 -4 4 143 4 minecraft:glass hollow
place template skywars:center -6 93 -6
setblock 3 101 0 minecraft:air
setblock 3 101 0 minecraft:chest[facing=north]
execute positioned 3 101 0 run function skywars:fill/center
setblock -3 101 0 minecraft:air
setblock -3 101 0 minecraft:chest[facing=north]
execute positioned -3 101 0 run function skywars:fill/center
setblock 0 101 3 minecraft:air
setblock 0 101 3 minecraft:chest[facing=north]
execute positioned 0 101 3 run function skywars:fill/center
setblock 0 101 -3 minecraft:air
setblock 0 101 -3 minecraft:chest[facing=north]
execute positioned 0 101 -3 run function skywars:fill/center
place template skywars:island -3 96 -31
setblock 2 101 -28 minecraft:air
setblock 2 101 -28 minecraft:chest[facing=north]
execute positioned 2 101 -28 run function skywars:fill/island
setblock -2 101 -28 minecraft:air
setblock -2 101 -28 minecraft:chest[facing=north]
execute positioned -2 101 -28 run function skywars:fill/island
fill -1 103 -29 1 107 -27 minecraft:glass hollow
summon marker 0.5 104 -27.5 {Tags:["skywars_spot"]}
place template skywars:island 17 96 -23
setblock 22 101 -18 minecraft:air
setblock 22 101 -18 minecraft:chest[facing=north]
execute positioned 22 101 -18 run function skywars:fill/island
setblock 18 101 -22 minecraft:air
setblock 18 101 -22 minecraft:chest[facing=north]
execute positioned 18 101 -22 run function skywars:fill/island
fill 19 103 -21 21 107 -19 minecraft:glass hollow
summon marker 20.5 104 -19.5 {Tags:["skywars_spot"]}
place template skywars:island 25 96 -3
setblock 28 101 2 minecraft:air
setblock 28 101 2 minecraft:chest[facing=north]
execute positioned 28 101 2 run function skywars:fill/island
setblock 28 101 -2 minecraft:air
setblock 28 101 -2 minecraft:chest[facing=north]
execute positioned 28 101 -2 run function skywars:fill/island
fill 27 103 -1 29 107 1 minecraft:glass hollow
summon marker 28.5 104 0.5 {Tags:["skywars_spot"]}
place template skywars:island 17 96 17
setblock 18 101 22 minecraft:air
setblock 18 101 22 minecraft:chest[facing=north]
execute positioned 18 101 22 run function skywars:fill/island
setblock 22 101 18 minecraft:air
setblock 22 101 18 minecraft:chest[facing=north]
execute positioned 22 101 18 run function skywars:fill/island
fill 19 103 19 21 107 21 minecraft:glass hollow
summon marker 20.5 104 20.5 {Tags:["skywars_spot"]}
place template skywars:island -3 96 25
setblock -2 101 28 minecraft:air
setblock -2 101 28 minecraft:chest[facing=north]
execute positioned -2 101 28 run function skywars:fill/island
setblock 2 101 28 minecraft:air
setblock 2 101 28 minecraft:chest[facing=north]
execute positioned 2 101 28 run function skywars:fill/island
fill -1 103 27 1 107 29 minecraft:glass hollow
summon marker 0.5 104 28.5 {Tags:["skywars_spot"]}
place template skywars:island -23 96 17
setblock -22 101 18 minecraft:air
setblock -22 101 18 minecraft:chest[facing=north]
execute positioned -22 101 18 run function skywars:fill/island
setblock -18 101 22 minecraft:air
setblock -18 101 22 minecraft:chest[facing=north]
execute positioned -18 101 22 run function skywars:fill/island
fill -21 103 19 -19 107 21 minecraft:glass hollow
summon marker -19.5 104 20.5 {Tags:["skywars_spot"]}
place template skywars:island -31 96 -3
setblock -28 101 -2 minecraft:air
setblock -28 101 -2 minecraft:chest[facing=north]
execute positioned -28 101 -2 run function skywars:fill/island
setblock -28 101 2 minecraft:air
setblock -28 101 2 minecraft:chest[facing=north]
execute positioned -28 101 2 run function skywars:fill/island
fill -29 103 -1 -27 107 1 minecraft:glass hollow
summon marker -27.5 104 0.5 {Tags:["skywars_spot"]}
place template skywars:island -23 96 -23
setblock -18 101 -22 minecraft:air
setblock -18 101 -22 minecraft:chest[facing=north]
execute positioned -18 101 -22 run function skywars:fill/island
setblock -22 101 -18 minecraft:air
setblock -22 101 -18 minecraft:chest[facing=north]
execute positioned -22 101 -18 run function skywars:fill/island
fill -21 103 -21 -19 107 -19 minecraft:glass hollow
summon marker -19.5 104 -19.5 {Tags:["skywars_spot"]}
setworldspawn 0 140 0
schedule function skywars:release 5s

data/skywars/function/release.mcfunction

Через 5 с после постройки чанки арены отпускаются.

forceload remove -47 -47 47 47

data/skywars/function/open.mcfunction

Старт: стекло капсул исчезает.

fill -1 103 -29 1 107 -27 minecraft:air
fill 19 103 -21 21 107 -19 minecraft:air
fill 27 103 -1 29 107 1 minecraft:air
fill 19 103 19 21 107 21 minecraft:air
fill -1 103 27 1 107 29 minecraft:air
fill -21 103 19 -19 107 21 minecraft:air
fill -29 103 -1 -27 107 1 minecraft:air
fill -21 103 -21 -19 107 -19 minecraft:air

data/skywars/function/seat.mcfunction

На место под меткой — случайный игрок из очереди.

tag @r[tag=skywars_queue] add skywars_seat
tp @a[tag=skywars_seat] ~ ~ ~ facing 0.5 104 0.5
spawnpoint @a[tag=skywars_seat] ~ ~ ~
tag @a[tag=skywars_seat] add skywars_alive
tag @a[tag=skywars_seat] remove skywars_queue
tag @a[tag=skywars_seat] remove skywars_seat

data/skywars/function/load.mcfunction

При загрузке мира: счета, триггер старта и арена, если её ещё нет.

scoreboard objectives add skywars dummy
scoreboard objectives add start trigger "Начать раунд"
scoreboard objectives add skywars_deaths deathCount
scoreboard objectives add skywars_left minecraft.custom:minecraft.leave_game
execute unless score #built skywars matches 1 run schedule function skywars:setup 1t
tellraw @a ["",{"text":"SkyWars загружен. Начать раунд — "},{"text":"/trigger start","color":"gold","click_event":{"action":"run_command","command":"/trigger start"}},{"text":"."}]

data/skywars/function/setup.mcfunction

Первая загрузка: построить арену.

function skywars:build
scoreboard players set #built skywars 1

data/skywars/function/tick.mcfunction

Каждый тик: старт, новички и вернувшиеся, ход игры.

scoreboard players enable @a start
execute as @a[scores={start=1..}] run function skywars:start
execute as @a[tag=!skywars_seen] run function skywars:join
execute as @a[scores={skywars_left=1..}] run function skywars:join
execute if score #state skywars matches 1 run function skywars:play

data/skywars/function/join.mcfunction

Вошёл игрок: идёт раунд — смотрит, нет — в лобби. Вышедший из игры в неё не вернётся.

scoreboard players reset @s skywars_left
tag @s add skywars_seen
tag @s remove skywars_alive
execute if score #state skywars matches 1.. run return run function skywars:watch
function skywars:lobby

data/skywars/function/watch.mcfunction

Опоздавший и выбывший смотрят наблюдателем.

gamemode spectator @s
tp @s 0 120 0
tellraw @s {"text":"Идёт раунд — вы смотрите. Следующий начнётся сам.","color":"gray"}

data/skywars/function/lobby.mcfunction

Игрок в лобби: режим приключения, пустой инвентарь, полное здоровье.

gamemode adventure @s
team leave @s
clear @s
effect clear @s
effect give @s minecraft:instant_health 1 20 true
effect give @s minecraft:saturation 1 20 true
xp set @s 0 levels
xp set @s 0 points
execute as @s run attribute @s minecraft:movement_speed base reset
execute as @s run attribute @s minecraft:jump_strength base reset
tp @s 0 140 0
spawnpoint @s 0 140 0

data/skywars/function/start.mcfunction

/trigger start — места, отсчёт. Прав оператора не нужно.

scoreboard players set @s start 0
execute if score #state skywars matches 1.. run return run tellraw @s {"text":"Раунд уже идёт."}
execute store result score #players skywars if entity @a
execute if score #players skywars matches ..1 run return run tellraw @s {"text":"Нужно хотя бы 2 игрока.","color":"red"}
scoreboard players set #state skywars 2
tag @a add skywars_queue
execute as @e[type=marker,tag=skywars_spot] at @s run function skywars:seat
execute as @a[tag=skywars_queue] run function skywars:watch
tag @a remove skywars_queue
execute as @a[tag=skywars_alive] run function skywars:prep
scoreboard players set #count skywars 10
function skywars:count

data/skywars/function/prep.mcfunction

Игрок на месте: пустой инвентарь, полное здоровье и сытость.

gamemode adventure @s
clear @s
effect clear @s
effect give @s minecraft:instant_health 1 20 true
effect give @s minecraft:saturation 1 20 true
xp set @s 0 levels
xp set @s 0 points
scoreboard players reset @s skywars_deaths

data/skywars/function/count.mcfunction

Отсчёт 10 … 1 титрами, по нулю — старт.

execute if score #count skywars matches ..0 run return run function skywars:go
title @a times 0 25 5
title @a title {"score":{"name":"#count","objective":"skywars"},"color":"gold"}
execute as @a at @s run playsound minecraft:block.note_block.hat master @s
scoreboard players remove #count skywars 1
schedule function skywars:count 1s

data/skywars/function/go.mcfunction

Старт раунда.

scoreboard players set #state skywars 1
gamemode survival @a[tag=skywars_alive]
title @a title {"text":"Старт!","color":"green"}
execute as @a at @s run playsound minecraft:entity.player.levelup master @s
function skywars:open

data/skywars/function/play.mcfunction

Каждый тик раунда: смерти, падения и кто остался.

execute as @a[tag=skywars_alive,y=-2048,dy=2118] run kill @s
execute as @a[tag=skywars_alive,scores={skywars_deaths=1..}] run function skywars:died
execute store result score #alive skywars if entity @a[tag=skywars_alive]
execute if score #alive skywars matches ..1 run function skywars:win

data/skywars/function/died.mcfunction

Игрок погиб.

scoreboard players reset @s skywars_deaths
function skywars:out

data/skywars/function/out.mcfunction

Выбыл: наблюдатель до конца раунда.

gamemode spectator @s
tag @s remove skywars_alive
execute store result score #alive skywars if entity @a[tag=skywars_alive]
tellraw @a ["",{"selector":"@s"},{"text":" выбывает. В игре: ","color":"gray"},{"score":{"name":"#alive","objective":"skywars"}}]

data/skywars/function/win.mcfunction

Победа: титры, через 10 с — новый раунд.

scoreboard players set #state skywars 3
execute if score #alive skywars matches 1 run title @a title {"selector":"@a[tag=skywars_alive]","color":"gold"}
execute if score #alive skywars matches 1 run title @a subtitle {"text":"победитель!"}
execute if score #alive skywars matches 0 run title @a title {"text":"Ничья"}
tellraw @a {"text":"Новый раунд — через 10 с.","color":"gray"}
schedule function skywars:restart 10s

data/skywars/function/restart.mcfunction

Новый раунд: арена заново, все — в лобби.

scoreboard players set #state skywars 0
function skywars:build
tag @a remove skywars_alive
execute as @a run function skywars:lobby
tellraw @a ["",{"text":"Арена готова. Начать — "},{"text":"/trigger start","color":"gold","click_event":{"action":"run_command","command":"/trigger start"}},{"text":"."}]

Что лежит в сундуках

Вещи кладутся броском по таблице, у каждого сундука и раунда — свой набор. Шанс — за один бросок.

Сундук на острове 5 предметов

  • Дубовые доски ×32 всегда
  • Каменный меч 6,7 %
  • Булыжник ×32 6,7 %
  • Дубовые доски ×32 6,7 %
  • Стрела ×8 5 %
  • Снежок ×16 5 %
  • Железный меч 5 %
  • Стейк ×8 4,2 %
  • Каменная кирка 3,4 %
  • Каменный топор 3,4 %
  • Лук 3,4 %
  • Яйцо ×16 3,4 %
  • Койф 3,4 %
  • Кольчужные ботинки 3,4 %
  • Кожаная куртка 3,4 %
  • Железный шлем 3,4 %
  • Железный нагрудник 3,4 %
  • Железные поножи 3,4 %
  • Железные ботинки 3,4 %
  • Стрела ×16 3,4 %
  • Золотое яблоко 3,4 %
  • Ведро воды 2,5 %
  • Железная кирка 2,5 %
  • Эндер-жемчуг 2,5 %
  • Ведро лавы 1,7 %
  • Каменный меч · Отдача I 1,7 %
  • Алмазный меч 1,3 %
  • Алмазный нагрудник 0,8 %
  • Алмазный шлем 0,8 %
  • Железный нагрудник · Защита II 0,8 %
  • Эндер-жемчуг ×2 0,8 %
  • Золотое яблоко ×3 0,8 %
  • Алмазный меч · Острота II 0,4 %

Сундук в центре 7 предметов

  • Каменный меч 6,3 %
  • Булыжник ×32 6,3 %
  • Дубовые доски ×32 6,3 %
  • Стрела ×8 4,8 %
  • Снежок ×16 4,8 %
  • Железный меч 4,8 %
  • Стейк ×8 4 %
  • Каменная кирка 3,2 %
  • Каменный топор 3,2 %
  • Лук 3,2 %
  • Яйцо ×16 3,2 %
  • Койф 3,2 %
  • Кольчужные ботинки 3,2 %
  • Кожаная куртка 3,2 %
  • Железный шлем 3,2 %
  • Железный нагрудник 3,2 %
  • Железные поножи 3,2 %
  • Железные ботинки 3,2 %
  • Стрела ×16 3,2 %
  • Золотое яблоко 3,2 %
  • Ведро воды 2,4 %
  • Железная кирка 2,4 %
  • Эндер-жемчуг 2,4 %
  • Алмазный меч 2,4 %
  • Ведро лавы 1,6 %
  • Каменный меч · Отдача I 1,6 %
  • Алмазный нагрудник 1,6 %
  • Алмазный шлем 1,6 %
  • Железный нагрудник · Защита II 1,6 %
  • Эндер-жемчуг ×2 1,6 %
  • Золотое яблоко ×3 1,6 %
  • Алмазный меч · Острота II 0,8 %

Как начать

  1. Скачайте датапак

    Распаковывать не нужно: игра читает его прямо из zip.

  2. Создайте новый мир

    «Создать мир» → «Ещё» → «Наборы данных» — перетащите архив и включите. На сервере — положите в world/datapacks до первого запуска.

  3. Подтвердите предупреждение

    Игра назовёт настройки экспериментальными — так она зовёт любой мир со своим генератором. Нажмите «Продолжить».

  4. Начинайте

    Все появляются в стеклянном лобби над центром. Нужно хотя бы двое: кто-то пишет /trigger start — и каждый в капсуле над своим островом.

Что нужно знать

  • Пустой мир — только при создании. Пак заменяет генератор обычного мира на пустоту, а его игра читает один раз — когда мир создаётся.
  • Капсула — без урона. Через десять секунд стекло исчезает, и игрок падает на свой остров с трёх блоков: урона от такой высоты нет.
  • Упал — выбыл. Кто опустился на 30 блоков ниже островов, погибает сразу и смотрит дальше наблюдателем.
  • Новый раунд — сам. Через десять секунд после победы мосты и постройки убираются, острова и капсулы встают заново, сундуки наполняются новым лутом.
  • Права не нужны. Старт — /trigger start, его пишет любой игрок. Опоздавший к раунду смотрит наблюдателем до следующего.

Свой остров для выживания — скайблок, кровати и ресурсы — BedWars, арена на обычной карте — Голодные игры. Сыграть с десятками людей — на серверах SkyWars в мониторинге.

Частые вопросы

Как сделать SkyWars в Майнкрафте без плагинов?

Скачайте датапак и добавьте его при создании нового мира кнопкой «Наборы данных», на сервере — в world/datapacks до первого запуска. Острова, сундуки и лобби построятся сами.

Как начать игру в SkyWars?

Соберитесь в стеклянном лобби над центром и напишите /trigger start — прав оператора не нужно. Каждый окажется в капсуле над своим островом, через 10 секунд стекло исчезнет.

Что будет после победы в SkyWars?

Через 10 секунд острова построятся заново: мосты исчезнут, сундуки наполнятся новым лутом, а все игроки вернутся в лобби к следующему раунду.