NovaFFA | Free For All Plugin 2.12.0

The ultimate Modern FFA PvP plugin | Editable Kits | Unlimited Kits/Arenas | PAPI | FAWE

Hold Shift and click to select a range

Latest
Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.12.0
Every kit in one shared arena, kits sold through your economy, and money or commands paid out on a kill.

🏟 One Arena Mode

Everyone fights in the same place, whatever kit they picked, so a sword player stands next to an axe player. Turn on one_arena at the bottom of config.yml, name the arena, and run /ffa reload. No restart.

  • It is a switch, not an extra way in. While it is on, every join goes to that arena and the kit links are ignored. Turn it off and every link works again, nothing is deleted
  • one_arena.kits limits which kits are offered, and an empty list offers them all
  • The mode reads its menus from menus/one_arena/, a full second set worded for it, so each mode keeps its own layout and both folders stay there to edit
  • /ffa join <arena> sends a player in with the kit they picked last, or opens the menu if they have not picked one
  • The console warns on start and on reload if the mode names an arena or a kit that does not exist



Find out more about how this works here: greenarrowlol.github.io/NovaFFA/docs/one-arena-mode


💰 Kits Sold Through Vault

Any kit can carry a price, paid in whatever currency your economy plugin runs. If it calls its money coins, so does NovaFFA.

  • /ffa kit edit <kit> price <amount> locks a kit until a player buys it. In the normal mode, a locked kit locks its arena too
  • A locked kit shows its price and the player's balance in the fight menu. Clicking it opens a confirm screen, nothing is taken until they confirm, and then they go straight into the fight
  • /ffa buy <kit> opens the same confirm screen from chat
  • /ffa kit grant and /ffa kit revoke handle store deliveries and admin gifts, from the console and for offline players
  • novaffa.kit.<kit> unlocks a kit for a rank, and operators do not get every kit for free
  • Without Vault and an economy plugin nothing changes, every kit stays free



Read more here: greenarrowlol.github.io/NovaFFA/docs/kit-prices-and-rewards


⚔️ Rewards for Kills

  • economy.kill_reward pays money for every kill through Vault
  • on_kill.rewards runs commands for the killer, for the victim, and on exact streaks, with {killer}, {victim}, {arena}, {kit}, {streak} and PlaceholderAPI placeholders. Lines run as the console unless they start with player:
  • same_victim_cooldown, same_ip and on_combat_log stop rewards being farmed with a friend or an alt. None of them stop the kill counting

🔧 Fixes

  • A kit could come out empty. A kit made with /ffa kit create or updated with inventory import kept a live link to the admin's inventory, so later saves wrote whatever that admin happened to be holding. The items are copied now. A kit that already emptied needs one /ffa kit edit <kit> inventory import
  • Arena corners name whole blocks. They were compared as the exact spots an admin was standing in, so the bottom layer of an arena could fall outside its own region, and two corners set at the same height protected nothing at all. An arena is now every block from one corner to the other, like any region plugin. Nothing to change in your files
  • Build protection hardened. The axe, shovel, hoe, flint and steel and armour stand checks no longer step aside for an interaction another plugin has touched, and they read whichever hand the tool is in
  • The refill after a kill, the kit handed back after a regeneration and %ffa_kit_name% all follow the kit the player actually picked

🔗 Placeholders and API

New placeholders: %ffa_owns_<kit>%, %ffa_price_<kit>%, %ffa_kits_owned% and %ffa_one_arena%.

For developers, FFAKillRewardEvent fires before a kill pays out, with editable command lists and money.

Read more here: greenarrowlol.github.io/NovaFFA/docs/developer-api


📦 Upgrading

Stop the server, swap in NovaFFA-2.12.0.jar, start it again. config.yml moves to version 5, menus/fight.yml to 4 and the language files to 9, with your own values kept and the new keys added on first start. menus/kit_buy.yml and the menus/one_arena/ folder are created for you.

Add Vault and an economy plugin if you want to sell kits or pay money for kills. Everything else works without them.

If you turned build off on an arena and it never seemed to do anything, check its corners with /ffa arena info <arena>. They are meant to be opposite corners of a box, one at the floor and one above the highest point you want covered.


📋 Version Breakdown

Version Focus
2.12.0 One arena mode, kit prices through Vault, kill rewards, and the fix for kits emptying themselves.
2.11.1 Arena corners cover whole blocks, so build protection works at the floor and at matching heights, plus harder tool checks.

Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.11.0
The stable one. Arena data can no longer be lost, joining by kit name works, and a long list of smaller fixes across the plugin.



If you are on 2.10.0 or 2.10.1, update. Nothing in your files needs changing by hand.


⌨️ Joining by Typing the Kit Name

/ffa <kit> answered "Incorrect argument for command" on every server, and had never actually worked on Paper. It works now, and so does /ffa play <kit>, which is the same thing with tab completion. A word that is not a kit still fails the way it did.


