Skip to content
home/templates/mob arena (wave-based)
minigameAdvancednewmc 1.20.x – 1.21.x65 lines

mob arena (wave-based)

wave-based mob arena: /arena join queues, /arena start spawns waves of zombies/skeletons. reward per kill. survives all waves = win.

required addons — install before reloading
  • download skBeeAdds scoreboards, hologram text, and other things Skript can't do on its own.
Drop each .jar into your plugins/ folder, then restart your server.
mob-arena-starter.sk65 lines
# Player commands
command /arena <text>:
    trigger:
        if arg-1 is "join":
            if {arena.active} is true:
                send "&cAn arena is already running." to player
                stop
            add player to {arena.queue::*}
            send "&aYou joined the arena queue! (%size of {arena.queue::*}%/4)" to player

# Admin commands — gate ALL state-changing subcommands behind a permission so
# regular players can't force-start the arena or skip waves.
command /arenaadmin <text>:
    permission: arena.admin
    trigger:
        if arg-1 is "start":
            if size of {arena.queue::*} < 1:
                send "&cNeed at least 1 player in queue." to player
                stop
            if {arena.spawn} is not set:
                send "&cSet the arena spawn first with /setarenaspawn." to player
                stop
            set {arena.wave} to 0
            set {arena.active} to true
            loop {arena.queue::*}:
                teleport loop-value to {arena.spawn}
                clear loop-value's inventory
                give 1 iron sword to loop-value
                give 1 bow to loop-value
                give 64 arrow to loop-value
                add loop-value to {arena.players::*}
            delete {arena.queue::*}
            broadcast "&6Arena starting!"
            execute console command "/arenaadmin nextwave"
        else if arg-1 is "nextwave":
            add 1 to {arena.wave}
            set {_count} to {arena.wave} * 3
            broadcast "&6Wave &e%{arena.wave}% &6starting! &7(%{_count}% mobs)"
            loop {_count} times:
                spawn zombie at {arena.spawn}
            if {arena.wave} >= 10:
                broadcast "&6&l===== ARENA CLEARED ====="
                loop {arena.players::*}:
                    give 1 diamond to loop-value
                    teleport loop-value to spawn of world "world"
                delete {arena.players::*}
                delete {arena.active}
        else if arg-1 is "stop":
            broadcast "&cArena ended."
            delete {arena.players::*}
            delete {arena.active}

command /setarenaspawn:
    permission: arena.admin
    trigger:
        set {arena.spawn} to location of player
        send "&aArena spawn set." to player

on death of zombie:
    # attacker = killer entity. Coerce to player for membership check.
    if attacker is a player:
        if attacker is in {arena.players::*}:
            add 10 to {money.%uuid of attacker%}
            send "&7+ &a$10" to attacker

get it running

mob-arena-starter.sk · 65 lines · needs skBee
  1. 1

    copy or download

    grab the .sk file with the buttons up top.

    mob-arena-starter.sk· ready to drop in
  2. 2

    drop it in your scripts folder

    save it exactly here on your server — no typos, just copy the path:

    …/plugins/Skript/scripts/mob-arena-starter.sk
  3. 3

    reload in-game

    run this in chat or console — your script goes live instantly:

    /sk reload mob-arena-starter
that's it — your script is live. hop in-game to try it.
/ related templates

more minigame templates

comments