Ultimate Fallen Kingdoms ⚔️  | Multi-Arena ⭐ Top NPCs ⭐ Stats ⭐ 10 Langs icon

Ultimate Fallen Kingdoms ⚔️ | Multi-Arena ⭐ Top NPCs ⭐ Stats ⭐ 10 Langs -----

Complete Fallen Kingdoms gamemode for 1.21 | Multi-arena, top NPCs, stats, 10 languages



Ultimate Fallen Kingdoms ⚔️

The complete, premium-quality Fallen Kingdoms gamemode, released for free.

Multi-arena, real-player Top NPCs, full stats system, 10 built-in languages, deep config, polished UX.
Drop it in plugins/, set a lobby spawn, and you have a publish-ready minigame server.

What is Fallen Kingdoms?

Fallen Kingdoms is a team-based PvP gamemode born on French Minecraft YouTube around 2013, popularized by series creators such as Frigiel and Siphano. It is one of the most-watched Minecraft formats ever, and an incredibly fun way to play with friends on your own server. The original series ran across multiple multi-hour episodes, but this plugin is designed as a focused ~40-minute minigame: short enough to fit in a single session, long enough to deliver the full preparation → PvP → deathmatch arc with real strategic stakes.

The setup
  • 2 to 4 teams (Red, Blue, Green, Yellow) spawn in their own base, a small fortified zone with their team's Nexus inside (a precious block representing their kingdom's life).
  • Each team also owns a mine, a private resource zone where they can dig safely without enemies stealing their loot.
  • A border surrounds the whole arena to keep the action dense.

The objective
Destroy every other team's Nexus while protecting your own. When a team's Nexus falls, that team is eliminated. The last team with a Nexus standing wins.

How a match plays out
  1. Preparation phase (no PvP): every team mines resources, crafts gear, builds defensive walls and traps around their Nexus. Enemy bases are sealed off so nobody can sneak in early.
  2. PvP phase (combat opens): borders between bases drop, TNT becomes usable, raids on enemy Nexuses begin. Strategy, teamwork and base layout decide who survives.
  3. Deathmatch phase (final): every remaining nexus decays linearly until 0, auto-regen is disabled, and a stacking Wither effect (I → II → III) hits every alive player in the last 60 seconds. If multiple teams survive the timer, a tie-breaker awards the win to the team that dealt the most damage to enemy nexuses.

Why it's fun
  • Every team is both builder and raider: you fortify, then assault.
  • Encourages role specialization (warriors, archers, miners, builders) inside the same team.
  • Short, intense matches (typically 30 to 60 minutes) with clear stakes from minute one.
  • Reads great on stream and screenshares: color-coded teams, dramatic Nexus moments, comeback potential until the very last second.

✨ Why this plugin?

Fallen Kingdoms is one of the most iconic Minecraft team modes. Every existing implementation is either a paid premium plugin, a half-finished hobby project, or hardcoded to a single map. UltimateFallenKingdoms is what we wanted to play on our own server: a polished, modular, fully configurable FK engine that works out of the box and scales from one arena to dozens.

  • 100% free, no paywall, no feature gates
  • Multi-Arena & Single-Game architectures, switchable with one line of config
  • Adventure / MiniMessage UI with gradients, hover, and click-to-run everywhere
  • 10 built-in languages with per-player preference
  • Soft dependencies: runs without ProtocolLib or FAWE, gracefully upgrades when present
  • In-game GUI editor for spawns, mines, bases, borders and Top NPCs (no YAML editing required)
  • 3 storage backends: SQLite (default), MySQL/MariaDB, Flat-file
  • Developer API with Bukkit events and a public service for integrations

Core gameplay

Phases
  • Preparation: no PvP, mine resources, fortify your base. Enemy bases are sealed.
  • PvP: combat opens, TNT unlocks, assault the enemy nexuses.
  • Deathmatch: nexus decay, escalating Wither, tie-breaker by damage. No stalemate possible.

Teams
Up to 4 teams per arena ( Red, Blue, Green, Yellow, extendable), each with:
  • Own spawn point and waiting lobby (optional per-arena)
  • Own configurable cuboid mine (resource zone)
  • Own configurable cuboid base (build/protect zone)
  • Own nexus block with HP, hologram, regen, and attack alerts
  • Own team color reflected in chat, scoreboard, tablist, death messages