🏟 Arena Data Cannot Be Lost Any More

2.10.1 stopped spawns being deleted. This goes after the cause, which was the plugin trusting what it had in memory over what the file already said.

  • Setting corner 1 on an arena whose world was not loaded wrote both corners to wherever you were standing. Fixed, corners 1 sets corner 1 and nothing else
  • /ffa arena info reads the file, so an arena whose world is not up shows its real corners and spawn instead of N/A
  • An arena knows where it is whether or not its world is loaded, and a save can never write out less than the file already holds
  • Every arena, kit, layout, player and lobby file is now written whole or not at all, so a save cut short can no longer leave an empty file behind
  • Two saves can no longer collide, and one broken arena no longer stops the rest of the shutdown from saving

🎒 Item Duplication in the Kit Editor

Players could take the kit's items out of /editkits into their own inventory, close the menu, press Reset and take another set, as many times as they liked. The editor now arranges the kit and nothing else: items cannot move between the grid and the player's inventory in either direction, and anything on the cursor at close goes back into the layout.

  • A custom_items decoration on a grid square used to be saved into every player's kit and could be carried off. Decorations now leave the grid like the control items do
  • An editor menu under six rows, or one with a control item on a grid square, saved those slots as empty, armour first. The layout is rebuilt from what the player already had

🧹 /lobby Clearing Inventories

/lobby, and /spawn as its alias, cleared the inventory of whoever ran it whether or not they had ever been in an arena. Only a player actually leaving an arena gets cleared now.


💾 Kits, Layouts and Statistics

  • A kit whose items could not be read was loaded empty and then written back empty, destroying it. The file is left alone now and the console names the kit
  • A player whose layout could not be read had the kit's layout saved over their file. The fallback is handed out but never saved
  • One unreadable yml file used to stop the plugin starting. It is one warning and one skipped file
  • Deleting a kit or arena could be undone by a save already on its way to disk
  • Deleting an arena deletes its schematic too, so a new arena under the same name no longer inherits the old one's blocks
  • Moving an arena's corners tells you the saved schematic needs saving again
  • Kit and arena names are checked for letters, numbers, - and _. A dot used to send a layout somewhere nothing could find again
  • Shutdown only writes the player files and layouts that actually changed

⚔️ Combat, Building and Commands

  • A combat tagged player could step one block outside the arena and use any blocked command. The timer is what matters now, not where they stand
  • /essentials:spawn and every other plugin:command form walked past the block lists. They are matched now
  • A player logging out mid fight was killed wherever they were, even after leaving the arena, dropping what they carried
  • With building off, an axe could still strip logs, a shovel could path, a hoe could till, flint and steel could set fires, and armour stands could be stripped. All held back
  • /ffa lobby, /ffa leave and the menu's lobby button ran through the server's command map, so on a hub where another plugin owns /lobby they sent players to that plugin's destination with no combat tag or leave handling

🔗 Placeholders, Menus and the Rest

  • The top kills and deaths placeholders and %ffa_players_<arena>% returned nothing unless an online player asked. They answer for the console, a hologram and an offline player now
  • The leaderboard sorted live counters while kills were landing, which printed a stack trace. It sorts a snapshot
  • A head that cannot be resolved started a fresh network lookup on every menu draw. Failed lookups are remembered
  • A typo in one menu file left the plugin with no menus at all until a restart. Files are only swapped in once all of them read
  • A message set to an empty string, which is how you turn one off, was sent as a blank line
  • /ffa reload puts the regeneration timers on the new interval
  • Deleting a kit unlinks the arenas pointing at it instead of leaving them broken

📦 Upgrading

Stop the server, swap in NovaFFA-2.11.0.jar, start it again. Language files move to lang-version: 8 on their own and your edits are kept.

Check /ffa arena info <arena> on each arena afterwards. Anything still missing from an arena an older version wiped has to be set once, and it will not be lost again.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.10.1
Arena and lobby spawns no longer disappear on a restart.

🏟 Spawns Kept Through a Restart

If a world manager like Multiverse loads your worlds, arenas were coming back from a restart with their spawn point and corners wiped out of the arena file. Fixed. An arena now keeps whatever its file says, and an arena whose world loads late is picked up the moment it appears.

The lobby was losing its spawn the same way, and also had a habit of overwriting it with the main world's spawn. Both fixed.


📦 Upgrading

Stop the server, swap in NovaFFA-2.10.1.jar, start it again. No config or language changes.

Run /ffa arena info <arena> on each arena afterwards. Anything that already lost its spawn needs /ffa arena edit <arena> spawn once, standing where you want it. It stays put from here.

Compiled clean against Paper 1.21.1 and Paper 26.2.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.10.0
An arena can protect its own blocks now. One command turns building off inside it, with no region plugin drawn around it.

🧱 Building On and Off, Per Arena

