Guns, Call of Duty style game modes and a Zombies mode for Minecraft 26.3, as a datapack and a resource pack. No mods.
It is a rewrite of MGS 4.2 by TheBradqq, whose models, textures and sounds it mostly reuses. The rest is new.

MCGunsSystem_datapack_with_libs.zip in the world's datapacks folder.
It bundles Bookshelf, Smithed Actionbar and the other libraries it needs.MCGunsSystem_resource_pack_with_libs.zip as a resource pack./function mgs:config to open the admin menu, and start a game from Game Setup.| Command | For | What it does |
|---|---|---|
/function mgs:config | operators | Admin menu: start a game, open the map editor, server options |
/function mgs:_give_all | operators | Gives every item of the pack |
/loot give @s loot mgs:i/<item> | operators | Gives one item, for example mgs:i/ak47 |
/trigger mgs.player.config set 1 | everyone | Player options, stats, leaderboards and Zombies knife camos. The Quick Actions key opens the same menu |
/function mgs:zombies/recover | operators | Unsticks a Zombies round that stopped progressing |
About thirty guns, listed here (pistols, SMGs, rifles, LMGs, shotguns, snipers, the RPG-7 and the Ray Gun), plus frag, semtex, smoke and flash grenades, and a knife with three Zombies upgrades.
Q) to switch.https://github.com/user-attachments/assets/a8094f23-320a-4708-8b7c-132a2f3dc7c4
Six game modes: Free For All, Team Deathmatch, Domination, Hardpoint, Search and Destroy and Demolition.
Players pick a class before each life. A few balanced classes ship with the pack, and a pick-10 editor builds custom ones with perks. Custom classes can be made public, browsed, filtered, liked and set as default. Missions use the same classes.
Kills and wins give XP towards a Multiplayer level, and challenges unlock as advancements.
https://github.com/user-attachments/assets/e6f96ed9-383e-48d2-8c2b-bb47300bba42
Co-op PvE. Every enemy placed on the map spawns at the start, a compass points at the remaining ones, and the mission ends when none is left. Leaderboards keep the best time per map.
Round-based survival in the style of Black Ops. One map ships with the pack, Kino der Toten.
https://github.com/user-attachments/assets/69d14336-9af0-47ef-a5da-538b0f668787
One Multiplayer match, one Missions run and one Zombies run can play on the same server at the same time without seeing each other. Two games of the same mode cannot.
Place a repeat command block, set it to Always Active, and make it run one of these:
function mgs:leaderboard/level_zb
function mgs:leaderboard/level_mp
function mgs:leaderboard/zb_map {map:"kino_der_toten",players:"all"}
function mgs:leaderboard/mi_map {map:"<mission id>"}
The board floats above the block while a player is within 24 blocks.
Untick the block's Track Output, or run /gamerule command_block_output false, or it fills the operators' chat.
Maps of all three modes are made in game. Open it from /function mgs:config, Game Setup, then pick a mode and a map, or create one.
The editor gives spawn eggs, one per kind of element. Place them where the element goes:
| Mode | Elements |
|---|---|
| Multiplayer | red, blue and shared spawns, objective points for Search and Destroy, Domination and Hardpoint |
| Missions | player spawns, enemies (with the function that sets each one up) |
| Zombies | player, zombie and special spawns, wallbuys, doors, traps, perk machines, Mystery Box spots, the power switch |
| All | base coordinates, boundary corners, out-of-bounds points |
The Configure egg lists an element's fields in chat: a door's price and the doors it opens with, a trap's duration and cooldown, a perk machine's perk and price. Spawns and Mystery Box spots also get a form, and a spawn's activation box shows as particles. The Destroy egg removes the nearest element, and its chat message has a Revert button.
Place the base coordinates first: every position is saved relative to them, so a map works in any world once its base is placed.
https://github.com/user-attachments/assets/7b429b68-c476-4b08-98ce-0fa53cb72608

Save the map in the editor.
Print it with /data get storage mgs:maps <mode>[{id:"<id>"}], where <mode> is multiplayer, zombies or missions.
Paste the compound in the generator, next to the existing maps, behind a check on its id:
execute unless data storage mgs:maps multiplayer[{id:"hijacked"}] run data modify storage mgs:maps multiplayer append value {...}
| Mode | File | Registered by | Runs |
|---|---|---|---|
| Multiplayer | src/functional/multiplayer/maps.py | #mgs:maps/register | on every load |
| Zombies | src/functional/zombies/maps.py | #mgs:zombies/register_maps | at every Zombies game start |
| Missions | src/functional/missions/maps.py | none yet |
A world that already has a map with that id keeps its own copy, so edits made in game survive a reload.
To push a changed built-in map to a world, remove the stored one first, for example /data remove storage mgs:maps multiplayer[{id:"hijacked"}], then /reload.
Another datapack can ship maps the same way, from its own function in #mgs:maps/register or #mgs:zombies/register_maps.
A map runs its own commands from the function tags #mgs:maps/<script>_script, where <script> is start, tick, join, leave, respawn or power (Zombies, when the power turns on). They run at the map's base coordinates.
Every map adds to the same tags, so each script first checks that its game is running on its own map. maps/multiplayer/hijacked/calls/ and maps/zombies/kino_der_toten/calls/ show how.
Needs uv 0.9 or newer, which fetches Python 3.14.
uv sync
uv run stewbeet
The datapack, the resource pack and the four zips land in build/, which is tracked in git and never edited by hand.
build_copy_destinations in beet.yml copies them to the author's Windows folders. Elsewhere StewBeet prints a warning and goes on.
Checks, all run with uv run python scripts/verify.py <command>:
| Command | What it does |
|---|---|
baseline | Saves build/ to compare against |
check [--diff] | Rebuilds and lists what changed since the baseline, ignoring comments and blank lines |
validate | Parses every function with mecha and lists missing and unreachable resources |
server --java <absolute path to Java 25> | Loads and reloads the pack in a real 26.3 server |
lint | ruff, pyright strict, complexipy |
After changing XP awards in src/functional/progression/awards.py or a challenge threshold, run /function mgs:v<version>/progression/recompute_all in game (for example mgs:v5.3.0/...). It rebuilds every online player's levels and challenges from their banked XP.
src/setup_definitions.py registers every item from the stats in src/config and the builders in src/database.src/link.py writes every function, one package of src/functional/ per system: weapon, core (bounds, maps, spawning, menus shared by the modes), progression, stats, multiplayer, missions, zombies, map_editor, shaders.assets/ holds textures, sounds and shaders. specs/ holds one folder per planned feature, and its README lists their state.