Smart match flow
  • ⏱️ Auto-start countdown: 120s normal, 15s when arena is full, abort below minimum
  • ⚖️ Team auto-balance at game start (max_size_diff enforcement)
  • Empty team elimination: teams with 0 players don't spawn nexuses (SOLO exception keeps a random opponent)
  • Disconnect grace period: players have N seconds to reconnect before being eliminated, with public notification
  • Live spectator mode: join a running game from the arena selector, teleport to living players via compass GUI, leave with /leave

Combat polish
  • TNT: auto-prime placed TNT, configurable fuse delay, blocked during preparation
  • Creeper waves: periodic surface spawns outside bases, drop 1 to 2 TNT each, 5% chance charged (lightning notification), kept strictly inside arena borders
  • Mob policy: block mob spawns everywhere except inside running arenas (configurable, on by default)
  • Auto mob purge on player join (configurable)
  • ☠️ Death messages: team-colored player names, vanilla message suppressed, scoped to game players

Real deathmatch dynamics
  • Linear nexus decay: every remaining nexus loses HP progressively, reaches 0 exactly when the deathmatch timer ends. Player attacks accelerate it.
  • Auto-regen disabled during deathmatch so the decay isn't fought back.
  • ☠️ Wither escalation: Wither I in last 60s, II in last 30s, III in last 10s (defaults, fully configurable). Refreshed every second, can't be cleansed.
  • Tie-breaker by cumulative damage dealt to enemy nexuses, broadcast to all players. Optional fallback to draw.
  • Each behavior individually toggleable in phases.deathmatch.*.

️ Maps & in-game editor

No more hand-editing YAML. Open /ufk config and configure everything via GUI:

  • Map list with playable / incomplete status and detailed ✓/✗ checklist of missing pieces
  • Base editor: pos1/pos2 selection, overlap detection, particle visualization toggle
  • ⛏️ Mine editor: same workflow, per-team cuboid mining zones
  • Border setup: FAWE corner selection (closed cuboid: floor + ceiling enforced)
  • Nexus placement: point at a block and click
  • Live particle preview: see your mines and bases highlighted in-world
  • Safe deletion with shift-click confirm

Map regeneration
  • FAWE-based snapshot regen when FastAsyncWorldEdit is installed
  • In-memory rollback fallback when FAWE isn't installed (covers all explosion damage including creepers)
  • ✅ Handles bedrock floor protection, void detection, and partial regen

Stats & Leaderboards

Full per-player statistics tracked across games:

Stat Description
⚔️ Kills Total player kills
☠️ Deaths Total deaths
★ K/D Computed ratio
Wins Games won
✗ Losses Games lost
% Win rate Percentage
Nexus Nexuses destroyed
Games Games played
First seen First-join timestamp
Last seen Last-join timestamp


Top players (real fake-player NPCs)
Configure live leaderboard NPCs in your lobby across 5 categories: Kills, Wins, K/D, Nexus, Games.

  • Real player skins loaded from Mojang sessionserver (24h skin cache)
  • Per-rank armor: Top 1 = full diamond, Top 2 = gold, Top 3 = iron, Top 4+ = leather
  • Floating gradient nameplate above each NPC with rank, name, score, category
  • Click to view stats: opens the full stats GUI for that player
  • Steve placeholder when no player has ranked yet
  • ⚙️ Configurable max NPCs per category, individual rank locations, instant respawn on edit

️ Installation

Step 1. Drop the jar
Code (Text):
plugins/UltimateFallenKingdoms-1.0.3.jar
Step 2. Start the server once
The plugin generates plugins/UltimateFallenKingdoms/:
  • config.yml: main configuration (~950 lines, fully commented)
  • lang/: 10 language files
  • kits.yml: starter kit definitions
  • maps.yml: auto-managed
  • ufk.db: SQLite stats (or MySQL when configured)

