WarGame | Team War Minigame 1.0.0

Solo, duo and squad war rounds with map voting, chest loot and an OP chest on a timer.




โš”๏ธ WarGame
Solo, duo and squad war rounds with map voting, chest loot and an OP chest on a timer.
By @zArrowTan, part of Arrow Plugins.

๐Ÿ“‹ Overview

WarGame is a team war minigame. Players gather in the lobby, vote on a map, and get split into teams. Each team lands on its own island for a short warmup, then the borders drop and they fight until one team is left standing.

One round runs at a time for the whole server, so everyone online is in the same game. Rounds are solo, duo or squad, and you switch between them with a single command. Everything a player reads comes from a language file, and everything a round does comes from config.


The lobby filling up before a round starts

๐Ÿงฉ Dependencies

No required dependencies. SQLite is the default storage and needs no setup at all, so you can drop the jar in and start building arenas.

  • PlaceholderAPI (optional) exposes %wargame_...% placeholders for use elsewhere on your server, and lets you put other plugins' placeholders inside the WarGame scoreboard and tab lines. Get it here



The database drivers are downloaded on first start rather than bundled in the jar, so let that first start reach the internet.


๐Ÿ‘ฅ Three Game Types

  • Solo one player per team
  • Duo two players per team
  • Squad four players per team



Set the type for the next round with /wars type, or lock it so it never changes. The number of team slots on an arena follows from the type and your maximum player count, so one arena serves whichever type you pick.


๐ŸŽฎ How a Round Plays

Lobby. The countdown starts once your minimum player count is met, or immediately with /wars start, and cancels again if players drop below the minimum. While it runs, players vote for the map they want in a menu. The winning arena is locked in when the countdown begins, with a random pick between tied maps.

Warmup. Teams are teleported to their island spawns and given the starting kit. A border holds each team on its island, damage is off, and anyone who walks off the map is pushed back.

Ingame. The borders drop and the round timer runs, twenty minutes by default. Players are eliminated by dying, by leaving the map bounds, or by disconnecting. The round ends when one team is left standing, or in a draw if the timer runs out first.

Finish. The winners are announced along with the top killer, stats are awarded and saved, your end-of-round commands run, and everyone is sent back to the hub for the next one.

Anyone who joins while a round is full is put in as a spectator, so nobody sits waiting at a black screen.


Leaving a round

๐Ÿ“ฆ Chests and the OP Chest

Loot is placed by whoever builds the map. Put normal chests around the arena and the plugin fills each one with a handful of weighted random items when the round starts. No chest step in the setup menu, no coordinates to record.

An ender chest becomes the OP chest. It sits locked for a couple of minutes, then opens for a short window, and the cycle repeats for the rest of the round. A hologram above it shows whether it is open and how long until it changes, and the whole server is told the moment it unlocks, which pulls every surviving team toward the same spot.

Both timings, and the loot in both kinds of chest, are yours to set.


๐Ÿ›  Arena Setup

/wars create <name> <type> hands you a compass. Right click it to open the setup menu, which walks you through four numbered steps: the team spawns, the main hub, the map and lobby boundaries, and the spectators spawn.


The setup tool arrives in your hotbar the moment you create an arena


The setup menu, with every step and what is still missing



  • Every item tells you what it is for, whether it is set, where it points, and what each click does
  • Left click sets a point, right click teleports you to it, shift click clears it
  • The arena item at the top shows the type, the team slots, the capacity, a progress bar, and what is still missing
  • The save button carries its own state. Grey names the points you still need, red warns that a team spawn sits outside the map bounds, green means the arena is ready
  • The bounds screen shows each box's world, size and both corners, so a corner marked in the wrong place is obvious before you save
Every step in the setup menu


The menu explains how a round works as you build the arena


Setting the team points


Setting a team spawn, where that team lands at the start of a round


Setting the hub spawn, where players are sent once a round ends


Setting the spectators spawn


Leaving setup, which cancels the arena you were creating

/wars edit works on a copy of the arena, so nothing changes until you save and a round already running on it is untouched. /wars list and /wars delete round it out, with arena names in tab completion.


