## Core

Async | Core Module - Async - An extention of task and token to allow a single require to register and run async functions.
Commands | Core Module - Commands - Factorio command making module that makes commands with better parse and more modularity
Common | Core Module - Common - Adds some commonly used functions used in many modules
Datastore | Core Module - Datastore - A module used to store data in the global table with the option to have it sync to an external source.
External | Core Module - External - A module used to make accessing externally set data easier.
Gui | Core Module - Gui - Used to simplify gui creation using factory functions called element defines
Groups | Core Module - Permission Groups - Permission group making for factorio so you never have to make one by hand again
PlayerData | Core Module - PlayerData - A module used to store player data in a central datastore to minimize data requests and saves.
Roles | Core Module - Roles - Factorio role system to manage custom permissions.

## Control

Jail | Control Module - Jail - Adds a way to jail players.
Production | Control Module - Production - Common functions used to track production of items
Protection | Control Module - Protection - Controls protected entities
Reports | Control Module - Reports - Adds a way to report players and store report messages.
Rockets | Control Module - Rockets - Stores rocket stats for each force.
Selection | Control Module - Selection - Controls players who have a selection planner, mostly event handlers
Tasks | Control Module - Tasks - Stores tasks for each force.
Warnings | Control Module - Warnings - Adds a way to give and remove warnings to players.
Warps | Control Module - Warps - Stores warps for each force.

## Addons

Advanced-Start | Adds a better method of player starting items based on production levels.
afk-kick | Kicks players when all players on the server are afk
Chat-Popups | Creates flying text entities when a player sends a message in chat; also displays a ping above users who are named in the message
Chat-Reply | Adds auto replies to chat messages; as well as chat commands
Compilatron | Adds a compilatron that walks around the spawn area; adapted from redmew code
Damage-Popups | Displays the amount of dmg that is done by players to entities; also shows player health when a player is attacked
Death-Logger | Makes markers on the map where places have died and reclaims items if not recovered
Discord-Alerts | Sends alert messages to our discord server when certain events are triggered
Inventory-Clear | Will move players items to spawn when they are banned or kicked, option to clear on leave
Pollution-Grading | Makes polution look much nice of the map, ie not one big red mess
protection-jail | When a player triggers protection multiple times they are automatically jailed
report-jail | When a player is reported, the player is automatically jailed if the combined playtime of the reporters exceeds the reported player
Scorched-Earth | When a player walks around the tiles under them will degrade over time, the same is true when entites are built
Spawn-Area | Adds a custom spawn area with chests and afk turrets
Tree-Decon | Makes trees which are marked for decon "decay" quickly to allow faster building

## Guis

Autofill | Gui Module - Autofill - Adds a button to enable Autofill
Player-List | Gui Module - Player List - Adds a player list to show names and play time; also includes action buttons which can preform actions to players
Readme | Gui Module - Readme - Adds a main gui that contains lots of important information about our server
Rocket-Info | Gui Module - Rocket Info - Adds a rocket infomation gui which shows general stats, milestones and build progress of rockets
Science-Info | Gui Module - Science Info - Adds a science info gui that shows production usage and net for the different science packs as well as an eta
server-ups | Gui Module - Server UPS - Adds a server ups counter in the top right and a command to toggle is
Task-List | Gui Module - Task List - Adds a task list to the game which players can add, remove and edit items on
Warps-List | Gui Module - Warp List - Adds a warp list gui which allows players to add and remove warp points

## Data

Alt-View | Stores if you use alt mode or not and auto applies it
Bonus | Commands Module - Bonus - Adds a command that allows players to have increased stats
Greetings | Greets players on join
Player-Colours | Gives players random colours when they join, also applies preset colours to those who have them
Quickbar | Commands Module - Quickbar - Adds a command that allows players to load Quickbar presets
Tag | Commands Module - Tag - Adds a command that allows players to have a custom tag after their name

## Commands

Admin-Chat | Commands Module - Admin Chat - Adds a command that allows admins to talk in a private chat
Admin-Markers | Commands Module - Admin Markers - Adds a command that creates map markers which can only be edited by admins
Cheat-Mode | Commands Module - Cheat Mode - Adds a command that allows players to enter cheat mode
Clear-Inventory | Commands Module - Clear Inventory - Adds a command that allows admins to clear people's inventorys
Connect | Commands Module - Connect - Adds a commands that allows you to request a player move to another server
Debug | Commands Module - Debug - Adds a command that opens the debug frame
Find | Commands Module - Find - Adds a command that zooms in on the given player
Help | Commands Module - Help - Adds a better help command that allows searching of descriotions and names
Home | Commands Module - Home - Adds a command that allows setting and teleporting to your home position
Interface | Commands Module - Interface - Adds a command that acts as a direct link to the the active softmod, for debug use
Jail | Commands Module - Jail - Adds a commands that allow admins to jail and unjail
Kill | Commands Module - Kill - Adds a command that allows players to kill them selfs and others
LastLocation | Commands Module - Last location - Adds a command that will return the last location of a player
Me | Commands Module - Me - Adds a command that adds * around your message in the chat
Protection | Commands Module - Protection - Adds commands that can add and remove protection
Rainbow | Commands Module - Rainbow - Adds a command that prints your message in rainbow font
Repair | Commands Module - Repair - Adds a command that allows an admin to repair and revive a large area
Reports | Commands Module - Reports - Adds a commands that allow players to report other players
Roles | Commands Module - Roles - Adds a commands that allow interaction with the role system
InventorySearch | Commands Module - Inventory Search - Adds commands that will search all players inventories for an item
Spawn | Commands Module - Spawn - Adds a command that allows players to teleport to their spawn point
Spectate | Commands Module - Spectate - Adds commands relating to spectate and follow
Teleport | Commands Module - Teleport - Adds a command that allows players to teleport to other players
Warnings | Commands Module - Warnings - Adds a commands that allow admins to warn other players

## Configs

File-Loader | This contains a list of all files that will be loaded and the order they are loaded in; to stop a file from loading add "--" in front of it, remove the "--" to have the file be loaded; config files should be loaded after all modules are loaded; core files should be required by modules and not be present in this list;
Advanced-Start | This file is used to setup the map starting settings and the items players will start with
Bonuses | Lists all bonuses which can be used, name followed by min max
Chat-Reply | This file defines the different triggers for the chat bot
Compilatron | Config file for the compliatrons including where they spawn and what messages they show
Death-Logger | This config controls what happens when a player dies mostly about map markers and item collection; allow_teleport_to_body_command and allow_collect_bodies_command can be over ridden if command_auth_runtime_disable is present; if not present then the commands will not be loaded into the game
Discord-Alerts | Config file used to enable and disable different push messages for discord
Commands-Auth-Admin | This is a very simple config file which adds a admin only auth function; not much to change here its more so it can be enabled and disabled from ./config/file_loader.lua; either way you can change the requirements to be "admin" if you wanted to
Commands-Auth-Roles | This will make commands only work if the role has been allowed it in the role config
Commands-Color-Parse | This will make commands only work when a valid color from the presets has been selected
Commands-Parse | This file contains some common command param parse functions; this file is less of a config and more of a requirement but you may wish to change how some behave; as such you need to be confident with lua but you edit this config file; use Commands.add_parse('name',function(input, player, reject) end) to add a parse; see ./expcore/commands.lua for more details
Commands-Parse-Roles | Adds some parse functions that can be used with the role system
Commands-Auth-Runtime-Disable | This config for command auth allows commands to be globally enabled and disabled during runtime; this config adds Commands.disable and Commands.enable to enable and disable commands for all users
Permission-Groups | Use this file to add new permission groups to the game; start with Permission_Groups.new_group('name'); then use either :allow_all() or :disallow_all() to set the default for non specified actions; then use :allow{} and :disallow{} to specify certain actions to allow/disallow
Roles | This is the main config file for the role system; file includes defines for roles and role flags and default values
Autofill | This file contains all the different settings for the autofill system and gui
Player-List | Config for the different action buttons that show on the player list; each button has the button define(s) given along side an auth function, and optional reason callback; if a reason callback is used then Store.set(action_name_store,player.name,'BUTTON_NAME') should be called during on_click; buttons can be removed from the gui by commenting them out of the config at the bottom of this file; the key used for the name of the button is the permission name used by the role system;
Rockets | This file controls what will show in each section of the rocket info gui
Science | Config file for the science info gui
Tasks | Config file for the tasks gui
Warps | This file contains all the different settings for the warp system and gui
inventory_clear | Config to control when players items are removed, this is a list of event names that will trigger inventory clear
Pollution-Grading | This controls how pollution is viewed on the map
Popup-Messages | A combination of config settings for different popup values like chat and damage
Preset-Player-Colours | Preset colours that players get when they join the server, if not in the list then will be given a random colour (which isnt disallowed)
Preset-Player-Quickbar | Preset quickbar items that players can load
Repair | Config file for the repair command
Scorched-Earth | This file controls the placement/degrading of tiles as players build and walk
Spawn-Area | Used to config the spawn generation settings yes there is alot here i know just ignore the long tables at the end (they were generated with a command)
Statistics | A list of all tracked statistics and the events which trigger them
Warnings | Config file for the warning system, this is very similar to reports but is for the use of moderators rather than normal users.

## Modules

control | Please go to ./config if you want to change settings, each file is commented with what it does if it is not in ./config then you should not attempt to change it unless you know what you are doing all files which are loaded (including the config files) are present in ./config/file_loader.lua this file is the landing point for all scenarios please DO NOT edit directly, further comments are to aid development
modules.addons.station-auto-name | LuaPlayerBuiltEntityEventFilters Events.set_event_filter(defines.events.on_built_entity, {{filter = "name", name = "fast-inserter"}})
overrides.debug
overrides.math | Takes two points and calculates the slope of a line
overrides.table | Searches a table to remove a specific element without an index
utils.event | This Module allows for registering multiple handlers to the same event, overcoming the limitation of script.register.
utils.event_core | Do not use this function, use Event.add instead as it has safety checks.
utils.task | Threading simulation module Task.sleep()

## Topics

README.md
LICENSE