Step 3. Configure your first arena
  1. Create a map: stand inside your arena world and run /ufk createmap <name>
  2. Open the editor: /ufk config, set the global lobby spawn, then click your map and configure borders, team spawns, spectator spawn, nexus, mines, bases for each team
  3. Verify: /ufk maps shows ✓ Playable when complete
  4. Start a game: /ufk start (or let auto-start handle it)

Step 4. (Optional) Add Top NPCs
  1. /ufk config → Top → pick a category
  2. Stand at the desired NPC location, click a rank slot to set it
  3. NPCs spawn instantly with the current top players' skins

Languages

Out of the box:

Code Language
en_US English
fr_FR French
de_DE German
es_ES Spanish
zh_CN Chinese (Simplified)
ru_RU Russian
pt_BR Portuguese (Brazilian)
pl_PL Polish
tr_TR Turkish
ja_JP Japanese


  • Players pick their language with /ufk lang <code> (admins can lock the language server-wide)
  • Each file is ~640 lines covering every player-facing string, including the multi-page /ufk guide
  • All messages use MiniMessage with gradients, hover-text, and click-to-run actions

⚙️ Configuration highlights

The config.yml is exhaustive and commented. Every option ships with a Why explanation. Highlights:

  • game.architecture: MULTI_ARENA (default) or SINGLE_GAME
  • phases.preparation_seconds, phases.pvp_seconds, phases.deathmatch_seconds
  • phases.deathmatch.nexus_decay, phases.deathmatch.wither.{enabled,tier_1_seconds,tier_2_seconds,tier_3_seconds}, phases.deathmatch.tiebreaker_by_damage
  • teams.count (1 to 4), teams.max_per_team, teams.balance.max_size_diff, teams.auto_balance_on_start
  • auto_start.enabled, auto_start.countdown_seconds, auto_start.full_countdown_seconds
  • objective.nexus_max_hp, objective.regen_* (auto-regen below threshold, disabled during deathmatch)
  • mines.protect_outside, mines.bypass_permission
  • base.enforce_build_outside, base.protect_original_blocks, base.block_mob_spawns
  • tnt.enabled, tnt.prime_ticks, tnt.fuse_delay_ticks
  • creepers.enabled, creepers.max_alive, creepers.charged_percent, creepers.tnt_drop_min/max
  • mobs.block_outside_arenas, mobs.purge_on_player_join
  • world.force_difficulty (NORMAL recommended)
  • top.use_real_npcs (auto-detects ProtocolLib)
  • storage.type (sqlite / mysql / flat)
  • language.default, language.allow_player_change

Commands & Permissions

The base command is /ufk (aliases: /fallenkingdoms, /fk).

Player commands (ufk.play, default for everyone)
Command Description
/ufk help Show the command list
/ufk join [team] Join a team / open arena selector
/ufk leave Leave current game
/ufk lang <code|list> Change your display language
/leave Standalone command, quick leave for spectators


Admin commands (ufk.admin, default for ops)
Command Description
/ufk guide [page] Interactive 5-page admin guide
/ufk config Open the configuration GUI (everything is set up here)
/ufk maps List all maps with status
/ufk createmap <name> Create a new map in your current world
/ufk start [map] Start a game
/ufk stop Stop the running game
/ufk bypass Toggle mine-protection bypass during a running game
/ufk reload Reload config, lang, kits, and maps


Permissions
  • ufk.*: grants everything (ufk.admin + ufk.play)
  • ufk.admin: bundles every admin subcommand
  • ufk.play: bundles every player subcommand (default true)
  • Per-subcommand: ufk.command.<sub> (e.g. ufk.command.start, ufk.command.config), assignable individually for fine-grained access

Developer API

UltimateFallenKingdoms ships with a public API and a set of Bukkit events so you can build integrations on top of it (reward plugins, custom HUDs, Discord bridges, analytics, etc.).

Maven dependency
Add the plugin jar as a provided dependency, the same way you would for Spigot/Paper API. No external repository is required if you build against the local jar.

Accessing the API
The UFKApi instance is registered with Bukkit's ServicesManager, which is the recommended access pattern:

Code (Text):

RegisteredServiceProvider<UFKApi> rsp =
        Bukkit.getServicesManager().getRegistration(UFKApi.class);
if (rsp != null) {
    UFKApi api = rsp.getProvider();
    // ...
}
 
