Description
arena_lib is a library for Luanti working as a core for any arena mini-game you have in mind.
It comes with an arena manager, an editor and a custom entrance system (signs by default). Entrances create a virtual bridge between the normal game world and your minigame arenas.
With arena_lib, you don't have to do the boring job and you can focus exclusively on your minigame(s) :*
Config
- Install it as any other mod
- Launch the world at least once with arena_lib enabled and then check
worlds/nameofyourworld/arena_lib to customise it
- (modders only) First time? Check out the wiki to create your first minigame. Otherwise, dive into the full documentation
Known conflicts
Beds or any other mod overriding the default respawn system
SkinsDB or any other mod applying a 3D model onto the player, if teams_color_overlay is used
Weather or any other mod changing players skybox at runtime (custom celestial vaults will be overridden)
Coming next
Have a look at the project milestones
Releases
2026-05-11 09:26 UTC
7.12.0 - Che si dice?
What's new
- Add minigame chat ingredient
can_interact_with_spectators
- Celestial vault: add deterministic stars
- Celestial vault: add fog colour
- Editor: put a fog into a section of its own
- Use a different sound for eliminations and people leaving
- On quit/on eliminate: add table
p_in_game_data to obtain more player in-game info
- Spectate mode: prevent people from leaving during the first second (avoid inadvertent leaving)
- Change spectators max HP as well when entering, if
hp_max is declared
- Set spectators max HP the same as the target they've just switched to
- Fake players: support joining ongoing matches
- Increase minimum required LT version 5.9 -> 5.10
/arenas help: make arguments stand out more
- Translations: .tr -> .po format
- New translations:
- Updated translations:
- Esperanto (Notxor)
- French (Monapp, Hypériōn)
- German (fnetX)
- Italian
- Polish (PlackiZZupa)
- Portuguese - BR (LuizFcc)
- Russian (SkyBuilder1717)
- Spanish (gallegonovato, Gabri06)
- Turkish (birdlover32767)
- Ukrainian (SomeTr)
Fixes
- CRASHFIX: breaking/placing nodes with
can_build = true made the game crash if no area was declared
- CRASHFIX:
teamID in get_random_spawner() wasn't really optional in case of teams
- CRASHFIX: spectators in parties weren't correctly handled when their party leader entered a match by joining a queue
- CRASHFIX, regression: party members ended up stuck when they were spectating a match and party leader entered another one to play
- Bugfix: queue callbacks were run only for the party leader
- Bugfix: when a player in a party tries to enter the game the party leader is in, only run checks on the former (and not on the whole party)
- Bugfix/"breaking": dehardcode the impossibility of moving items when
disable_inventory = true and players see it through a detached inventory
- Bugfix, 7.6 regression:
spectate_mode = false didn't really disable spectate mode
2026-01-27 16:59 UTC
7.11.0 - Si inizia a regionare
What's new
- Add
on_region_trespass(..) minigame callback
- By default, automatically eliminate players going outside an arena region
can_build: don't allow players to build outside the region of an arena
- Always allow to build inside ongoing arenas when
can_build is true (override other protection mods checks)
- Automatically sort regions when declaring/updating it
- Barriers can be placed and broken also by people having the
creative privilege
- Improve draining of large amounts of liquid nodes (Giov4)
- Don't backup uninitialised maps (Giov4)
- Breaking: restore the old inventory also when hub is present (don't treat it as an exception)
- Updated translations:
- Chinese - Simplified (y5nw)
- German (i35-xd, Wuzzy)
- Italian
- Portuguese - BR (IamnotMinetest)
- Turkish (birdlover32767)
- Ukrainian (FromKaniv)
Fixes
- CRASHFIX: prevent set_list crash on empty hand inventory (Giov4)
- Bugfix: dummies for spectable areas weren't removed in case of crash
- Bugfix: prevent people in arenas from rejoining an arena as a spectator
2025-07-27 15:22 UTC
7.10.0 - "Perzone farze!!1"
What's new
- Experimental: add fake players and spectators support
- Map reset: add liquids support (giov4)
- Way faster map reset (giov4)
- Map reset system now supports core.bulk_swap_node (giov4)
- Add minigames
description ingredient
- Specify official Luanti download link in the error message when LT version is too old to play a minigame
- Extend protocol minimum version check to spectators as well
- If an ongoing game is in progress with some party members already in it, add the entering party member in their team only if the amount of players in teams is the same
- Horizontally flipped
arenalib_tool_players_change.png to make it more intuitive (giov4)
Fixes
- CRASHFIX: when someone destroyed a node in a resettable map and the server immediately shutdown, that node went unregistered and the server rebooted (giov4)
- CRASHFIX: games with
regenerate_map = true would crash when playing a match if the server hadn't been restarted at least once after the arena was enabled (giov4)
- CRASHFIX: when joining a match as a party member, only add the party members who are not inside the arena
- Bugfix: drops were being erased from maps whenever an area was specified, independently of the
regenerate_map ingredient (giov4)
- Bugfix: drops didn't reset with
regenerate_maps = true when the entities deactivated prematurely (giov4)
- Bugfix (7.8 regression): deprecated
show_minimap ingredient wasn't read if there were HUD flags declared
- Bugfix: play elimination sound also for spectators
- Bugfix: party leader couldn't rejoin a match if they had left
2025-06-08 19:00 UTC
7.9.0 - "Altolà i fantasmi!"
What's new
- Add
camera_mode ingredient
- Spectate: don't compenetrate inside nodes
- Delete in-game attachments if
keep_attachments = false when leaving a match
- At the end of a match, tell players and spectators they can communicate with each other only if spectate mode is enabled
- Sign UI: small layout tweaks
- Updated translations:
- French (milimarg, Monapp, crocsg)
- German (Wuzzy, Dirk)
- Italian
- Polish (Szkodnix)
- Russian (nekoedges, vintprox)
Fixes
- Bugfix: correctly apply custom gain and pitch to BGM
- Bugfix: disbanding the party whilst in queue broke the counter
- Bugfix: players in party who left a match to then rejoin it are not blocked anymore
2025-01-26 19:42 UTC
7.8.0 - "Oi vita, oi vita mia"
What's new
- Resurrect dead players leaving an arena
- Provide default physics if not specified
- Add
keep_physics ingredient
- Add
hp_max ingredient
- Translations updated: French (Monapp)
Fixes
- CRASHFIX: correctly check if there is still an arena going on when interacting with the rejoin formspec
- Fix confusing deprecation messages when
show_minimap was present
All releases
Threads
New thread
Information
Provides
arena_lib
Dependencies
- Required
-
audio_lib
lib_chatcmdbuilder
signs_lib
- Optional
-
parties
Information
- Type
- Mod
- Technical Name
- arena_lib
- Languages
-
English, Deutsch, Esperanto, Español, Français, Magyar, Italiano, Polski, Português do Brasil, Русский, Türkçe, Українська, 中文 (简体)
- License
-
AGPL-3.0-or-later
- Maintenance State
- Actively Developed
- Added
- 2020-04-14 14:04 UTC
- Maintainers
-
Zughy
Used By
Helps make a diverse array of minigames... almost any minigame you want.
Arena_lib is very useful for making minigames (I have made/helped make 5 minigames so far) It provides well-documented callbacks to run and handle your minigame, as well as nice extras such as spectate mode, an arena editor GUI, background music handler, and more.
It is based on the idea of punching a sign to enter a queue for the minigame. The sign displays information about the arena (number of players, arena status, etc) and rightclicking it gives more into and a menu to enter spectate.
Arenas are physically just a collection of positions that the players will be teleported to when the game starts. its up to the arena maker to make an inescapable arena, and make the arena have the features that it should for the minigame.
There are per-arena variables (properties) that can be set in the arena editor. That can let you do things like clear the board, or reset it, (by storing positions) or set arena specific variables to initialize that arena.
the arena editor is also expandable per minigame mod.
Did I mention, the documentation is great?
Great lib!
It saved me the immense effort of having to create an arena management system from scratch :D
Good Mod!
I used this library for my entry to the Minetest Game Jam 2023, which I sadly didn't finish in time.
Its really nice honestly. APIs are powerful both for minigames and external stuff (see the stent mod MisterE made for my entry!), arena editor is really easy to use and can be customised by your minigames. Documentation is really good too.
I will definitly use it next time 🙂
What I think could be improved:
Arena properties doesn't handle real vectors (
vectors.new). When you define them with code it works but it doesn't from the arena settings editor; the property is handeled as a table with displayed keys order not matching the xyz order and converted as a regular table instead. There is thereturn (expression)syntax but it's run in an empty global env and would look ugly anyways. I think the mod should check if the initial setting in arena definition is a vector withvector.checkand have a special GUI to edit those in arena editor settings.I would also love having LuaLS typing annotations (or headers) since it greatly improve developer experience, but it would require this Minetest issue anyways.
Quite powerful
I haven't worked w/ arena_lib a lot so far but from what I've learned by going through the documentation and fixing some bugs of existing minigames, I think it seems quite powerful. What is especially interesting is the editor mode where you can edit arenas with special "items" in your hotbar which act like some kind of "mini menu". It is unusual but I understood it somehow.
Nothing of the mod's design seems to disturb me so far, coding with it is fairly reasonable with no weird surprises.
A minor downside are the signs because they introduce non-translatable text. Signs are hardcoded in arena_lib and can't be removed but I've read it is possible to add alternative entry methods (not tested so far).
The only major criticism I currently have is that there is no player or admin manual, only a programmer's manual because not everything is obvious from the player/admin perspective (although it is mostly intuitive already). For example, I don't know how many players are aware that you can rightclick the signs to enter spectator mode. And it also took me quite some time to figure out how to set up my own test world with arena minigames because the documentation doesn't say.
Arena_lib has been successfully supporting the A.E.S. minigame server which is I guess evidence enough for it's power. Overall, I can give it a clear recommend.
Great Mod!
I like this mod. Now everybody can make a minigame. At my old server(which i never published) i wanted make a mesewars minigame, but without this libary that would be maybe impossile. Thankyou Zughy! Edit: Maybe you could add minigames type: tempoary: minigames which use round system like block league alwaysrunning: minigames which you can join every time you like and quit like skyblock.
Oh and please add that you can quit arenas which are singleplayer, thankyou.
Very powerful
Now that I'm learning some mod developing I'm basically looking at all the APIs for the first time and wow, this seems very cool! I don't know if I will make a minigame one day but in that case I will definitively use this. It also has a wiki with a tutorial I noticed, so it should be super easy to start using this. I don't know if some other api has a tutorial too but I haven't seen it in that case, so this seems like great consideration for other modders!
Really easy to use and powerful
Following the well written tutorial in the wiki I was able to prototype some ideas I had, in just 50 lines of code I created my minigame, registered all the custom items with their relative actions and then I created the arenas with the built in editor arena_lib provides.
If you need to make a minigame this is the library for you
I' ve used this library since the earliest versions and it has only improved since then. To date it is in my opinion the best way to create minigames on minetests, fast, easy to use, well documented, and constantly evolving.
Great lib! Very helpful
I REALLY recommend this lib because it helps and give a boost about the creation of a minigame in Minetest. There is also a "sampleminigame" Mod that you can use to try the lib and it could be a usefull template to start to create your first minigame!
I also would like to tell that there is a huge and detailed documentation that helps and guide you while coding the mod (in my case, all my questions found the solutions inside there)
I really appreciated it 👍!