/ffa arena edit <arena> build <on | off> decides whether players can place and break blocks inside that arena. true and false work in place of on and off.

  • This is the whole of what a region plugin was being set up for on every arena. A sword arena or a gapple arena has nothing in it meant to be built on, and drawing a region around each one by hand to say so was work the plugin should have been doing itself
  • The setting is per arena and lives in that arena's own file, so one arena can be locked down while the arena next door stays open
  • /ffa arena info shows whether building is on



Find out more about how this works here: greenarrowlol.github.io/NovaFFA/docs/arenas-and-regeneration#protecting-the-blocks


🔍 What It Actually Covers

Breaking and placing are not the only ways an arena gets changed, so the flag covers every hand a player has on the blocks rather than those two alone.

  • Beds, doors, tall flowers and anything else that lands in two squares at once, refused when either square is inside the arena
  • A bucket of water emptied on the floor, and the arena's own water drained back out, neither of which is a place event
  • Item frames and paintings going up and coming down, including one shot off a wall from across the arena, since the arrow is followed back to whoever fired it
  • Armor stands, boats, minecarts and end crystals being put down, none of which are block places either
  • The block is what gets checked, not the player. Standing outside the corners and reaching in is refused the same way, and a block outside the arena is never protected by it



What it deliberately does not cover is anything that is not a player changing a block by hand. Explosions, fire spread, liquid flow and pistons are left alone, because an arena can want its blocks left standing while explosions still do their damage. Those are getting flags of their own.


🔐 The Permission and the Default

  • New novaffa.arena.build.bypass, op by default, so an admin can still build the arena they are standing in
  • New arenas.build in config.yml is only the value a newly created arena starts with. Set it to false and every arena made from then on is protected without being told to
  • An arena made before this release carries no setting of its own, so it falls back to that default and behaves exactly as it did. Nothing changes on an existing server until you turn something off



Read more here: greenarrowlol.github.io/NovaFFA/docs/permissions


💬 Told Once, Not Forty Times

A player who tries to build where they cannot is told so above the hotbar, where a held swing cannot turn into a wall of chat. It is held back to one message every second and a half either way, because the rate a block break arrives at is not a rate chat can take.

The line is arena.build_denied in the language file, translated in all five shipped languages, and it can be moved into the chat box like any other message.


📦 Upgrading

Stop the server, drop NovaFFA-2.10.0.jar in place of your old jar, and start it again. The new config and language keys are added to your files on their own, taking config.yml to config-version: 4 and the language files to lang-version: 7, and everything you had already set in them is kept.

Then run /ffa arena edit <arena> build off on any arena that is not meant to be built in. Nothing changes until you do.

Compiled clean against Paper 1.21.1 and Paper 26.2.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.9.0
Heads wear the right face, an arena can be rebuilt without killing the people standing in it, and the items you write into a menu yourself can now do something.
All of it is documented here: greenarrowlol.github.io/NovaFFA/docs

🧑 Player Heads Show the Right Face

A head written as skull: viewer, skull: 'player:SomeName' or skull: 'uuid:<uuid>' now wears that player's skin. It was drawn with the default face before, on an online mode server as much as a cracked one, because a profile holding only a name or a uuid carries no skin and nothing was filling one in.

  • An online player's skin is read from the player themselves, which costs nothing and covers the common case, skull: viewer on a toolbar button
  • New optional SkinsRestorer hook, which is what makes heads work on a cracked server, where a player's uuid is made up locally and Mojang has never heard of it. Install it and NovaFFA reads the skin it holds, nothing to configure, and the hook is reported in the console at start
  • Mojang is asked for anybody who has never been online on this server
  • Neither of those last two blocks anything. The head goes down plain and is filled in the moment the answer lands, with the menu still open
  • Answers are kept for half an hour, and /ffa reload drops them, which is how a changed skin is picked up without waiting that out
  • Heads written as texture:, url: or hash: carry their own skin and never needed any of this. They are unchanged



Where a player's skin comes from


🧱 Rebuilding an Arena Without Killing Anybody

  • New arenas.regeneration.protect_players, on by default. While an arena is being rebuilt, and for a few seconds after, the world cannot hurt anybody inside it. Suffocation, falling, fire, lava, drowning and the rest are all held back
  • Damage from another player is untouched, so a fight carries on through a rebuild rather than turning into a few seconds where nobody can die
  • protect_players.free_stuck lifts anybody the new blocks sealed in up to the first open space above them, keeping the way they were facing. Somebody the arena has no room for is sent to the arena spawn
  • This is what makes after.teleport_players.enabled: false safe to use. Turning the teleport off keeps a fight going through a rebuild, and until now that also meant the blocks came back around the players and suffocated them
  • New arenas.regeneration.layers, off by default. Turned on, the arena goes back down a row at a time from the bottom up, so the floor returns under a player before the roof returns over them and there is time to walk out of the way
  • layers.rows sets how many rows go down in one step and layers.delay_ticks how long it waits between steps, so a tall arena can be put back faster or slower