You can also fetch it directly from the plugin instance:

Code (Text):

UltimateFallenKingdoms ufk =
        (UltimateFallenKingdoms) Bukkit.getPluginManager().getPlugin("UltimateFallenKingdoms");
UFKApi api = ufk.getApi();
 
Don't forget to add UltimateFallenKingdoms to your plugin.yml depend: (or softdepend:) so it loads first.

API entry points
Method Returns Use case
api.games() GameManager Inspect/control all games
api.maps() MapManager Read configured maps
api.teams() TeamManager Resolve team metadata, colors, members
api.players() PlayerManager Game-state per player (LOBBY, PLAYING, SPECTATING, ELIMINATED)
api.lang() LangManager Send localized MiniMessage strings to a player
api.storage() Storage Read player stats, write custom records
api.gameOf(player) [USER=241773]@Nullable[/USER] Game Find which game a player belongs to
api.activeGames() Collection<Game> Iterate all live games


Bukkit events
All events live in fr.ultimateplugins.ufk.api.events and extend UFKEvent. Register them like any standard Bukkit event.

Event Fired when Notable
GameStartEvent A game transitions to RUNNING
GameEndEvent A game transitions to ENDING Exposes getWinner() (nullable on draw)
PhaseChangeEvent Phase moves between PREPARATION/PVP/DEATHMATCH Provides getFrom() and getTo()
ObjectiveDestroyedEvent A nexus is broken Exposes getOwner() (team) and getBreaker() (nullable)
PlayerEliminatedEvent A player loses their last life
PlayerJoinTeamEvent A player picks a team Cancellable for veto-style integrations
TeamEliminatedEvent A team has lost its nexus and all its players


Quick example
Reward the winning team's players with money via Vault on game end:

Code (Text):

@EventHandler
public void onGameEnd(GameEndEvent event) {
    Team winner = event.getWinner();
    if (winner == null) return; // draw
    for (UUID uuid : winner.getMembers()) {
        Player p = Bukkit.getPlayer(uuid);
        if (p != null) economy.depositPlayer(p, 100.0);
    }
}
 
Enums
The API also exposes the following enums in fr.ultimateplugins.ufk.api.enums: ArchitectureMode, DeathMode, GamePhase, GameState, LobbyMode, MapResetMode, ObjectiveType, PlayerState, StorageType.

Compatibility

  • Required: Paper 1.21+, Java 21
  • Soft dependencies (auto-detected, fully optional):
    • ProtocolLib 5.x → enables real-player Top NPCs (skin + armor)
    • FastAsyncWorldEdit 2.x → enables snapshot-based map regeneration
  • BungeeCord / Velocity: ready, configurable signs and player counts
  • No hard dependency on PlaceholderAPI, Vault, etc.

Tested versions

Built and stress-tested on Paper 1.21.

Free, but built like a premium plugin

What "free" doesn't mean here:
  • ❌ No "Buy premium for X feature"
  • ❌ No invasive tracking, no IP collection, no personal data, no server-content fingerprinting
  • ❌ No encrypted classes
  • ❌ No nag screens

Anonymous metrics: this plugin uses bStats to count installs and aggregate fully anonymous server data (MC version, Java version, OS, plugin architecture, storage backend, default language). No IP, no player data, no world content are ever transmitted. Fully opt-out via plugins/bStats/config.yml, like every other Spigot plugin that uses it.

What it does mean:
  • ✅ Built with the same care as a published premium plugin
  • ✅ Fully self-contained, no external services required
  • ✅ MIT-style spirit: use it on your network, modify your own copy, run it forever

Support & feedback

  • Found a bug? Use the Discussion tab with your server version, plugin version, and a console log.
  • Feature request? Open a discussion thread, we read everything.
  • If the plugin saves you time, leave a 5-star review. It's the only payment we ask for.

Made with ⚔️ by T4NO & Braazh
Drop a ⭐ if you enjoy it!
View attachment 958537 View attachment 958537 View attachment 958537
Resource Information
Author:
----------
Total Downloads: 20
First Release: May 3, 2026
Last Update: May 3, 2026
Category: ---------------
All-Time Rating:
0 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings