- [Issue and Pull Request Labels](#issue-and-pull-request-labels)
## Code of Conduct
@ -43,24 +44,24 @@ This project and everyone participating in it is governed by the [LinuxGSM Code
This section guides you through submitting a bug report for LinuxGSM. Following these guidelines help maintainers and the community understand your report 📝, reproduce the behaviour💻, and find any related reports 🔎.
Before creating bug reports, please check [this list](https://github.com/GameServerManagers/linuxgsm/blob/master/CONTRIBUTING.md#before-submitting-a-bug-report) as you might find out that you don’t need to create one. When you are creating a bug report, please [include as many details as possible](https://github.com/GameServerManagers/linuxgsm/blob/master/CONTRIBUTING.md#how-do-i-submit-a-good-bug-report). Fill out [the required template]([https://github.com/GameServerManagers/LinuxGSM/issues/new/choose](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose)), the information it asks for helps us resolve issues faster.
Before creating bug reports, please check [this list](https://github.com/GameServerManagers/linuxgsm/blob/master/CONTRIBUTING.md#before-submitting-a-bug-report) as you might find out that you don’t need to create one. When you are creating a bug report, please [include as many details as possible](https://github.com/GameServerManagers/linuxgsm/blob/master/CONTRIBUTING.md#how-do-i-submit-a-good-bug-report). Fill out [the required template](<[https://github.com/GameServerManagers/LinuxGSM/issues/new/choose](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose)>), the information it asks for helps us resolve issues faster.
#### Before Submitting A Bug Report
***Check the [documentation](https://docs.linuxgsm.com).** You might be able to find the cause of the problem and fix things yourself.
***Check the** [**support page**](https://linuxgsm.com/support) for links to other support options.
***Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
- **Check the [documentation](https://docs.linuxgsm.com).** You might be able to find the cause of the problem and fix things yourself.
- **Check the** [**support page**](https://linuxgsm.com/support) for links to other support options.
- **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
#### How Do I Submit A (Good) Bug Report?
Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue and provide the following information by filling in [the issues form](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose).
***Use a clear and descriptive title** for the issue to identify the problem.
***Complete the user story** to give a summary of the issue.
***Provide basic info** to help us understand the context of the issue.
***Provide further info** to give specifics and more detail.
***Give steps to reproduce** the issue, allowing developers to follow steps that lead to the issue.
***Explain what you expect** to happen, so we know what you think should occur.
- **Use a clear and descriptive title** for the issue to identify the problem.
- **Complete the user story** to give a summary of the issue.
- **Provide basic info** to help us understand the context of the issue.
- **Provide further info** to give specifics and more detail.
- **Give steps to reproduce** the issue, allowing developers to follow steps that lead to the issue.
- **Explain what you expect** to happen, so we know what you think should occur.
### 🎉Suggesting Features
@ -68,31 +69,34 @@ This section guides you through submitting a feature suggestion for LinuxGSM, in
#### Before Submitting An Feature Suggestion
***Check the** [**documentation**](https://docs.linuxgsm.com/%5D(https://docs.linuxgsm.com/)) to confirm that the enhancement doesn’t already exist.
***Check your** [**LinuxGSM version**](https://docs.linuxgsm.com/commands/update-lgsm)**.** A newer version of LinuxGSM may already have your enhancement.
***Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the enhancement has already been suggested. If it has **and the enhancement is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
- **Check the** [**documentation**](<https://docs.linuxgsm.com/%5D(https://docs.linuxgsm.com/)>) to confirm that the enhancement doesn’t already exist.
- **Check your** [**LinuxGSM version**](https://docs.linuxgsm.com/commands/update-lgsm)**.** A newer version of LinuxGSM may already have your enhancement.
- **Perform a** [**cursory search**](https://github.com/search?q=org:GameServerManagers%20type:issues&type=Issues) to see if the enhancement has already been suggested. If it has **and the enhancement is still open**, add a comment to the existing issue and give it a thumbs up instead of opening a new one.
#### How Do I Submit A (Good) Feature Suggestion?
Features are tracked as [GitHub issues](https://guides.github.com/features/issues/). Create an issue and provide the following information by filling in [the issues form](https://github.com/GameServerManagers/LinuxGSM/issues/new/choose).
***Use a clear and descriptive title** for the issue to identify the problem.
***Complete the user story** to give a summary of the issue.
***Provide basic info** to help us understand the context of the enhancement.
***Provide further info** to give specifics and more detail.
***Provide any further reading** materials that might assist in developing the enhancement.
- **Use a clear and descriptive title** for the issue to identify the problem.
- **Complete the user story** to give a summary of the issue.
- **Provide basic info** to help us understand the context of the enhancement.
- **Provide further info** to give specifics and more detail.
- **Provide any further reading** materials that might assist in developing the enhancement.
### 🎮 Game Server Requests
This section guides you through submitting a game server request for LinuxGSM, Following these guidelines help maintainers and the community understand your game server request 📝.
#### Before Submitting a Game Server Request
* **Check for existing** [**game server requests**](https://github.com/GameServerManagers/LinuxGSM/labels/type%3A%20game%20server%20request) to see if the new game server has already been suggested. If it has **and if the new game server is still open**, give it a thumbs up.
* **Check the game server is supported on Linux**, this does not include Wine servers which we do not support.
- **Check for existing** [**game server requests**](https://github.com/GameServerManagers/LinuxGSM/labels/type%3A%20game%20server%20request) to see if the new game server has already been suggested. If it has **and if the new game server is still open**, give it a thumbs up.
- **Check the game server is supported on Linux**, this does not include Wine servers which we do not support.
#### How Do I Submit A (Good) Game Server Request?
* The title should be as follows: **[Server Request] Game Name**
* **Provide Steam App ID** if applicable
* **Supply any documentation/how-to guides** for the game server.
- The title should be as follows: **[Server Request] Game Name**
- **Provide Steam App ID** if applicable
- **Supply any documentation/how-to guides** for the game server.
### 🎮 Game Server Specific Issues
@ -110,10 +114,10 @@ A [list](https://docs.linuxgsm.com/support/game-server) of known game developer
The process described here has several goals:
* Maintain LinuxGSM quality.
* Fix problems that are important to users.
* Engage the community in working toward the best possible LinuxGSM.
* Enable a sustainable system for LinuxGSM maintainers to review contributions.
- Maintain LinuxGSM quality.
- Fix problems that are important to users.
- Engage the community in working toward the best possible LinuxGSM.
- Enable a sustainable system for LinuxGSM maintainers to review contributions.
Please follow these steps to have your contribution considered by the maintainers:
@ -135,18 +139,18 @@ If applied, this commit will _your subject line here_
For example:
* If applied, this commit will **refactor subsystem X for readability**
* If applied, this commit will **update getting started documentation**
* If applied, this commit will **remove deprecated methods**
* If applied, this commit will **release version 1.0.0**
* If applied, this commit will **merge pull request #123 from user/branch**
- If applied, this commit will **refactor subsystem X for readability**
- If applied, this commit will **update getting started documentation**
- If applied, this commit will **remove deprecated methods**
- If applied, this commit will **release version 1.0.0**
- If applied, this commit will **merge pull request #123 from user/branch**
Notice how this doesn’t work for the other non-imperative forms:
* If applied, this commit will **fixed bug with Y**
* If applied, this commit will **change the behaviour of X**
* If applied, this commit will **more fixes for broken stuff**
* If applied, this commit will **sweet new API methods**
- If applied, this commit will **fixed bug with Y**
- If applied, this commit will **change the behaviour of X**
- If applied, this commit will **more fixes for broken stuff**
- If applied, this commit will **sweet new API methods**
Below is an example of the subject line for a pull request:
@ -157,10 +161,13 @@ Below is an example of the subject line for a pull request:
### Testing
#### Pull Request Status Checks
When a Pull Request is submitted, a series of status check tests are conducted. These tests will assess the code quality, complete CI tests etc. To get your PR merged these status checks must pass.
When a Pull Request is submitted, a series of status check tests are conducted. These tests will assess the code quality, complete CI tests etc. To get your PR merged these status checks must pass.
#### Test Environment
It is recommended that you have a testing environment available to test your code during development. To test your own code you must change some variables within the `linuxgsm.sh` file. This will force the use of your own code branch.
```bash
## GitHub Branch Select
# Allows for the use of different function files
@ -203,10 +210,11 @@ Highlights the LinuxGSM command the Issue/PR relates to.
Labels to help pinpoint what the issue or PR relates to.
# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer).
# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS.
mod_info_base_amxx=(MOD "amxmodx""AMX Mod X: Base""${amxxbaseurl}""${amxxbaselatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Counter-Strike 1.6;Day of Defeat;Team Fortress Classic;Natural Selection;The Specialists;Half-Life: Deathmatch;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod)")
# CS 1.6 (HL1) Engine Mods
mod_info_cs_amxx=(MOD "amxmodxcs""AMX Mod X: Counter-Strike""${amxxcsurl}""${amxxcslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Counter-Strike 1.6;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_cs_amxx=(MOD "amxmodxcs""AMX Mod X: Counter-Strike""${amxxcsurl}""${amxxcslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Counter-Strike 1.6;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
# DOD (HL1) Engine Mods
mod_info_dod_amxx=(MOD "amxmodxdod""AMX Mod X: Day of Defeat""${amxxdodurl}""${amxxdodlatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Day of Defeat;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_dod_amxx=(MOD "amxmodxdod""AMX Mod X: Day of Defeat""${amxxdodurl}""${amxxdodlatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Day of Defeat;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
# TFC (HL1) Engine Mods
mod_info_tfc_amxx=(MOD "amxmodxtfc""AMX Mod X: Team Fortress Classic""${amxxtfcurl}""${amxxtfclatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Team Fortress Classic;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_tfc_amxx=(MOD "amxmodxtfc""AMX Mod X: Team Fortress Classic""${amxxtfcurl}""${amxxtfclatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Team Fortress Classic;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
# NS (Natural Selection) (HL1) Engine Mods
mod_info_ns_amxx=(MOD "amxmodxns""AMX Mod X: Natural Selection""${amxxnsurl}""${amxxnslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Natural Selection;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_ns_amxx=(MOD "amxmodxns""AMX Mod X: Natural Selection""${amxxnsurl}""${amxxnslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""Natural Selection;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
# TS (The Specialists) (HL1) Engine Mods
mod_info_ts_amxx=(MOD "amxmodxts""AMX Mod X: The Specialists""${amxxtsurl}""${amxxtslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""The Specialists;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_ts_amxx=(MOD "amxmodxts""AMX Mod X: The Specialists""${amxxtsurl}""${amxxtslatestfile}""0""LowercaseOff""${systemdir}""addons/amxmodx/configs;""ENGINES""The Specialists;""NOTGAMES""https://www.amxmodx.org""Admin Features (requires Metamod & AMX Mod X: Base)")
mod_info_sourcemod=(MOD "sourcemod""SourceMod""${sourcemodurl}""${sourcemodlatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""source;""GAMES""NOTGAMES""http://www.sourcemod.net""Admin Features (requires Metamod: Source)")
mod_info_steamworks=(MOD "steamworks""SteamWorks""${steamworksurl}""${steamworkslatestfile}""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/KyleSanderson/SteamWorks""Exposing SteamWorks functions to SourcePawn")
mod_info_stripper=(MOD "stripper""Stripper Source""http://www.bailopan.net/stripper/snapshots/1.2/stripper-1.2.2-git129-linux.tar.gz""stripper-1.2.2-git129-linux.tar.gz""0""LowercaseOff""${systemdir}""addons/stripper/maps;""ENGINES""Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;""NOTGAMES""http://www.bailopan.net/stripper/""Add or remove objects from map (requires MetaMod)")
mod_info_sourcemod=(MOD "sourcemod""SourceMod""${sourcemodurl}""${sourcemodlatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""source;""GAMES""NOTGAMES""http://www.sourcemod.net""Admin Features (requires Metamod: Source)")
mod_info_steamworks=(MOD "steamworks""SteamWorks""${steamworksurl}""${steamworkslatestfile}""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/KyleSanderson/SteamWorks""Exposing SteamWorks functions to SourcePawn")
mod_info_stripper=(MOD "stripper""Stripper Source""http://www.bailopan.net/stripper/snapshots/1.2/stripper-1.2.2-git129-linux.tar.gz""stripper-1.2.2-git129-linux.tar.gz""0""LowercaseOff""${systemdir}""addons/stripper/maps;""ENGINES""Counter-Strike: Global Offensive;Counter-Strike: Source;Day of Defeat: Source;Half Life: Deathmatch;Half Life 2: Deathmatch;Insurgency;Left 4 Dead;Left 4 Dead 2;Nuclear Dawn;Team Fortress 2;""NOTGAMES""http://www.bailopan.net/stripper/""Add or remove objects from map (requires MetaMod)")
# CS:GO Mods
mod_info_gokz=(MOD "gokz""GOKZ""${gokzlatestlink}""${gokzlatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/KZGlobalTeam/gokz""GOKZ ${gokzlatestversion} - Implements the KZ game mode (requires SourceMod and MetaMod)")
mod_info_ttt=(MOD "ttt""Trouble in Terrorist Town""https://csgottt.com/downloads/ttt-latest-dev-${sourcemodversion}.zip""ttt-latest.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/Bara/TroubleinTerroristTown""Implements the TTT game mode (requires SourceMod and MetaMod)")
mod_info_get5=(MOD "get5""Get 5""${get5url}""${get5latestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/get5""Plugin for competitive matches/scrims (requires SourceMod and MetaMod)")
mod_info_prac=(MOD "prac""csgo practice mode""${csgopracticelatestlink}""${csgopracticelatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/csgo-practice-mode""Practice Mode is a sourcemod plugin for helping players/teams run practices.")
mod_info_pug=(MOD "pug""PUG""${csgopuglatestlink}""${csgopuglatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/csgo-pug-setup""plugin for setting up private pug/10man games")
mod_info_dhook=(MOD "dhook""dhook""https://forums.alliedmods.net/attachment.php?attachmentid=190123&d=1625050030""dhooks-2.2.0d17.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://forums.alliedmods.net/showpost.php?p=2588686&postcount=589""DHooks 2.2.0 - Required for GOKZ")
mod_info_movement=(MOD "movementapi""movementapi""${movementapilatestlink}""${movementapilatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/danzayau/MovementAPI""Movement API ${movementapilatestversion} - Required for GOKZ")
mod_info_cleaner=(MOD "cleaner""cleaner""https://github.com/e54385991/console-cleaner/archive/refs/heads/master.zip""console-cleaner.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/e54385991/console-cleaner""Console Cleaner - Optional for GOKZ")
mod_info_gokz=(MOD "gokz""GOKZ""${gokzlatestlink}""${gokzlatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/KZGlobalTeam/gokz""GOKZ ${gokzlatestversion} - Implements the KZ game mode (requires SourceMod and MetaMod)")
mod_info_ttt=(MOD "ttt""Trouble in Terrorist Town""https://csgottt.com/downloads/ttt-latest-dev-${sourcemodversion}.zip""ttt-latest.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/Bara/TroubleinTerroristTown""Implements the TTT game mode (requires SourceMod and MetaMod)")
mod_info_get5=(MOD "get5""Get 5""${get5url}""${get5latestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/get5""Plugin for competitive matches/scrims (requires SourceMod and MetaMod)")
mod_info_prac=(MOD "prac""csgo practice mode""${csgopracticelatestlink}""${csgopracticelatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/csgo-practice-mode""Practice Mode is a sourcemod plugin for helping players/teams run practices.")
mod_info_pug=(MOD "pug""PUG""${csgopuglatestlink}""${csgopuglatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/splewis/csgo-pug-setup""plugin for setting up private pug/10man games")
mod_info_dhook=(MOD "dhook""dhook""https://forums.alliedmods.net/attachment.php?attachmentid=190123&d=1625050030""dhooks-2.2.0d17.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://forums.alliedmods.net/showpost.php?p=2588686&postcount=589""DHooks 2.2.0 - Required for GOKZ")
mod_info_movement=(MOD "movementapi""movementapi""${movementapilatestlink}""${movementapilatestfile}""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/danzayau/MovementAPI""Movement API ${movementapilatestversion} - Required for GOKZ")
mod_info_cleaner=(MOD "cleaner""cleaner""https://github.com/e54385991/console-cleaner/archive/refs/heads/master.zip""console-cleaner.zip""0""LowercaseOff""${systemdir}""cfg;addons/sourcemod/configs;""ENGINES""Counter-Strike: Global Offensive;""NOTGAMES""https://github.com/e54385991/console-cleaner""Console Cleaner - Optional for GOKZ")
mod_info_utime=(MOD "utime""UTime""https://github.com/TeamUlysses/utime/archive/master.zip""utime-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://ulyssesmod.net""Keep track of players play time")
mod_info_uclip=(MOD "uclip""UClip""https://github.com/TeamUlysses/uclip/archive/master.zip""uclip-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://ulyssesmod.net""An alternative to noclip")
mod_info_acf_missiles=(MOD "acfmissiles""ACF Missiles""https://github.com/Bubbus/ACF-Missiles/archive/master.zip""acf-missiles-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Bubbus/ACF-Missiles""More missiles for ACF")
mod_info_advdupe2=(MOD "advdupe2""Advanced Duplicator 2""https://github.com/wiremod/advdupe2/archive/master.zip""advdupe2-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://www.wiremod.com""Save your constructions. Second version")
mod_info_pac3=(MOD "pac3""PAC3""https://github.com/CapsAdmin/pac3/archive/master.zip""pac3-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/CapsAdmin/pac3""Advanced player model customization")
mod_info_wiremodextras=(MOD "wiremod-extras""Wiremod Extras""https://github.com/wiremod/wire-extras/archive/master.zip""wire-extras-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/wiremod/wire-extras/""Addition to Wiremod, Extra Content")
mod_info_advduplicator=(MOD "advdupe1""Advanced Duplicator 1""https://github.com/wiremod/advduplicator/archive/master.zip""advduplicator-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/wiremod/advduplicator""Save your constructions. First version")
mod_info_controlsystemse2=(MOD "controlsystemse2""Control Systems E2""https://github.com/dvdvideo1234/controlsystemse2/archive/master.zip""controlsystemse2-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/ControlSystemsE2""PID controllers and fast traces for E2. Minor included in wire-extas")
mod_info_propcannontool=(MOD "propcannontool""Prop Cannon Tool""https://github.com/dvdvideo1234/propcannontool/archive/master.zip""propcannontool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/PropCannonTool""Cannon entity that can fire props. Supports wire")
mod_info_spinnertool=(MOD "spinnertool""Spinner Tool""https://github.com/dvdvideo1234/spinnertool/archive/master.zip""spinnertool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/SpinnerTool""Torque lever controlled spinner. Supports wire")
mod_info_surfacefrictiontool=(MOD "surfacefrictiontool""Surface Friction Tool""https://github.com/dvdvideo1234/surfacefrictiontool/archive/master.zip""surfacefrictiontool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/SurfaceFrictionTool""Controls the surface friction of a prop")
mod_info_magneticdipole=(MOD "magneticdipole""Magnetic Dipole""https://github.com/dvdvideo1234/magneticdipole/archive/master.zip""magneticdipole-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/MagneticDipole""Magnet entity that runs forces on its poles. Supports wire")
mod_info_environmentorganizer=(MOD "environmentorganizer""Environment Organizer""https://github.com/dvdvideo1234/environmentorganizer/archive/master.zip""environmentorganizer-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/EnvironmentOrganizer""Installs routines designed for server settings adjustment")
mod_info_precision_alignment=(MOD "precision-alignment""Precision Alignment""https://github.com/Mista-Tea/precision-alignment/archive/master.zip""precision-alignment-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/precision-alignment""Creates precise constraints and aligments")
mod_info_improved_stacker=(MOD "improved-stacker""Improved Stacker""https://github.com/Mista-Tea/improved-stacker/archive/master.zip""improved-stacker-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-stacker""Stacks entities in the direction chosen")
mod_info_improved_weight=(MOD "improved-weight""Improved Weight""https://github.com/Mista-Tea/improved-weight/archive/master.zip""improved-weight-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-weight""Weight tool but with more features")
mod_info_improved_antinoclip=(MOD "improved-antinoclip""Improved Antinoclip""https://github.com/Mista-Tea/improved-antinoclip/archive/master.zip""improved-antinoclip-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-antinoclip""Controls clipping trough an object")
mod_info_darkrp=(MOD "darkrp""DarkRP""https://github.com/FPtje/DarkRP/archive/master.zip""darkrp-master.zip""0""LowercaseOn""${systemdir}/gamemodes""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://darkrp.com""Most popular gamemode")
mod_info_utime=(MOD "utime""UTime""https://github.com/TeamUlysses/utime/archive/master.zip""utime-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://ulyssesmod.net""Keep track of players play time")
mod_info_uclip=(MOD "uclip""UClip""https://github.com/TeamUlysses/uclip/archive/master.zip""uclip-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://ulyssesmod.net""An alternative to noclip")
mod_info_acf_missiles=(MOD "acfmissiles""ACF Missiles""https://github.com/Bubbus/ACF-Missiles/archive/master.zip""acf-missiles-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Bubbus/ACF-Missiles""More missiles for ACF")
mod_info_advdupe2=(MOD "advdupe2""Advanced Duplicator 2""https://github.com/wiremod/advdupe2/archive/master.zip""advdupe2-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://www.wiremod.com""Save your constructions. Second version")
mod_info_pac3=(MOD "pac3""PAC3""https://github.com/CapsAdmin/pac3/archive/master.zip""pac3-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/CapsAdmin/pac3""Advanced player model customization")
mod_info_wiremodextras=(MOD "wiremod-extras""Wiremod Extras""https://github.com/wiremod/wire-extras/archive/master.zip""wire-extras-master.zip""0""LowercaseOff""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/wiremod/wire-extras/""Addition to Wiremod, Extra Content")
mod_info_advduplicator=(MOD "advdupe1""Advanced Duplicator 1""https://github.com/wiremod/advduplicator/archive/master.zip""advduplicator-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/wiremod/advduplicator""Save your constructions. First version")
mod_info_controlsystemse2=(MOD "controlsystemse2""Control Systems E2""https://github.com/dvdvideo1234/controlsystemse2/archive/master.zip""controlsystemse2-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/ControlSystemsE2""PID controllers and fast traces for E2. Minor included in wire-extas")
mod_info_propcannontool=(MOD "propcannontool""Prop Cannon Tool""https://github.com/dvdvideo1234/propcannontool/archive/master.zip""propcannontool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/PropCannonTool""Cannon entity that can fire props. Supports wire")
mod_info_spinnertool=(MOD "spinnertool""Spinner Tool""https://github.com/dvdvideo1234/spinnertool/archive/master.zip""spinnertool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/SpinnerTool""Torque lever controlled spinner. Supports wire")
mod_info_surfacefrictiontool=(MOD "surfacefrictiontool""Surface Friction Tool""https://github.com/dvdvideo1234/surfacefrictiontool/archive/master.zip""surfacefrictiontool-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/SurfaceFrictionTool""Controls the surface friction of a prop")
mod_info_magneticdipole=(MOD "magneticdipole""Magnetic Dipole""https://github.com/dvdvideo1234/magneticdipole/archive/master.zip""magneticdipole-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/MagneticDipole""Magnet entity that runs forces on its poles. Supports wire")
mod_info_environmentorganizer=(MOD "environmentorganizer""Environment Organizer""https://github.com/dvdvideo1234/environmentorganizer/archive/master.zip""environmentorganizer-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/EnvironmentOrganizer""Installs routines designed for server settings adjustment")
mod_info_precision_alignment=(MOD "precision-alignment""Precision Alignment""https://github.com/Mista-Tea/precision-alignment/archive/master.zip""precision-alignment-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/precision-alignment""Creates precise constraints and aligments")
mod_info_improved_stacker=(MOD "improved-stacker""Improved Stacker""https://github.com/Mista-Tea/improved-stacker/archive/master.zip""improved-stacker-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-stacker""Stacks entities in the direction chosen")
mod_info_improved_weight=(MOD "improved-weight""Improved Weight""https://github.com/Mista-Tea/improved-weight/archive/master.zip""improved-weight-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-weight""Weight tool but with more features")
mod_info_improved_antinoclip=(MOD "improved-antinoclip""Improved Antinoclip""https://github.com/Mista-Tea/improved-antinoclip/archive/master.zip""improved-antinoclip-master.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/Mista-Tea/improved-antinoclip""Controls clipping trough an object")
mod_info_darkrp=(MOD "darkrp""DarkRP""https://github.com/FPtje/DarkRP/archive/master.zip""darkrp-master.zip""0""LowercaseOn""${systemdir}/gamemodes""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""http://darkrp.com""Most popular gamemode")
mod_info_laserstool=(MOD "laserstool""Laser STool""https://github.com/dvdvideo1234/laserstool/archive/main.zip""laserstool-main.zip""0""LowercaseOn""${systemdir}/addons""OVERWRITE""ENGINES""Garry's Mod;""NOTGAMES""https://github.com/dvdvideo1234/LaserSTool""Scripted tool that spawns laser entities, simulates light rays and even kill players")
# Oxidemod
mod_info_rustoxide=(MOD "rustoxide""Oxide for Rust""${oxiderustlatestlink}""Oxide.Rust-linux.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Rust;""NOTGAMES""https://umod.org/games/rust""Allows for the use of plugins")
mod_info_hwoxide=(MOD "hwoxide""Oxide for Hurtworld""${oxidehurtworldlatestlink}""Oxide.Hurtworld.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Hurtworld;""NOTGAMES""https://umod.org/games/hurtworld""Allows for the use of plugins")
mod_info_sdtdoxide=(MOD "sdtdoxide""Oxide for 7 Days To Die""${oxidesdtdlatestlink}""Oxide.SevenDaysToDie.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""7 Days To Die;""NOTGAMES""https://umod.org/games/7-days-to-die""Allows for the use of plugins")
mod_info_rustoxide=(MOD "rustoxide""Oxide for Rust""${oxiderustlatestlink}""Oxide.Rust-linux.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Rust;""NOTGAMES""https://umod.org/games/rust""Allows for the use of plugins")
mod_info_hwoxide=(MOD "hwoxide""Oxide for Hurtworld""${oxidehurtworldlatestlink}""Oxide.Hurtworld.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Hurtworld;""NOTGAMES""https://umod.org/games/hurtworld""Allows for the use of plugins")
mod_info_sdtdoxide=(MOD "sdtdoxide""Oxide for 7 Days To Die""${oxidesdtdlatestlink}""Oxide.SevenDaysToDie.zip""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""7 Days To Die;""NOTGAMES""https://umod.org/games/7-days-to-die""Allows for the use of plugins")
# ValheimPlus
mod_info_valheimplus=(MOD "valheimplus""Valheim PLUS""${valeimpluslatestlink}""ValheimPlus.tar.gz""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Valheim;""NOTGAMES""https://github.com/valheimPlus/ValheimPlus""Mod to improve Valheim gameplay")
mod_info_valheimplus=(MOD "valheimplus""Valheim PLUS""${valeimpluslatestlink}""ValheimPlus.tar.gz""0""LowercaseOff""${systemdir}""OVERWRITE""ENGINES""Valheim;""NOTGAMES""https://github.com/valheimPlus/ValheimPlus""Mod to improve Valheim gameplay")
# REQUIRED: Set all mods info into the global array