Rebuilding without interrupting the fight


🖱 Menu Items That Do Something

A custom_items entry in a menu file was decoration and nothing else, so an item built to look like a kit button did nothing at all when a player clicked it.

  • New join: <kit or arena> drops the player into a fight. A kit name joins that kit, an arena name joins that arena with the kit it is linked to
  • New commands: list runs command lines on click, as the player unless the line says console:. {viewer} and {viewer_uuid} work in them
  • New close: decides whether the menu closes first, on by default for an item that joins a fight
  • Read by every menu: fight.yml, kit_list.yml, kit_editor.yml and statistics.yml



Items that do something


🎯 Joining One Arena by Name

  • New /ffa join <arena> joins that arena with the kit it is linked to, with tab completion over your arenas
  • This is the command to point an NPC, a sign or a command block at when each one should send players to a particular arena. /ffa <kit> goes the other way round, naming the kit and letting the kit find its arena
  • It joins the arena that was named, so several arenas linked to one kit each get their own command
  • Premium arenas are still gated on novaffa.arena.<arena>, and the combat tag still blocks a kit switch mid fight



Commands


🎒 Kits That Came Out Empty

  • A player's saved layout that holds nothing, while the kit itself has contents, is now read as the kit's own layout. An empty layout on disk, which is what an editor that drew nothing leaves behind, could otherwise leave a working kit handing out an empty inventory
  • /ffa kit create says so when it captured nothing, from the console or from an admin standing there empty handed, and names the command to fill it
  • /ffa kit edit <kit> inventory import refuses an empty inventory rather than carrying out an import that would wipe the kit
  • A kit that hands out nothing is reported once in the console, naming the kit, so an empty kit reads as an empty kit rather than as the plugin being broken

📦 Upgrading

Stop the server, drop NovaFFA-2.9.0.jar in place of your old jar, and start it again. The new config, language and menu keys are added to your files on their own, taking config.yml to config-version: 3, the language files to lang-version: 6 and the menu files to menus-version: 3, and everything you had already set in them is kept. The four new messages are translated in all five shipped languages, and the help screen gains its /ffa join <arena> entry.

On a cracked server, install SkinsRestorer if you want player heads in menus to show real skins. Compiled clean against Paper 1.21.1 and Paper 26.2.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.8.0
Any item in any menu can be a player head, the statistics menu takes a border like every other menu, and the lobby button no longer leaves a menu hanging over the player.
All of it is documented here: Borders, Fillers and Heads

🧑 Player Heads Anywhere

Any item in any menu file can be a player head. Set material: player_head, add a skull line, and it works in fight.yml, kit_list.yml and kit_editor.yml as well as the statistics menu, which was the only place a head worked before.

  • skull: viewer is the face of whoever is looking at the menu, so a toolbar button can be the player's own head
  • Heads from minecraft-heads.com and every other head site are read in whichever format the site hands them out: texture: for the long Base64 value, url: for the Minecraft URL, and hash: for the trailing part of that address on its own
  • The prefix can be left off entirely. A uuid, a url, a Base64 value or a bare hash is recognised from its own shape, so a value pasted straight off a head site works exactly as it was copied, the line breaks it was wrapped in included
  • player:SomeName and uuid:<uuid> work as they always did, and a uuid can now be written with or without its dashes
  • Nothing is fetched. The texture address is written onto the item and the client loads it like any other skin, so a menu full of custom heads costs no network call
  • A head that does not resolve is drawn plain rather than failing the item, so one mistyped line never empties a menu
  • New {viewer} and {viewer_uuid} placeholders, the name and uuid of the player the menu is being drawn for, usable in the name and lore of every item in every menu



Every way to write a head, written up in full: greenarrowlol.github.io/NovaFFA/docs/borders-and-fillers#player-heads


🖼 Statistics Menu Borders

  • statistics.yml gains an items.border section, written exactly like the ones in fight.yml, kit_list.yml and kit_editor.yml
  • It was the one menu that read no border at all, so a border added to that file by hand was kept by the updater and then drawn by nothing, which looked like a broken key rather than a missing feature
  • On by default, a black pane frame around the head and the five statistics. enabled: false turns it off
  • Decoration is drawn before the statistics, so a pane sharing a square with a number gives that square up rather than covering it. This is how the kit editor already behaved

🚪 The Lobby Button

Clicking the lobby button in the fight menu now closes the menu as it sends the player, so they land in the lobby looking at the world instead of at a menu they have to close.

  • New items.lobby_button_toolbar.close_menu in fight.yml, on by default. Set it to false for the old behaviour
  • The other toolbar buttons were never affected, since each one opens another menu, which replaces the one on screen

📖 Borders, Fillers and Heads

