Repository navigation
Teams Editor
The editor defines teams and spawn classes for Teams gameplay and the NPC Vehicles & Soldiers model picker. It works in singleplayer, LAN and dedicated servers on Forge 1.20.1.
Open /teams editor, or bind Open Teams & Classes Editor in Minecraft Controls. Access requires operator level 2, ownership of the integrated singleplayer/LAN server, or the explicit Forge permission flansmodultimate.teams.editor. The permission defaults to false; a server permission handler can grant it. Every command and GUI edit is checked on the server.
The server owns these files, shared across every world in the same installation:
config/flansmodultimate/teams-editor/teams.json
config/flansmodultimate/teams-editor/classes.json
Clients receive the definitions when joining and after saves. Remote clients do not need these JSON files; their local editor configuration is ignored. Clients still need the mods/content packs and resource packs containing referenced items, models and textures. Skin image uploading is not included.
Pack definitions remain intact. Saved fields override their defaults; fields omitted from JSON continue following the installed pack. Custom entries have IDs such as custom:rifleman. Original entries use a stable pack/<pack identity>/<original shortname> key instead of a load-order collision alias. Packaged packs use their declared pack ID; external packs use their name, so renaming an external pack requires updating the saved keys.
Save writes a recoverable paired transaction and retains .bak copies. Do not manually edit pending.json or .tmp files. An interrupted transaction completes on the next load. Invalid input keeps the running definitions intact; invalid startup files lock editing until corrected and reloaded.
Manual edits require /teams editor reload, or a server restart. Saving a GUI draft after another edit/reload is rejected. Saving after manual file changes is also rejected until reload.
Maps, rotations, round state, scores and progression remain world-specific.
Choose Teams or Classes, search by name or ID, and optionally filter by pack. Entries show Original, Modified, Custom, Disabled or Unavailable. New and Duplicate create custom definitions. Save commits the draft; Back asks before discarding changes. Restore removes an override (or removes a custom definition); Delete disables a pack entry or deletes a custom one.
Team pages edit names, RGB sliders/hex colour, text colour, uniforms, class membership/order (the list shows only assigned classes; use Add class to open a separate picker, Remove from team to remove membership without deleting the class, and select a row and Move up/Move down to reorder; a yellow outline marks the selected class), round generator eligibility, victory/defeat sounds and flag texture. The class page edits its name, skin variants, equipment, unlock rank, prestige and class limits.
The flag texture field on the Advanced tab takes either a texture location such as flansmod:textures/skins/flag_red.png or an http:// or https:// link to a PNG. Clear it for a plain flag in the team colour; Restore gives a pack team back its own flag. Each client downloads a linked image itself when the flag is first drawn, so the image appears after a moment. Images must be PNGs of at most 2 MiB and 1024 pixels a side. Until an image has loaded, or if it fails to load, that team flies a plain flag in its colour. A preview appears below the field once you leave it. Players can turn off Team Flags from Web Links in the client options. The site hosting the image sees the IP address of each client that downloads it.
Equipment slots are templates. Dragging from My inventory copies the item, including its custom data. The item catalogue provides registered items without granting them to the player. Shift-click an inventory item to copy it to an available template slot (or its armour slot). Drag between template slots, right-click to clear and use the mouse wheel to change count. Copy equipment captures the player's equipped items and, for classes, carried inventory. The inventory picker is available at smaller GUI sizes where both inventories cannot fit side by side.
Class armour slots distinguish T (inherit the team's piece) and × (explicitly empty). Right-click an empty class armour slot to alternate between them. Class pieces override the team uniform. Class kits preserve hotbar/inventory positions and the offhand slot. Untouched legacy classes keep their original ordered insertion behavior.
The skin picker browses installed textures/skins resources and skins already declared by classes. It also accepts a resource ID. Invalid skin layouts cannot be selected; legacy 64×32 skins are converted for previews. Click a selected skin row to remove it. With multiple variants the server chooses one at each spawn; with none the player's own skin is used. Character previews appear where screen space permits. Team equipment previews show the current uniform draft immediately; Preview class shows the selected class with its overrides, and editing equipment returns to the uniform preview. Client settings disabling class skin overrides still apply.
All commands below require editor access, including when using a server console. Quote IDs containing : or /.
/teams editor team <id>
/teams editor class <id>
/teams editor reload
/teams editor export arena_preset
/teams editor import arena_preset
/teams edit team create blue Blue Team
/teams edit class create rifleman Rifleman
/teams edit team "custom:blue" set colour #3366FF
/teams edit team "custom:blue" class add "custom:rifleman"
/teams edit team "custom:blue" class remove "custom:rifleman"
/teams edit class "custom:rifleman" set name Rifleman Veteran
/teams edit class "custom:rifleman" set classLimit 4
/teams edit class "custom:rifleman" armour head inherit
/teams edit class "custom:rifleman" armour head empty
/teams edit class "custom:rifleman" armour chest {"item":"minecraft:iron_chestplate","count":1}
/teams edit class "custom:rifleman" item set 0 {"item":"minecraft:iron_sword","count":1}
/teams edit class "custom:rifleman" item copy 0 @s weapon.mainhand
/teams edit class "custom:rifleman" item clear 0
/teams edit class "custom:rifleman" capture
/teams edit class "custom:rifleman" skin add flansmod:textures/skins/soldier.png
/teams edit class "custom:rifleman" skin remove flansmod:textures/skins/soldier.png
/teams edit class "custom:rifleman" duplicate veteran
/teams edit class "custom:rifleman" disable
/teams edit class "custom:rifleman" enable
/teams edit class "custom:rifleman" delete
/teams edit team <pack-team-id> restore
Running /teams edit <team|class> <id> prints effective values. set <field> <value> changes a field; patch <JSON object> changes several. Arrays such as classes and skins replace the whole list; an armour patch only replaces the named slots. armour copy captures all worn armour. capture captures class carried equipment, while the GUI's Copy equipment also captures armour. Inventory slot numbers are 0–8 for hotbar, 9–35 for the main inventory, and 40 for offhand.
Presets are saved under teams-editor/presets/. Export contains all saved custom definitions and overrides. Import merges the preset by definition key and validates it before committing.
Both files have a versioned envelope:
{
"schemaVersion": 1,
"entries": {
"custom:rifleman": {
"name": "Rifleman",
"armour": {"head": "inherit", "chest": "empty"},
"items": {
"0": {"item": "minecraft:iron_sword", "count": 1, "nbt": "{Damage:12}"},
"40": {"item": "minecraft:shield", "count": 1}
},
"skins": [],
"unlockLevel": 0,
"requiredPrestigeLevel": 0,
"classLimit": -1,
"classLimitPercent": -1
}
}
}This example belongs in classes.json. A team entry in teams.json can contain:
"custom:blue": {
"name": "Blue Team",
"colour": "#3366FF",
"textColour": "blue",
"classes": ["custom:rifleman"],
"armour": {"head": {"item": "minecraft:iron_helmet", "count": 1}},
"roundsGenerator": false,
"victorySoundEnabled": true,
"victorySound": "victory",
"defeatSound": "defeat",
"victoryFlag": ""
}Either entry can contain "disabled": true. Team and class armour slot keys are head, chest, legs, feet. Item counts must be 1–64. nbt stores complete custom item data as an SNBT compound, including gun attachments, paint and ammunition. An optional extra SNBT compound preserves additional serialized stack data, such as Forge capabilities, when copying modded items. Unknown items and absent pack definitions remain saved so reinstalling their dependencies can restore them. Unknown field names, invalid slot numbers and malformed item NBT are rejected.
Team names and colours change after Save. Equipment and class skins take effect on the next spawn. Removing a selected class queues an available class for the next spawn, or spectators if none remains. A team used by the running round cannot be removed until the round stops; other saved rotations keep their references and must be adjusted as needed.
Ranked loadout pools continue to replace a class's ordinary carried starting items.
The Flan Soldier NPC browser reads these same effective definitions through the public API. Custom classes appear under Server editor; assigned classes are listed under their teams. Classes without any team appear under Unassigned classes, including classes from existing packs. Applying a loadout is still an explicit NPC-builder action; existing NPC inventories are not silently replaced after edits.