Requires Factorio 2.0.27 or newer.
Currently approximately 8700 lines of lua.
This mod keeps all persistent state in a global table named storage. See
docs/storage.md for an overview of its layout and
docs/in-place-upgrades.md for upgrade guardrails.
The system-only ChatWire interface is documented in
docs/chatwire-protocol.md.
A basic luacheck configuration is provided for optional linting:
luacheck *.luaRegression tests use mocked Factorio APIs and run under Lua 5.2 from this directory:
lua5.2 tests/regressions.luaIf Lua 5.2 is unavailable locally:
docker run --rm -v "$PWD":/work:ro -w /work nickblah/lua:5.2-alpine lua tests/regressions.luaThese tests cover commands, inventory transfers, permissions, and save migrations; they do not replace in-game testing.
banish.lua
Allows regulars to vote-ban players,
commands.lua
Server, moderator and player commands
control.lua
Main, loads modules
event.lua
Handles game events and ticks
storage.lua
Handles init of storage variables
info.lua
Welcome/info window
log.lua
Action logging
logo.lua
adds a custom logo to spawn
online.lua
menu that shows players online, with some actions:
whisper, report and banish
perms.lua
passive anti-grief. new users permissions are limited,
and players move up with activity
todo.lua
simple to-do list
utility.lua
commonly needed utility functions
onelife.lua
permadeath-onelife mode
PlanetPicker note: SoftMod avoids teleporting players off the empty_void surface or forcing controller changes while PlanetPicker is using it for planet selection / limbo.
quickbar.lua
save/restore quickbar via chatwire. Exchange strings now use the M45-QB2 format. Item names are shortened to two-letter aliases (AA, AB, ...) from a predefined list and qualities use (u, r, e, l) when present (e.g. IP:l for iron-plate).
Quickbar Format