A new documentation page covers the three separate ways to decorate a menu, items.border for the shipped frame, custom_items for anything you add yourself, and filler for the leftover squares on a part full page, plus every way to write a player head.

  • A table of which menu takes which, how the squares are numbered, every key an item: section reads, and what happens when decoration and real content claim the same square
  • It says plainly that items.border is read by name, so an invented second entry inside items: is kept by the file and drawn by nothing. Extra decoration belongs in custom_items, which every menu reads




📦 Upgrading

Stop the server, drop NovaFFA-2.8.0.jar in place of your old jar, and start it again. The border section and the close_menu key are added to your menu files on their own, taking every menu file to menus-version: 2, and everything you had already set in them is kept.

Compiled clean against Paper 1.21.1 and Paper 26.2.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.7.0
Put a kit on the square you want it on and keep it there, and reload the whole config without stopping the server.

📌 Kit Slots

Kits no longer have to sit wherever creation order put them. Pin one to a square and it stays there.

  • /ffa kit edit <kit> slot <square> pins a kit to one square of the fight menu, and slot auto unpins it again
  • /ffa kit slots opens the fight menu as an editor: same size, same border, same toolbar. Click a kit to pick it up, click a square to put it down, right-click a kit to unpin it, and drop one kit onto another to swap the pair
  • Every change is written to the kit file as you make it, so closing the menu is not a step anyone can forget
  • A pinned kit sits on its square on every page, so it is where players expect it however many kits come after it. Unpinned kits fill in whatever is left, exactly as every kit did before
  • Only squares the menu actually draws kits into are accepted. Tab completion lists the free ones, and anything else is turned down with a message rather than quietly doing nothing
  • A kit pinned to a square that a later menu edit hid behind a border flows back in with the rest instead of vanishing
  • /ffa kit info <kit> shows which square the kit is on. Kit files gain menu_slot, with -1 for an unpinned kit, so existing kits read as unpinned

🔄 Reload Without a Restart

/ffa reload re-reads config.yml, the language file and every menu file, so a run of small menu edits is no longer a run of restarts. It needs novaffa.admin, like every other admin command.

  • Kits, arenas, player layouts and player statistics are deliberately left alone, since they hold live state that a player standing in an arena is in the middle of
  • A combat timer already running survives the reload, so nobody gets a free way out of a fight, unless the reload is what switched combat tagging off
  • Command aliases still need a restart. Paper registers commands before a plugin is enabled and cannot be told a new name until the server starts

🔧 Fixes

  • A potion or tipped arrow icon shows the kit's name again. Items that work their own name out from a component ignore the item name entirely, so a splash potion kit button read "Splash Potion of Healing" whatever the kit was called
  • kit_button.use_item_amount_to_display_playing was capped at what the icon stacks to in game, so a sword or an axe could never show more than one. The count now shows on any icon, up to 99, so two axes or five crystals read at a glance
  • The help footer could throw on one build line. It was built through a method that erases differently between Adventure 4 and Adventure 5, so a jar built on one line failed drawing a help page on the other. Both builds are byte for byte identical again

📦 Upgrading

Stop the server, drop NovaFFA-2.7.0.jar in place of your old jar, and start it again. The new messages are added to your language file on their own, taking it to lang-version: 5, and your kits keep filling the menu in the order they were made until you pin one.

Compiled clean against Paper 1.21.1 and Paper 26.2.


Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.3
NovaFFA v2.6.0
Any item can be a kit icon now, and creating a kit is one command with your loadout already on.

🖼 Kit Icons From Your Hand

A kit icon no longer has to be a plain material, so a kit that fights with instant health splash potions can finally show one on its menu button.

  • /ffa kit edit <kit> icon hand takes the item in your main hand and saves it whole. A potion keeps its effect, and a dyed, enchanted or custom model item keeps whatever makes it look the way it does
  • A renamed item drops its own name on the way in, so the menu button still shows the kit's display name
  • Running it empty-handed tells you to hold the item first
  • /ffa kit edit <kit> icon <icon> is unchanged for a plain material
  • The fight menu and the kit layout editor both draw the full item. A material line in the menu file still overrides every kit's icon, exactly as before
  • Kit files keep their readable icon line. The full item is written beside it as icon_item only when the material on its own would lose something, so existing kits are left alone
  • For developers: Kit#icon() still returns the Material, and Kit#iconItem() returns the full item

🎒 Kits Built Straight From Your Inventory

Building a kit is one step. Set the loadout up in your own inventory, then create the kit, and it is captured on the spot, armour and off-hand included.

  • /ffa kit create <name> saves the creator's complete current inventory as the new kit's default layout
  • A kit created from the console still starts empty, since there is no player inventory to capture
  • The update command is easier to find: /ffa kit edit <kit> inventory import. The old /ffa kit edit <kit> import contents is still accepted, so command blocks and habits keep working

📦 Upgrading

Stop the server, drop NovaFFA-2.6.0.jar in place of your old jar, and start it again. The new message is added to your language file on its own, taking it to lang-version: 4, and no kits, arenas, layouts or player data are touched.