๐Ÿ“Š Scoreboard and Tab

The sidebar and the tab list each have their own file and their own layout per stage, so the lobby, the warmup and the round itself can show completely different things. Both redraw on a timer and update in place, so nothing flickers.

  • Tab takes a multi-line header and footer, and a name format per role, per stage
  • Both carry an enabled toggle, so you can switch either off and let your existing scoreboard or tab plugin take over
  • Other plugins' placeholders work inside your lines when PlaceholderAPI is installed




The sidebar during a round, laid out entirely from config

๐Ÿ”— Placeholders

With PlaceholderAPI installed, WarGame exposes its own %wargame_...% placeholders for your hub scoreboard, your holograms, or anywhere else on the server:

%wargame_stage%      %wargame_time_left%
%wargame_map%        %wargame_teams_left%

The whole integration can be switched off in the config if you would rather it stayed out of the way.


๐Ÿ† Stats

Victories, losses, kills, deaths and points are tracked for every player and saved to your database. Points are awarded at the end of a round from the values you set, and never fall below zero. Players check their own with /stats, and staff can look up anyone.

Loading and saving happen off the main thread, and a round writes its results in a single pass rather than one player at a time.


Looking up a player's stats

๐Ÿ’ฌ Chat Channels

Teams get their own channel, so a squad can plan without the other side reading it. /wars chat flips between team and all, and prefixing a message with ! sends a single line to everyone.

Dead players and spectators see everything without being able to give the round away, and anyone outside the game talks to the others outside it rather than into an empty room.


Switching between team chat and global

โŒจ๏ธ Commands

For everyone

  • /wars join and /wars leave enter or leave the round
  • /wars chat [team|all] switch your chat channel, or flip it with no argument
  • /stats <player> look up a player's stats



For staff

  • /wars create <name> <solo|duo|squad> create an arena and open setup
  • /wars edit <name> reopen setup on an existing arena
  • /wars list list your arenas
  • /wars delete <name> confirm delete an arena
  • /wars type <solo|duo|squad> set the type for the next round
  • /wars start start the countdown early




The in-game command list

๐Ÿ” Permissions

  • wars.stats use /stats (default: everyone)
  • wars.admin setup and control commands (default: op)

๐ŸŽ› Fully Configurable

  • config.yml every timer, number and toggle, with a comment above each key explaining what it does
  • styles.yml named colour tags, so you set your scheme once and write <brand>text</brand> instead of repeating codes
  • scoreboard.yml and tab.yml the sidebar and tab list, per stage
  • arenas.yml written by the setup menu, nothing to edit by hand
  • Configs update themselves when you install a new build, with your own settings kept

๐ŸŒ Three Languages Built In

English, French and Spanish ship with the plugin, English as the fallback. Every player-facing string lives in a language file, so nothing is stranded in code. Drop your own file into the lang folder and point the config at it to add another language.


๐Ÿ’พ Storage

SQLite by default, written to a file in the plugin folder with no setup at all. Switch to MySQL by filling in the connection details in the config, with a table prefix if you share the database. All database work runs off the main thread, and the plugin tells you plainly and stops if it cannot reach your database, rather than running half-broken.


๐Ÿงช Requirements

  • Minecraft: 1.21.x
  • Server software: Spigot or Paper
  • Java: 21
  • Storage: SQLite out of the box, MySQL optional
  • Dependencies: none required, PlaceholderAPI optional

๐Ÿ’ฌ Support & Docs

Full setup and configuration guides are in the documentation. Have questions, found a bug, or want to suggest a feature? Join the Discord for updates, help, and support.

Read the documentation | Join the Discord

Last team standing wins.
-40%
Product Info
Statistics
11

Views

0

Purchases

0

Downloads

736.78 KB

File size

23.08.2026

Published

23.08.2026

Updated

Info
Supported software
Supported Versions
1.21 - 26.2
Share & Earn

Share and earn part of the profits, an estimated €0.3 per product sale.

Log in to get your link
Product Image
WarGame | Team War Minigame
WarGame | Team War Minigame