Screenshots | Addons | FAQ | Notice | Contributing | License
Multipurpose mod with switchable addons
Also, supports auto-generated mods etc.
- Customizable: each addon is switchable.
- Universal: many libraries for various purposes.
- Easy: doesn't require specific requirements.
Settings stage | Data stage | Control stage |
---|---|---|
ZKSettings - libary with new features for settings | sound auto-handling + PUAN2 api | "zk-lib" - remote interface of libs |
"Static libs" | "Static libs" | "Static libs" |
lazyAPI | lazyAPI - Are you lazy to change/add/remove/check some prototypes in the data stage? Use this library then. | Event listener (not important, currently) |
simpleTiers | ||
easyTemplates | ||
SPD - Simple postdate data (WIP) | event_handler_vZO - improved version of Factorio event_handler | |
fakes - creates fake entitites | ||
sprite list - creates sprite list and zk-lib adds them (new) |
3rd party libraries:
- basexx - library for base2, base16, base32, base64, base85 decoding and encoding of data strings. (source)
local basexx = require(require("__zk-lib__/defines").modules.basexx)
local bitwise = require(require("__zk-lib__/defines").modules.bitwise)
- fun - a functional programming library (documentation, source)
local fun = require(require("__zk-lib__/defines").modules.fun)
--- or
require(require("__zk-lib__/defines").modules.fun)()
- candran - a Lua dialect and simple preprocessor (source) (WARNING: this modified version has some bugs and some functions were removed due to technical limitations, please report in this repository if you have any issues with it)
local candran = require(require("__zk-lib__/defines").modules.candran)
local lpeg = require(require("__zk-lib__/defines").modules.lulpeg)
- Luxtre is a fully portable dialect of Lua 5.2 which compiles back into native code, written entirely in native Lua. It adds helpful additions and changes to Lua's default syntax and enables useful macros and preprocessing. (documentation, source) (not fully tested, can't be used outside of control.lua parsing yet)
local luxtre = require(require("__zk-lib__/defines").modules.luxtre)
- lal is the implementation of a Compiler for a Scheme like dialect of Lisp that compiles to Lua. (documentation, source) (expect bugs (I should fix some of them), can't be used outside of control.lua parsing yet)
# FAIL LAL-Compiler (74 OF 82 OK, 82 of 82 were run)
\
local lal = require(require("__zk-lib__/defines").modules.lal)
local tl = require(require("__zk-lib__/defines").modules.tl)
- moonscript is a programmer friendly language that compiles into Lua. (source) (not fully tested)
local moonscript = require(require("__zk-lib__/defines").modules.moonscript)
local std_modules = require("__zk-lib__/defines").modules.std
local init = require(std_modules.init)
local _base = require(std_modules._base)
local package = require(std_modules.package)
local debug = require(std_modules.debug)
local string = require(std_modules.string)
local table = require(std_modules.string)
local math = require(std_modules.math)
- vivid is simple color manipulation library. Used for color conversion and math. (source, documentation)
local vivid = require(require("__zk-lib__/defines").modules.vivid)
- Penlight brings together a set of generally useful pure Lua modules. (source) (not tested, some stuff were removed)
compat = require("__zk-lib__/lualib/Penlight/lua/pl/compat")
warn "@on"
local PL_modules = require("__zk-lib__/defines").modules.penlight
require(PL_modules.init) -- Entry point for loading all PL libraries only on demand, into the global space
local import_into = require(PL_modules.import_into)
local compat = require(PL_modules.compat)
local luabalanced = require(PL_modules.luabalanced)
local OrderedMap = require(PL_modules.OrderedMap)
local MultiMap = require(PL_modules.MultiMap)
local template = require(PL_modules.template)
local operator = require(PL_modules.operator)
local stringio = require(PL_modules.stringio)
local array2d = require(PL_modules.array2d)
local stringx = require(PL_modules.stringx)
local permute = require(PL_modules.permute)
local tablex = require(PL_modules.tablex)
local config = require(PL_modules.config)
local strict = require(PL_modules.strict)
local pretty = require(PL_modules.pretty)
local input = require(PL_modules.input)
local class = require(PL_modules.class)
local lexer = require(PL_modules.lexer)
local types = require(PL_modules.types)
local utils = require(PL_modules.utils)
local lapp = require(PL_modules.lapp)
local func = require(PL_modules.func)
local data = require(PL_modules.data)
local List = require(PL_modules.List)
local test = require(PL_modules.test)
local seq = require(PL_modules.seq)
local sip = require(PL_modules.sip)
local app = require(PL_modules.app)
local Map = require(PL_modules.Map)
local Set = require(PL_modules.Set)
local url = require(PL_modules.url)
local xml = require(PL_modules.xml)
local comprehension = require(PL_modules.comprehension)
- Allen is a Lua library which provides a set of utilities and helpers for strings operations.
Allen can be considered as an extension of the built-in Lua string library. (source, documentation) (WARNING: messes around with some data, don't require it with moonscript)
local allen = require(require("__zk-lib__/defines").modules.allen)
- Guard Minimalistic library providing Elixir-style guards for Lua. (source, documentation)
local guard = require(require("__zk-lib__/defines").modules.guard)
- Lua Class System (LCS) is a small library which offers a clean, minimalistic but powerful API for (Pseudo) Object Oriented programming style using Lua. (source)
local LCS = require(require("__zk-lib__/defines").modules.LCS)
- luacheck is a static analyzer and a linter for Lua. Luacheck detects various issues such as usage of undefined global variables, unused variables and values, accessing uninitialized variables, unreachable code and more. Most aspects of checking are configurable: there are options for defining custom project-related globals, for selecting set of standard globals (version of Lua standard library), for filtering warnings by type and name of related variable, etc. The options can be used on the command line, put into a config or directly into checked files as Lua comments. (source, documentation)
local luacheck = require(require("__zk-lib__/defines").modules.luacheck)
If you're interested in switchable commands with filters and in basic examples for Factorio, check out https://github.com/ZwerOxotnik/factorio-example-mod
- https://mods.factorio.com/mod/random-gifts-by-timer
- https://mods.factorio.com/mod/kill-nest-get-gift
- https://mods.factorio.com/mod/scan-rocket-with-radars
- https://mods.factorio.com/mod/auto-mining
- https://mods.factorio.com/mod/searching-flashlightR
- https://mods.factorio.com/mod/adrenaline
- https://mods.factorio.com/mod/CopyAssemblerPipeDirection
- Delete decorations
Q: What the addons are?
A: Wrapped embedded code into this mod
Q: Are addons better than mods?
A: Addons have more convenient way of managment for players, but, unfortunately, mod devs can't use some features for addons, at this moment. So, if a mod has simple events, then it'll be nice to have the mod as an addon.
Installation Guide | Translations | Discord |
---|---|---|
📖 Installation Guide | 📚 Help with translations | 🦜 Discord |
If you want to download from this source, then use commands below (requires git).
git clone --recurse-submodules -j8 https://github.com/ZwerOxotnik/zk-lib zk-lib
cd zk-lib
Don't be afraid to contribute! We have many, many things you can do to help out. If you're trying to contribute but stuck, tag @ZwerOxotnik
Alternatively, join the Discord group and send a message there.
Please read the contributing file for other details on how to contribute.
This project contains work from multiple sources + addons.
Also, this project used Mod generator.
Some images were copied from the game "Factorio" and changed, please, read terms of service: https://www.factorio.com/terms-of-service.\
./fonts/NerdFontsSymbolsOnly is licensed under the MIT licence. Original source: https://www.nerdfonts.com/font-downloads
Type | Artist | Image | License |
---|---|---|---|
Thumbnail | ZwerOxotnik | All right are reserved |
This project is copyright © 2018-2024 ZwerOxotnik <zweroxotnik@gmail.com>.
This project is licensed under the European Union Public License v. 1.2 only.