One thing to redo by hand: any kit whose icon should be a potion or another item that a bare material cannot express needs its icon set once with icon hand. Compiled clean against Paper 1.21.1 and Paper 26.2.


📋 Version Breakdown

Version Focus
2.6.0 Any item can be a kit icon, taken from your hand and saved whole, with the fight menu and layout editor drawing it in full.
2.5.0 Creating a kit captures your current inventory as its default layout, and the import command was renamed while keeping the old form.

Need help or found a bug? Join the Discord.
Read the documentation | Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.2
NovaFFA v2.4.0
Leaderboard placeholders, so a top kills or top deaths board needs nothing but NovaFFA and PlaceholderAPI.

🏆 Top Kills and Top Deaths

Building a leaderboard used to mean pointing a third party plugin at NovaFFA's stats. Now the ranks are placeholders of their own, for the top ten in each:

%ffa_statistics_top_kills_<1-10>%        the kill count at that rank
%ffa_statistics_top_kills_name_<1-10>%   the player at that rank
%ffa_statistics_top_deaths_<1-10>%       the death count at that rank
%ffa_statistics_top_deaths_name_<1-10>%  the player at that rank
  • A rank nobody has reached yet reads cleanly, 0 for a count and - for a name, rather than the placeholder failing to resolve and leaving raw text on your board
  • Cheap to poll. The ranking is held in memory and refreshed once a minute rather than worked out on every request, so a scoreboard or hologram reading it several times a second costs nothing extra

📦 Upgrading

Stop the server, replace the old jar in plugins/ with NovaFFA-2.4.0.jar, and start it again. Nothing to reset, migrate or set up again, and no config or language changes at all.


🧪 Compatibility

Paper 1.21.1 through 1.21.11 on Java 21, and Paper 26.1 through 26.2 on Java 25.


Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.2
NovaFFA v2.3.0
Combat tagging held back the lobby command but not the lobby itself. Now a tagged player cannot walk or fly in either.

🚧 Lobby Entry Is Held Back Too

A tagged player could still run or fly straight into the lobby, since the timer only ever blocked the /lobby command. The lobby corners themselves are now held back as well.

  • Walking or flying, both are stopped the moment the move would put a tagged player inside the lobby
  • Movement anywhere else is untouched. Nothing happens until they actually try to cross in
  • They are told on the action bar, same as the countdown, so it never floods chat
  • On by default, as combat_tag.block.lobby_region, alongside the existing combat_tag.block.lobby that holds back the command

📦 Upgrading

Stop the server, replace the old jar in plugins/ with NovaFFA-2.3.0.jar, and start it again. Your config.yml and language file pick up the new key and its message on their own, and everything you already set stays put.


🧪 Compatibility

Paper 1.21.1 through 1.21.11 on Java 21, and Paper 26.1 through 26.2 on Java 25.


Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.2
NovaFFA v2.2.0
NovaFFA now runs on 26.1 and 26.2 as well as 1.21.1 through 1.21.11, from the same jar.

🧱 Both Version Lines, One Jar

Mojang changed the version scheme in 2026, counting the year and then the drop within it, so 1.21.11 is the last of the old line and 26.1 is the one after it. NovaFFA runs on both.

  • 1.21.1 through 1.21.11, and 26.1 through 26.2
  • One jar for both, there is no separate download to pick
  • Nothing changes on a 1.21.x server. No config, kit, arena, layout or player file changes shape, and nothing needs migrating



Without this build the plugin would not have loaded on 26.x at all, so if you are moving up, this is the one you need.


📝 Before You Move to 26.x

FastAsyncWorldEdit is still required, and NovaFFA disables itself without it. FastAsyncWorldEdit publishes its own 26.x builds, so grab the one matching your server rather than the 1.21.x build.

26.x needs Java 25. That is the server's requirement rather than NovaFFA's. Staying on 1.21.x? Java 21 is still fine.


📦 Upgrading

Stop the server, replace the old jar in plugins/ with NovaFFA-2.2.0.jar, and start it again. Nothing to reset, migrate or set up again.

Moving to 26.1 or 26.2 as well? Update FastAsyncWorldEdit to its matching build and make sure your server is on Java 25 first.


🧪 Compatibility

Paper 1.21.1 through 1.21.11 on Java 21, and Paper 26.1 through 26.2 on Java 25.


Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.2
NovaFFA v2.1.0
Getting hit now holds you in the fight, and a kit saved in the layout editor no longer comes back empty.

⚔️ Combat Tag

