A mod allows you to customize your Stickforge server with stickman skins, items, maps, effects and so on. It also contains the data of the players that played to your mod.
The mods are stored in a folder that is at the root level of your Stickforge server. The directory of your mod should look like this altought it may slightly differ based on the version of your Stickforge server :
For each folder, will be stored the all the effects, items (including weapon models), maps, stickman skins (skin folder), musics, npcs, players and pickups. Two files should be at the root level of the mod directory: config.json5 and mod.ts.
When you start your server, you must choose the mod you want to use for this server.
To run your server on a specific mode, launch your Stickforge server with the following command:
/path/to/your/server/launch.bat --server_mode=prod --game_mode=[MOD.id]/[GAME_MODE.ID]
MOD.ID
: This is the id of your modGAME_MODE.ID
: This is the id of your game mode
Example of command to launch a server that will launch the game mode ffa (Free-For-All) in the mod sf_base (Stickforge Official Mod) for Windows:
C:\Users\Ultdx\SFServer\launch.bat --server_mode=prod --game_mode=sf_base/ffa
The server will only use the FFA game mode, with its maps and parameters given in the config.json5
file. Other assets, coming from other mods can be activated too (like stickman skins, items and so on).
Only one game mode can be activated at a time. But all other mods assets can be activated too.
Each mod must have a config file in its root folder: config.json5
List of key / values available:
Path | Key | Type | Required | Default (server) | Description |
---|---|---|---|---|---|
/ | id | string | Yes | — | Mod identifier. |
/ | name | string | Yes | — | Mod display name. |
/ | author | string | No | — | Author name. |
/ | version | string | Yes | — | Mod version. |
/ | description | string | No | — | Mod description. |
/loader | skins | boolean | No | true | Load skins from this mod. |
/loader | maps | boolean | No | true | Load maps from this mod. |
/loader | npcs | boolean | No | true | Load NPCs from this mod. |
/loader | items | boolean | No | true | Load items from this mod. |
/loader | effects | boolean | No | true | Load effects from this mod. |
/loader | script | boolean | No | true | Load scripts from this mod. |
/ | dependencies | object | No | {} | Future dependency map. |
/gamemodes/* | ID | string | Yes | — | Gamemode ID (e.g., "ffa", "cp"). |
/gamemodes/* | NAME | string | Yes | — | Gamemode name. |
/gamemodes/* | GUEST_ALLOWED | boolean | No | true | Allow guests to join. |
/gamemodes/* | SPAWN_INVINCIBILITY | boolean | No | false | Players invincible right after spawn. |
/gamemodes/* | LEVEL_REQUIRED | number | No | 1 | Minimum account level to join. |
/gamemodes/* | LEVEL_MAX_WEAPON_RESTRICTION | number | null | No | null |
/gamemodes/* | MAX_PLAYERS_PER_ROOM | number | Yes | — | Max players in a room for this mode. |
/gamemodes/* | MAX_ROOM_PER_WORKER | number | No | 1 | Max rooms per worker process. |
/gamemodes/* | ROUND_ENDLESS | boolean | Yes | — | If true, round never ends. |
/gamemodes/* | ROUND_TIME | number (ms) | Yes | — | Round duration in milliseconds. |
/gamemodes/* | CAN_JOIN_GAME_AFTER_START_PERCENT | number (0–1) | No | 0.99 | Join cutoff relative to round progress. |
/gamemodes/* | RESPAWN_DELAY | number (ms) | Yes | — | Respawn delay for players. |
/gamemodes/* | HAVEKING | boolean | No | false | Enables “king” mechanics in FFA-like modes. |
/gamemodes/* | CONQUER_POINTS | boolean | No | false | Enables CP mechanics (capture points). |
/gamemodes/* | MAPS | string[] | Yes | — | List of map IDs available for this mode. |
/gamemodes/* | MAPS_DISABLED | string[] | No | [] | List of disabled map IDs for rotation. |
/gamemodes/* | MAPS_DATA | any | No | null | Extra metadata for maps (reserved). |
/gamemodes/* | REWARD_COINS_VICTORY | number | No | — | Coins for being on the winning team. |
/gamemodes/* | REWARD_COINS_DRAW | number | No | — | Coins for draw. |
/gamemodes/* | REWARD_COINS_DEFEAT | number | No | — | Coins for defeat. |
/gamemodes/* | WHITELISTED_WEAPONS | string | No | — | If set, forces a weapon by model for all players in this mode. |
/gamemodes/* | SETTINGS_GRAVITY | number | No | 1600 | Gravity (pixels/s^2) affecting projectiles/physics. |
/gamemodes/* | SETTINGS_XP_MODIFIER | number | No | 1.00 | Global XP multiplier (e.g., events). |
/gamemodes/* | SETTINGS_XP_BY_KILL | number | No | 40 | Base XP per kill (distributed by damage share). |
/gamemodes/* | SETTINGS_COINS_KING_REWARDING | number | No | 2 | Periodic king coin reward. |
/gamemodes/* | SETTINGS_COINS_BY_KING_KILLED | number | No | 2 | Extra coins for killing a king. |
/gamemodes/* | SETTINGS_COINS_BY_KILL_WHEN_KING | number | No | 2 | Extra coins if the killer is a king. |
/gamemodes/* | SETTINGS_COINS_BY_KILL | number | No | 3 | Coins per kill (distributed by damage share). |
/gamemodes/* | SETTINGS_DIAMONDS_BY_KILL | number | No | 0 | Diamonds per kill (distributed by damage share). |
/gamemodes/* | STICKMAN_HP_BASE | number | No | 600 | Default HP base for players (can be overridden by team/VIP). |
/gamemodes/* | STICKMAN_HP_MAX_LIMIT | number | No | 675 | Max HP cap for players (life-steal cannot exceed this + item extra HP). |
/gamemodes/* | STICKMAN_HP_REGEN | number (0–1) | No | 0.05 | HP regen percent per second (applies during fake death/rest). |
/gamemodes/* | STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND | number | No | 50 | Absolute max HP per second from regen. |
/gamemodes/* | STICKMAN_KILL_MAX_MODIFER | number (0–1) | No | 0.2 | Portion of victim’s max HP added to killer (life-steal on kill). |
/gamemodes/* | STICKMAN_HEADSHOT_DAMAGE_MODIFER | number | No | 1.50 | Headshot damage multiplier. |
/gamemodes/* | STICKMAN_RUN_SPEED | number | No | 210 | Base running speed (team/VIP can change and is applied as a ratio). |
/gamemodes/* | STICKMAN_JUMP_SPEED | number | No | 3300 | Jump speed. |
/gamemodes/* | PREVENT_STUFF_CHANGE | boolean | No | false | If true, players cannot change loadout mid-round. |
/gamemodes/* | WARMUP_DELAY | number (ms) | No | 0 | Warmup duration before round logic changes. |
/gamemodes/* | WARMUP_INVINCIBILITY | boolean | No | false | If true and warmup active, entities are invincible. |
/gamemodes/* | WARMUP_END_MESSAGE | object | No | — | Announcement at warmup end. |
/gamemodes/*/WARMUP_END_MESSAGE | MESSAGE | string | Yes (if object set) | — | Text to display. |
/gamemodes/*/WARMUP_END_MESSAGE | COLOR | number (0xRRGGBB) | Yes (if object set) | — | Text color. |
/gamemodes/*/WARMUP_END_MESSAGE | SOUND | string | Yes (if object set) | — | Sound asset key. |
/gamemodes/* | WARMUP_END_CUSTOM_ACTIONS | object[] | No | — | Actions to execute at warmup end. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | TYPE | string | Yes | — | Action type (e.g., "switch_to_team"). |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | FROM_TEAM | string | Yes | — | Source team ID for selection. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | TO_TEAM | string | Yes | — | Destination team ID for switch. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | NB_PLAYERS_BY_MAX_ROOM | number | Yes | — | Fraction of room size used to decide number switched. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | SHOULD_RESPAWN_IN_PLACE | boolean | No | false | Respawn switched players at current position. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | MESSAGE_TO_PLAYER | object | No | — | Personalized message for affected players. |
/gamemodes/*/WARMUP_END_CUSTOM_ACTIONS[] | BECOME_VIP | boolean | No | false | Turn affected players into VIPs for this round. |
/gamemodes/* | FORCE_TEAM_ON_JOIN_BEFORE_WARMUP | string | No | — | Force this team on join before warmup ends. |
/gamemodes/* | FORCE_TEAM_ON_JOIN_AFTER_WARMUP | string | No | — | Force this team on join after warmup ends. |
/gamemodes/* | TEAMS | object[] or null | Yes (team modes) | — | Team definitions (null for FFA). |
/gamemodes/*/TEAMS[] | ID | string | Yes | — | Team identifier. |
/gamemodes/*/TEAMS[] | NAME | string | Yes | — | Team display name. |
/gamemodes/*/TEAMS[] | REWARD_COINS_VICTORY | number | No | — | Override coins for victory for this team. |
/gamemodes/*/TEAMS[] | REWARD_COINS_DRAW | number | No | — | Override coins for draw for this team. |
/gamemodes/*/TEAMS[] | REWARD_COINS_DEFEAT | number | No | — | Override coins for defeat for this team. |
/gamemodes/*/TEAMS[] | STICKMAN_HP_BASE | number | No | — | Team base HP override. |
/gamemodes/*/TEAMS[] | STICKMAN_RUN_SPEED | number | No | — | Team run speed override (applied as ratio to base). |
/gamemodes/*/TEAMS[] | STICKMAN_HP_REGEN | number | No | — | Team HP regen override. |
/gamemodes/*/TEAMS[] | STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND | number | No | — | Team regen cap override. |
/gamemodes/*/TEAMS[] | SWITCH_TO_TEAM_WHEN_DIE | string | No | — | Auto-switch a dead player to another team. |
/gamemodes/*/TEAMS[] | SHOULD_RESPAWN_IN_PLACE | boolean | No | false | Respawn dead players at their death position. |
/gamemodes/*/TEAMS[] | LOOSE_GAME_IF_ALL_DEAD | boolean | No | false | If true and all players die, team loses. |
/gamemodes/*/TEAMS[] | LOOSE_GAME_IF_ALL_DEAD_DELAY | number (ms) | No | 10000 | Delay before evaluating all-dead loss. |
/gamemodes/*/TEAMS[] | LOOSE_GAME_IF_EMPTY | boolean | No | false | If true and team empty, team loses. |
/gamemodes/*/TEAMS[] | LOOSE_GAME_IF_EMPTY_DELAY | number (ms) | No | 10000 | Delay before evaluating empty-team loss. |
/gamemodes/*/TEAMS[] | VIPS | object[] | No | — | VIP templates that can be assigned to players. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_HP_BASE | number | Yes | — | VIP HP base. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_HP_MAX_LIMIT | number | Yes | — | VIP HP cap. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_RUN_SPEED | number | No | — | VIP run speed (ratio applied to base). |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_HP_REGEN | number | No | — | VIP regen percent. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND | number | No | — | VIP regen cap. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_SKIN_FORCE | string | No | — | Force skin item ID. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_WEAPON_FORCE | string | No | — | Force weapon item ID. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_WEAPON_MODEL_FORCE | string | No | — | Force weapon model key. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_HEADGEAR_FORCE | string | No | — | Force headgear item ID. |
/gamemodes/*/TEAMS[]/VIPS[] | STICKMAN_THROWABLE_FORCE | string | No | — | Force throwable item ID. |
/gamemodes/*/TEAMS[]/VIPS[] | LOOSE_GAME_IF_DIE | boolean | No | false | If true and VIP dies, enemy team wins. |
/gamemodes/*/TEAMS[]/VIPS[] | REPLACED_IF_LEFT | boolean | No | false | VIP replaced if disconnects/leaves. |
Example of config file for the Stickforge Official Mod that includes multiple game modes:
{
"id": "sf_base",
"name": "Stickforge Official Mod",
"loader": {
//Set to true if you want the elements of this mod to be loaded in the server.
//It allows you for example to load only skins, or items from a specific mods
//If everything is set to false, only the gamemodes below will be loaded.
"skins": true,
"maps": true,
"npcs": true,
"items": true,
"effects": true,
"script": true
},
"dependencies": {}, //Not used for now
"author": "Stickforge Official", //Put your author name here
"version": "1.0.1",
"description": "This is the official Stickforge mod, providing all the items, effects, skins and npcs from BattleStick 2!",
"gamemodes": {
"ffa": {
"ID": "ffa",
"NAME": "Free For All", //Name that will be displayed in server list
"GUEST_ALLOWED": true,
"SPAWN_INVINCIBILITY": false,
"LEVEL_REQUIRED": 1,
"LEVEL_MAX_WEAPON_RESTRICTION": null,
"MAX_PLAYERS_PER_ROOM": 14,
"MAX_ROOM_PER_WORKER": 1,
"ROUND_ENDLESS": false,
"ROUND_TIME": 480000,
//You can set personalized gravity, XP and other server's setting here. If you do not specify them, it will work without.
// Gravity in pixels per second (used for projectiles mostly)
"SETTINGS_GRAVITY": 1600,
// XP multiplier (Example: Christmas XP *2, Triple XP Update *3)
"SETTINGS_XP_MODIFIER": 1.00,
// XP earned per kill
"SETTINGS_XP_BY_KILL": 40,
// FFA settings for king and kills
// Coins earned when the player is the king
"SETTINGS_COINS_KING_REWARDING": 2,
// Coins earned for killing a king
"SETTINGS_COINS_BY_KING_KILLED": 2,
// Coins earned when the player is a king and kills another player
"SETTINGS_COINS_BY_KILL_WHEN_KING": 2,
// Coins earned for killing another player
"SETTINGS_COINS_BY_KILL": 3,
// Diamonds earned for killing another player
"SETTINGS_DIAMONDS_BY_KILL": 0,
// Default Player Settings (can be modified in gamemode too)
// Minimum HP limit for the stickman
"STICKMAN_HP_BASE": 600,
// Maximum HP limit for the stickman
"STICKMAN_HP_MAX_LIMIT": 675,
// HP regeneration percentage per second
"STICKMAN_HP_REGEN": 0.05,
// Maximum HP regeneration amount per second
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 50,
// Percentage increase in max HP for the player who killed an enemy (steal life when kill: 0 = no life stealth, 1 = full steal life)
"STICKMAN_KILL_MAX_MODIFER": 0.2,
// Headshot damage multiplier
"STICKMAN_HEADSHOT_DAMAGE_MODIFER": 1.50,
// Movement Settings
// Running speed (avoid changing)
"STICKMAN_RUN_SPEED": 210,
// Jumping speed (avoid changing)
"STICKMAN_JUMP_SPEED": 3300,
//Can join before 99% of the round has passed (so a few seconds before the end)
"CAN_JOIN_GAME_AFTER_START_PERCENT": 0.99,
"RESPAWN_DELAY": 6000,
"HAVEKING": false,
"TEAMS": null,
"MAPS": [
"ffa/spring_beach/ffa_spring_beach",
],
"MAPS_DISABLED": [
"ffa/ice_plains/ffa_ice_plains",
"ffa/zombie_county/ffa_zombie_county"
],
"REWARD_COINS_VICTORY": 22,
"REWARD_COINS_DRAW": 15,
"REWARD_COINS_DEFEAT": 12
},
"cp": {
"ID": "cp",
"NAME": "Conquer Points",
"GUEST_ALLOWED": true,
"SPAWN_INVINCIBILITY": true,
"LEVEL_REQUIRED": 1,
"LEVEL_MAX_WEAPON_RESTRICTION": null,
"MAX_ROOM_PER_WORKER": 1,
"MAX_PLAYERS_PER_ROOM": 16,
"ROUND_ENDLESS": false,
"ROUND_TIME": 900000,
//"ROUND_TIME": 10000,
//Can join before 50% of the round has passed
"CAN_JOIN_GAME_AFTER_START_PERCENT": 0.99,
"RESPAWN_DELAY": 6000,
"HAVEKING": false,
"CONQUER_POINTS": true,
"TEAMS": [
{
"ID": "t1",
"NAME": "Team 1"
},
{
"ID": "t2",
"NAME": "Team 2"
}
],
"MAPS": [
"cp/forest_edge/cp_forest_edge_beach",
"cp/ancient_tower/cp_ancient_tower",
"cp/desert_deep/cp_desert_deep",
"cp/forest_edge/cp_forest_edge",
],
"MAPS_DISABLED": [
"cp/forest_edge/cp_forest_edge_halloween"
],
"MAPS_DATA": null,
"REWARD_COINS_VICTORY": 42,
"REWARD_COINS_DRAW": 28,
"REWARD_COINS_DEFEAT": 22
},
"cp_galactic_federation": {
"ID": "cp_galactic_federation",
"NAME": "Conquer Points Galactic Federation",
"GUEST_ALLOWED": true,
"SPAWN_INVINCIBILITY": true,
"LEVEL_REQUIRED": 1,
"LEVEL_MAX_WEAPON_RESTRICTION": null,
"MAX_ROOM_PER_WORKER": 3,
"MAX_PLAYERS_PER_ROOM": 16,
"ROUND_ENDLESS": false,
"ROUND_TIME": 900000,
//Can join before 50% of the round has passed
"CAN_JOIN_GAME_AFTER_START_PERCENT": 0.90,
"RESPAWN_DELAY": 6000,
"HAVEKING": false,
"CONQUER_POINTS": true,
"TEAMS": [
{
"ID": "t1",
"NAME": "Pleiadians Federation", //Team 1
"STICKMAN_HP_BASE": 250,
"STICKMAN_WEAPON_FORCE": "626ff4292b18123cbcb3c025", //plasma Gun
"STICKMAN_SKIN_FORCE": "6276520b2b18123cbccf9cff", //Pleiadian
"STICKMAN_HEADGEAR_FORCE": "5ece5d4d1aea8b19f04b6a6c", //None
"STICKMAN_THROWABLE_FORCE": "6273715f2b18123cbc79a6db", //Zapper
"STICKMAN_HP_REGEN": 0, //% of regeneration every loop of the game server (default each second)
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 0,
},
{
"ID": "t2",
"NAME": "Mantis Hive", //Team 2
"STICKMAN_HP_BASE": 250,
"STICKMAN_WEAPON_FORCE": "626ff4292b18123cbcb3c025", //plasma Gun
"STICKMAN_SKIN_FORCE": "62729a022b18123cbca0ba8b", //Mantis
"STICKMAN_HEADGEAR_FORCE": "5ece5d4d1aea8b19f04b6a6c", //None
"STICKMAN_THROWABLE_FORCE": "6273715f2b18123cbc79a6db", //Zapper
"STICKMAN_HP_REGEN": 0, //% of regeneration every loop of the game server (default each second)
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 0,
}
],
"MAPS": [
"cp/forest_edge/cp_forest_edge_beach"
],
"MAPS_DISABLED": [
"cp/ancient_tower/cp_ancient_tower",
"cp/desert_deep/cp_desert_deep",
"cp/forest_edge/cp_forest_edge",
"cp/forest_edge/cp_forest_edge_halloween"
],
"MAPS_DATA": null,
"REWARD_COINS_VICTORY": 42,
"REWARD_COINS_DRAW": 28,
"REWARD_COINS_DEFEAT": 22
},
"ps": {
"ps": {
"ID": "ps",
"NAME": "Protect Santa",
"GUEST_ALLOWED": true,
"SPAWN_INVINCIBILITY": true,
"LEVEL_REQUIRED": 1,
"LEVEL_MAX_WEAPON_RESTRICTION": null,
"MAX_ROOM_PER_WORKER": 2,
"MAX_PLAYERS_PER_ROOM": 12,
"ROUND_ENDLESS": false,
"ROUND_TIME": 6000000,
//Can join before 50% of the round has passed
"CAN_JOIN_GAME_AFTER_START_PERCENT": 0.90,
"RESPAWN_DELAY": 6000,
"HAVEKING": false,
"PREVENT_STUFF_CHANGE": true,
"WARMUP_DELAY": 60000,
"WARMUP_INVINCIBILITY": false,
"WARMUP_END_MESSAGE": {
"MESSAGE": "Be Santa's Protector, or his killer!",
"COLOR": 0xff00ff,
"SOUND": "santa_start"
},
"WARMUP_END_CUSTOM_ACTIONS": [
{
"TYPE": "switch_to_team",
"FROM_TEAM": "t1",
"TO_TEAM": "t1",
"SHOULD_RESPAWN_IN_PLACE": false,
"NB_PLAYERS_BY_MAX_ROOM": 1, //1 max Santa per room
"BECOME_VIP": true,
"MESSAGE_TO_PLAYER": {
"MESSAGE": "You are now Santa! Try to survive until the end of the game",
"COLOR": 0x00ff00,
"SOUND": "santa_start"
}
}
],
"TEAMS": [
{
"ID": "t1", //use spawns in the map with this team attribute
"NAME": "Santa's Friends",
"VIPS": [ //Characters available as VIP
{
"STICKMAN_HP_BASE": 3000,
"STICKMAN_HP_MAX_LIMIT": 3000,
"STICKMAN_RUN_SPEED": 180,
"STICKMAN_HP_REGEN": 0,
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 0,
"STICKMAN_SKIN_FORCE": "5fc7d44082a44d9ed8d55801", //Santa
"STICKMAN_WEAPON_FORCE": "5f3bb4d4669edbf0aa96b999", //stickiller
"STICKMAN_WEAPON_MODEL_FORCE": "stickiller_fireworks_launcher",
"STICKMAN_HEADGEAR_FORCE": "5fcb5ae6c6e40536d63f5841", //christmas beanie
"STICKMAN_THROWABLE_FORCE": "5e73a182155817eca5e6bd59", //Aerial mine
//SPRITE_SIZE: 0.2,
"LOOSE_GAME_IF_DIE": true,
"REPLACED_IF_LEFT": true, //If the player leave the game he is replaced
}
],
"STICKMAN_SKIN_FORCE": "5fc7de1382a44d9ed8d6b9b5", //M Gingerbread
"STICKMAN_WEAPON_FORCE": "5ed26e79ae2fd0ef4ea3253f", //Stone
"STICKMAN_WEAPON_MODEL_FORCE": "snowball",
"STICKMAN_HEADGEAR_FORCE": "5fcb5ae6c6e40536d63f5841", //christmas beanie
"STICKMAN_THROWABLE_FORCE": "5e73a182155817eca5e6bd59", //Aerial mine
"LOOSE_GAME_IF_EMPTY": true,
"LOOSE_GAME_IF_EMPTY_DELAY": 75000,
//SPRITE_SIZE: 0.1
},
{
"ID": "t2",
"NAME": "Evil Elves",
"STICKMAN_HP_REGEN": 0, //% de regeneration toute les 1s
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 0,
"STICKMAN_SKIN_FORCE": "5f5fcfcf464e247c627dc3ab", //Evil elf
"STICKMAN_THROWABLE_FORCE": "5efdd7f21741fe54cbc76a8d", //Grenade
"LOOSE_GAME_IF_EMPTY": true,
"LOOSE_GAME_IF_EMPTY_DELAY": 75000,
//SPRITE_SIZE: 0.1
}
],
"MAPS": [
"ps/ps_santas_mountains"
],
"MAPS_DISABLED": [],
"REWARD_COINS_VICTORY": 28,
"REWARD_COINS_DRAW": 12,
"REWARD_COINS_DEFEAT": 10
}
},
"za": {
"ID": "za",
"NAME": "Zombie Apocalypse",
"GUEST_ALLOWED": true,
"SPAWN_INVINCIBILITY": false,
"LEVEL_REQUIRED": 1,
"LEVEL_MAX_WEAPON_RESTRICTION": null,
"MAX_ROOM_PER_WORKER": 2,
"MAX_PLAYERS_PER_ROOM": 16,
"ROUND_ENDLESS": false,
"ROUND_TIME": 360000,
//Can join before 10% of the round has passed
"CAN_JOIN_GAME_AFTER_START_PERCENT": 0.10,
"RESPAWN_DELAY": 6000,
"HAVEKING": false,
"FORCE_TEAM_ON_JOIN_BEFORE_WARMUP": "t1",
"FORCE_TEAM_ON_JOIN_AFTER_WARMUP": "t2",
"PREVENT_STUFF_CHANGE": true,
"WARMUP_DELAY": 60000,
"WARMUP_INVINCIBILITY": true,
"WARMUP_END_MESSAGE": {
"MESSAGE": "The infection has started. You are now on your own!",
"COLOR": 16711680,
"SOUND": "zombie_start"
},
"WARMUP_END_CUSTOM_ACTIONS": [
{
"TYPE": "switch_to_team",
"FROM_TEAM": "t1",
"TO_TEAM": "t2",
"SHOULD_RESPAWN_IN_PLACE": false,
"NB_PLAYERS_BY_MAX_ROOM": 3,
"MESSAGE_TO_PLAYER": {
"MESSAGE": "You are now a zombie! Infect as much stickmen as you can!",
"COLOR": 16711680,
"SOUND": "zombie_start"
}
}
],
"TEAMS": [
{
"ID": "t1",
"NAME": "Team 1",
"SWITCH_TO_TEAM_WHEN_DIE": "t2",
"SHOULD_RESPAWN_IN_PLACE": true,
"LOOSE_GAME_IF_ALL_DEAD": true,
"LOOSE_GAME_IF_ALL_DEAD_DELAY": 75000,
"REWARD_COINS_VICTORY": 100
},
{
"ID": "t2",
"NAME": "Zombies",
"STICKMAN_HP_BASE": 2000,
"STICKMAN_HP_MAX_LIMIT": 2000,
"STICKMAN_RUN_SPEED": 140,
"STICKMAN_HP_REGEN": 0,
"STICKMAN_HP_REGEN_MAX_AMOUNT_PER_SECOND": 0,
"STICKMAN_SKIN_FORCE": "5f8d796d82a44d9ed8823530",
"STICKMAN_WEAPON_FORCE": "5f8d7bc782a44d9ed882802a",
"STICKMAN_HEADGEAR_FORCE": "5ece5d4d1aea8b19f04b6a6c",
"STICKMAN_THROWABLE_FORCE": "5f8dcb3282a44d9ed88c1e8a",
"LOOSE_GAME_IF_EMPTY": true,
"LOOSE_GAME_IF_EMPTY_DELAY": 75000,
"REWARD_COINS_VICTORY": 25,
"REWARD_COINS_DEFEAT": 20
}
],
"MAPS": [
"za/za_zombie_county"
],
"MAPS_DISABLED": [],
"REWARD_COINS_VICTORY": 32,
"REWARD_COINS_DRAW": 21,
"REWARD_COINS_DEFEAT": 17
}
}
}
To download new mods from the Steam Workshop, you must be an admin on your server (your player’s JSON file should have the property right
set to at least 1
).
When logged in with the game client, use the command:
/modinstall ItemId
Replace ItemId
with the Steam Workshop item ID found in the URL.
You can also run the command directly from your server console (without the /
).
Example:
/modinstall 3508594525
This corresponds to this Workshop item.
For a full list of commands, see: Stickforge Commands Wiki.
The server will automatically download and install the mod.
👉 Don’t forget to restart the server afterward.
If you encounter issues, reach out on Discord.
To install a mod manually, simply place it in your server’s mods
directory.
For example, if your server is installed at:
C:\Program Files (x86)\Steam\steamapps\common\Stickforge Dedicated Server
then your mods should go in:
C:\Program Files (x86)\Steam\steamapps\common\Stickforge Dedicated Server\mods
Make sure the mod is correctly set up and includes a config.json5
file in its root folder.
If you run into problems, contact us on Discord.