Being hit by another player starts a timer, and every fresh hit pushes it back out to full. While it runs, the player is held in the fight. Landing a kill clears their own timer straight away, since they have finished what they were in, and dying clears it too.

  • Five seconds by default, set to whatever you like with combat_tag.time
  • A countdown ticks away above the hotbar while the timer runs
  • Escape commands are held back. Put whatever your server uses into combat_tag.block.commands: /spawn, /home, /tpa and the rest
  • /leaveffa, /lobby and switching kit are held back too, each on its own switch
  • Logging out mid fight kills the player where they stood, credits the kill to whoever they were fighting, and tells the arena about it
  • Only players inside an arena are ever tagged, so a fight elsewhere on your server is left alone



The whole thing switches off with combat_tag.enabled: false.

blocked_commands.in_arena is unchanged and still blocks a command for as long as a player is in an arena. The combat tag only blocks while they are actually fighting, which is usually the one you want.


⌨️ Command Aliases Are Yours

Every alias is read from commands.aliases in config.yml, one list per command. Rename them, add your own, or leave a list empty to give a command no aliases at all.

/spawn ships as an alias of /lobby, because it is the word most players reach for.

If your server already has a /spawn, from EssentialsX or a hub plugin, take it out of commands.aliases.lobby. Two plugins claiming the same command means one wins it and the other is only reachable as novaffa:spawn.


🛠 The Kit Editor Keeps Your Work

A kit set up and saved in the layout editor could come back completely empty, and the editor kept reverting to empty on every later visit. This was carried over from ContinuumFFA and survived the 2.0.0 rebuild. It is fixed.

  • A kit or layout that fails to read back is now reported in the console, instead of being dropped silently with nothing to point at why
  • Clearing player layouts works properly after importing contents into a kit, so nobody is left on their old arrangement

🔗 Placeholders

Two new ones for your scoreboard or tab list:

%ffa_combat_tagged%   true while the timer is running
%ffa_combat_time%     seconds left, 0 when it is not

🔌 For Developers

FFACombatTagEvent fires before a player is tagged. Cancel it and they walk away free.


📦 Upgrading

Stop the server, replace the old jar in plugins/ with NovaFFA-2.1.0.jar, and start it again. Your config.yml and language files pick up the new keys on their own, and your kits, arenas and layouts are untouched.

Two things to do afterwards: put your server's own escape commands into combat_tag.block.commands, and check commands.aliases.lobby if another plugin already owns /spawn.


📋 Version Breakdown

Version Focus
2.1.0 Combat tagging with a countdown, blocked escape commands and a logout penalty, plus configurable command aliases and two new placeholders.
2.0.1 Kits and layouts saved in the editor no longer come back empty, and a file that cannot be read is reported rather than dropped in silence.

🧪 Compatibility

Paper 1.21.1 through 1.21.11, Java 21.


Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required

Compatible with Minecraft 1.21 - 26.2
NovaFFA v2.0.0
ContinuumFFA is now NovaFFA, part of the Arrow Plugin Series. Every feature you had is still here, rebuilt on the current Paper API and shipping in five languages.

⚠️ Read Before You Update

Nothing carries over from the old folder. NovaFFA generates a fresh plugins/NovaFFA/ on first start and leaves your old ContinuumFFA folder completely alone, so nothing is deleted. Arenas, kits and player stats need setting up again.

The old permission nodes stop working. Update your permission plugin before you restart:

Old node New node
ffa.admin novaffa.admin
continuum.ffa.commands.ffa novaffa.commands.ffa
continuum.ffa.openFFAMenu novaffa.openFFAMenu
continuum.ffa.arena.<name> novaffa.arena.<name>



/ffakit and /ffaarena no longer exist. If you have command blocks, macros or permission entries pointing at them, point those at /ffa kit and /ffa arena instead.


📋 What Changed For You

  Before Now
Main command /ffa /novaffa, with /ffa still working
Admin commands /ffakit, /ffaarena /ffa kit, /ffa arena
Help One long wall of chat Paginated, with clickable arrows
Permissions ffa. and continuum.ffa. All under novaffa.
Minecraft 1.21 and maybe upto 1.21.5? 1.21.1 through 1.21.11
Messages One messages.yml A lang/ folder, five languages
Config updates None Automatic, your settings kept

🧱 Runs on Modern Minecraft Again

The plugin had not been updated in about a year. It now targets Paper 1.21.1 up to 1.21.11 and uses the current API throughout, so it keeps working as 1.21 moves on. Both ends of that range were started on a clean server with FastAsyncWorldEdit and PlaceholderAPI installed.


⌨️ One Command Instead of Three

Everything an admin does now lives under /ffa:

/ffa                      opens the fight menu
/ffa <kit>                joins that kit's arena
/ffa help                 the home help screen
/ffa kit ...              everything to do with kits
/ffa arena ...            everything to do with arenas

Every command is a proper Brigadier command now, so you get argument types, live suggestions for kit and arena names, and the client greys out anything invalid before you press enter.


📖 Help That Does Not Flood Your Chat

Help is paginated. /ffa help shows the home screen and points you at /ffa kit and /ffa arena. The Back and Next arrows are clickable, and clicking any command line drops it straight into your chat box ready to fill in. Jump to a page directly with /ffa arena help 2.


🎒 Your Kits Keep Their Custom Items

Kits and player layouts are stored using Paper's own item format now. Custom items, data components and anything a plugin like ItemsAdder or Nexo put on a stack all survive a restart intact. The old storage flattened them.


🌍 Five Languages

en_US, fr_FR, es_ES, zh_CN and hi_IN all ship with the plugin and are kept up to date automatically. Pick one with language: in config.yml, or drop your own file into the lang/ folder and name it there.


🖥 Menus You Can Actually Configure

  • Every key has a plain comment above it explaining what it does
  • Kit buttons honour the whole item spec, so glow, flags, amount, custom_model_data and enchantments all work. Add a material line to override the kit's own icon
  • Any item can play a sound when it is clicked, with volume and pitch
  • A filler item fills the leftover squares on a part full page
  • A no_kits item shows instead of an empty menu on a fresh install
  • Anything you add under custom_items survives every future update

🎨 Colour Syntax

Colours are written differently now, so any messages you had edited will need their tags updating:

# Plain colours and formatting
'&aGreen text, &land bold'

# Any hex colour
'&#00ccffA custom blue'

# Gradients and rainbows
'<GRADIENT:00ccff>fades across</GRADIENT:7fe5ff>'
'<RAINBOW1>rainbow text</RAINBOW>'

Placeholders the plugin fills in use curly brackets, so {kit}, {arena}, {display_name} and so on. Angle brackets inside the help text are command usage, not placeholders.


🛠 Fixed

All of these were broken in ContinuumFFA 1.1.81:

  • Admin actions now confirm themselves. Deleting an arena, teleporting to one, toggling its permission, regenerating it, and starting or stopping the timer all sent nothing back before
  • /ffa kit info and /ffa arena info print their output
  • Title messages appear instead of never showing at all
  • Joining a fight can no longer corrupt an inventory. Health, hunger and inventory were being touched from a background thread
  • The layout editor saves slots in order, so a saved kit no longer comes back scrambled
  • Kill to death rate reads properly for a player with no deaths, instead of showing Infinity
  • A kit icon written in lower case loads instead of failing
  • The public API runs registered listeners as it always claimed to
  • The premium option on arenas is in the help text
  • A broken FastAsyncWorldEdit install is reported clearly. It was previously only checked for being installed, not for having actually started, so a failed copy left the plugin half working with no explanation

📜 Commands

Command Aliases What it does
/novaffa /ffa Opens the fight menu
/ffa <kit>   Joins the arena linked to that kit
/ffa help [page]   The home help screen
/ffa kit ...   Creates and edits kits, clears player layouts
/ffa arena ...   Creates and edits arenas, drives regeneration
/leaveffa /leave, /exit, /ffaleave, /exitffa, /ffaexit Leaves the arena
/lobby /ffalobby Goes to the FFA lobby
/statistics /stats Opens the statistics menu
/editkits /kiteditor, /kitlayouts, /layouts Opens the kit layout editor



/ffa leave, /ffa lobby, /ffa stats and /ffa editkits do the same as their standalone versions.


🔐 Permissions

Node Default Covers
novaffa.admin op /ffa kit, /ffa arena, and the admin arguments on /lobby
novaffa.commands.ffa true /novaffa and /ffa
novaffa.openFFAMenu true Opening the fight menu
novaffa.arena.<arena> false Joining an arena with premium turned on

🔗 Placeholders

The identifier is still ffa, so anything you already reference keeps working.

%ffa_statistics_kills%      %ffa_statistics_deaths%
%ffa_statistics_kdr%        %ffa_statistics_current_streak%
%ffa_statistics_highest_streak%
%ffa_arena_name%            %ffa_kit_name%
%ffa_kit_display%           %ffa_is_playing%
%ffa_players_<arena>%

📦 Upgrading

  1. Stop your server
  2. Delete the old ContinuumFFA.jar. Leave the ContinuumFFA folder alone if you want to keep it for reference, NovaFFA will not touch it
  3. Drop in NovaFFA-2.0.0.jar
  4. Update your permission plugin to the novaffa. nodes
  5. Start the server, then rebuild your arenas and kits



FastAsyncWorldEdit is required, it is what rebuilds arenas. PlaceholderAPI is optional. If FastAsyncWorldEdit is missing or fails to start, NovaFFA now tells you clearly in the console instead of half working.


Need help or found a bug? Join the Discord.
Join the Discord

Enjoying the plugin? A ⭐ review goes a long way!
Download 0
No ratings yet
Purchase required
Product Info
Statistics
136

Views

0

Purchases

0

Downloads

800.78 KB

File size

22.08.2026

Published

03.10.2026

Updated

Info
Supported software
Supported Versions
1.21 - 26.3
Product Image
NovaFFA | Free For All Plugin
NovaFFA | Free For All Plugin