Explorar el Código

Merge remote-tracking branch 'refs/remotes/origin/master' into development

# Conflicts:
#	FistfulOfFrags/cfg/lgsm-default.cfg
Daniel Gibbs hace 9 años
padre
commit
31dbb04b42
Se han modificado 94 ficheros con 1621 adiciones y 205 borrados
  1. 2 2
      7DaysToDie/sdtdserver
  2. 3 3
      ARKSurvivalEvolved/arkserver
  3. 2 2
      Arma3/arma3server
  4. 141 0
      Battlefield1942/bf1942server
  5. 2 2
      BlackMesa/bmdmserver
  6. 2 2
      BladeSymphony/bsserver
  7. 2 2
      BrainBread2/bb2server
  8. 2 2
      CodenameCURE/ccserver
  9. 2 2
      CounterStrike/csserver
  10. 2 2
      CounterStrikeConditionZero/csczserver
  11. 2 2
      CounterStrikeGlobalOffensive/csgoserver
  12. 8 3
      CounterStrikeSource/cssserver
  13. 2 2
      DayOfDefeat/dodserver
  14. 2 2
      DayOfDefeatSource/dodsserver
  15. 2 2
      DayOfInfamy/doiserver
  16. 2 2
      DeathmatchClassic/dmcserver
  17. 2 2
      DontStarveTogether/dstserver
  18. 2 2
      DoubleActionBoogaloo/dabserver
  19. 2 2
      EmpiresMod/emserver
  20. 125 0
      EnemyTerritory/cfg/lgsm-default.cfg
  21. 143 0
      EnemyTerritory/etserver
  22. 4 4
      FistfulOfFrags/cfg/lgsm-default.cfg
  23. 2 2
      FistfulOfFrags/fofserver
  24. 2 2
      GarrysMod/gmodserver
  25. 2 2
      GoldenEyeSource/gesserver
  26. 2 2
      HalfLife2Deathmatch/hl2dmserver
  27. 2 2
      HalfLifeDeathmatch/hldmserver
  28. 2 2
      HalfLifeDeathmatchSource/hldmsserver
  29. 2 2
      Hurtworld/hwserver
  30. 2 2
      Insurgency/insserver
  31. 2 2
      JustCause2/jc2server
  32. 2 2
      KillingFloor/kfserver
  33. 2 2
      Left4Dead/l4dserver
  34. 2 2
      Left4Dead2/l4d2server
  35. 40 0
      Minecraft/cfg/lgsm-default.ini
  36. 142 0
      Minecraft/mcserver
  37. 2 2
      Mumble/mumbleserver
  38. 2 2
      NS2Combat/ns2cserver
  39. 2 2
      NaturalSelection2/ns2server
  40. 2 2
      NoMoreRoomInHell/nmrihserver
  41. 2 2
      OpposingForce/opforserver
  42. 2 2
      PiratesVikingandKnightsII/pvkiiserver
  43. 2 2
      ProjectZomboid/pzserver
  44. 2 2
      QuakeLive/qlserver
  45. 11 11
      README.md
  46. 2 2
      RedOrchestra/roserver
  47. 2 2
      Ricochet/ricochetserver
  48. 1 1
      Rust/cfg/lgsm-default.cfg
  49. 2 2
      Rust/rustserver
  50. 3 3
      SeriousSam3BFE/ss3sserver
  51. 2 2
      Starbound/sbserver
  52. 2 2
      SvenCoop/svencoopserver
  53. 2 2
      TeamFortress2/tf2server
  54. 2 2
      TeamFortressClassic/tfcserver
  55. 2 2
      TeamSpeak3/ts3server
  56. 2 2
      Teeworlds/twserver
  57. 2 2
      Terraria/terrariaserver
  58. 3 0
      UnrealTournament/cfg/Engine.ini
  59. 4 0
      UnrealTournament/cfg/Game.ini
  60. 147 0
      UnrealTournament/utserver
  61. 2 2
      UnrealTournament2004/ut2k4server
  62. 155 0
      UnrealTournament3/ut3server
  63. 2 2
      UnrealTournament99/ut99server
  64. 2 2
      functions/core_functions.sh
  65. 21 12
      lgsm/functions/check_deps.sh
  66. 1 1
      lgsm/functions/check_glibc.sh
  67. 2 2
      lgsm/functions/check_ip.sh
  68. 37 12
      lgsm/functions/check_permissions.sh
  69. 1 1
      lgsm/functions/check_steamcmd.sh
  70. 5 0
      lgsm/functions/check_system_requirements.sh
  71. 18 4
      lgsm/functions/command_details.sh
  72. 2 2
      lgsm/functions/command_fastdl.sh
  73. 1 1
      lgsm/functions/command_install.sh
  74. 33 3
      lgsm/functions/command_stop.sh
  75. 1 1
      lgsm/functions/command_ts3_server_pass.sh
  76. 2 0
      lgsm/functions/command_update.sh
  77. 4 2
      lgsm/functions/core_dl.sh
  78. 14 0
      lgsm/functions/core_functions.sh
  79. 78 14
      lgsm/functions/core_getopt.sh
  80. 5 5
      lgsm/functions/core_messages.sh
  81. 6 0
      lgsm/functions/fix.sh
  82. 14 0
      lgsm/functions/fix_ut.sh
  83. 44 9
      lgsm/functions/info_config.sh
  84. 4 4
      lgsm/functions/info_distro.sh
  85. 18 0
      lgsm/functions/info_glibc.sh
  86. 73 1
      lgsm/functions/install_config.sh
  87. 1 1
      lgsm/functions/install_gslt.sh
  88. 33 0
      lgsm/functions/install_minecraft_eula.sh
  89. 12 1
      lgsm/functions/install_server_files.sh
  90. 157 0
      lgsm/functions/update_minecraft.sh
  91. 1 1
      lgsm/functions/update_mumble.sh
  92. 1 1
      lgsm/functions/update_ts3.sh
  93. 2 2
      tests/tests_jc2server.sh
  94. 2 2
      tests/tests_ts3server.sh

+ 2 - 2
7DaysToDie/sdtdserver

@@ -43,8 +43,8 @@ parms="-logfile ${gamelogdir}/output_log__`date +%Y-%m-%d__%H-%M-%S`.txt -quit -
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 3 - 3
ARKSurvivalEvolved/arkserver

@@ -40,7 +40,7 @@ ip="0.0.0.0"
 updateonstart="off"
 
 fn_parms(){
-parms="TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}"
+parms="\"TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${maxplayers}?QueryPort=${queryport}?RCONPort=${rconport}?Port=${port}?ServerAdminPassword=${rconpassword}\""
 }
 
 #### Advanced Variables ####
@@ -48,8 +48,8 @@ parms="TheIsland?listen?MultiHome=${ip}?SessionName=${servername}?MaxPlayers=${m
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Arma3/arma3server

@@ -59,8 +59,8 @@ bepath=""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 141 - 0
Battlefield1942/bf1942server

@@ -0,0 +1,141 @@
+#!/bin/bash
+# Battlefield: 1942
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+ip="0.0.0.0"
+
+fn_parms(){
+parms=" +hostServer 1 +dedicated 1"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="dgibbs64"
+githubrepo="linuxgsm"
+githubbranch="master"
+
+# Server Details
+servicename="bf1942-server"
+gamename="Battlefield: 1942"
+engine="refractor"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}"
+executabledir="${systemdir}"
+executable="./start.sh"
+servercfg="serversettings.con"
+servercfgdir="${systemdir}/mods/bf1942/settings"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 2 - 2
BlackMesa/bmdmserver

@@ -53,8 +53,8 @@ parms="-game bms -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
BladeSymphony/bsserver

@@ -48,8 +48,8 @@ parms="-autoupdate -strictportbind -ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
BrainBread2/bb2server

@@ -53,8 +53,8 @@ parms="-game brainbread2 -insecure -strictportbind -ip ${ip} -port ${port} +clie
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
CodenameCURE/ccserver

@@ -48,8 +48,8 @@ parms="-game cure -insecure -strictportbind -ip ${ip} -port ${port} +clientport
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
CounterStrike/csserver

@@ -47,8 +47,8 @@ parms="-game cstrike -strictportbind +ip ${ip} -port ${port} +clientport ${clien
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
CounterStrikeConditionZero/csczserver

@@ -47,8 +47,8 @@ parms="-game czero -strictportbind +ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
CounterStrikeGlobalOffensive/csgoserver

@@ -71,8 +71,8 @@ parms="-game csgo -usercon -strictportbind -ip ${ip} -port ${port} +clientport $
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 8 - 3
CounterStrikeSource/cssserver

@@ -38,9 +38,14 @@ clientport="27005"
 ip="0.0.0.0"
 updateonstart="off"
 
+# Required: Game Server Login Token
+# GSLT is required for running a public server.
+# More info: https://gameservermanagers.com/gslt
+gslt=""
+
 # https://developer.valvesoftware.com/wiki/Command_Line_Options#Source_Dedicated_Server
 fn_parms(){
-parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
+parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_port ${sourcetvport} +sv_setsteamaccount ${gslt} +map ${defaultmap} +servercfgfile ${servercfg} -maxplayers ${maxplayers}"
 }
 
 #### Advanced Variables ####
@@ -48,8 +53,8 @@ parms="-game cstrike -strictportbind -ip ${ip} -port ${port} +clientport ${clien
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DayOfDefeat/dodserver

@@ -47,8 +47,8 @@ parms="-game dod -strictportbind +ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DayOfDefeatSource/dodsserver

@@ -48,8 +48,8 @@ parms="-game dod -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DayOfInfamy/doiserver

@@ -50,8 +50,8 @@ parms="-game doi -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DeathmatchClassic/dmcserver

@@ -47,8 +47,8 @@ parms="-game dmc -strictportbind +ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DontStarveTogether/dstserver

@@ -46,8 +46,8 @@ parms="-console -cluster MyDediServer -shard Master"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
DoubleActionBoogaloo/dabserver

@@ -48,8 +48,8 @@ parms="-strictportbind -ip ${ip} -port ${port} +clientport ${clientport} +tv_por
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
EmpiresMod/emserver

@@ -53,8 +53,8 @@ parms="-game empires -strictportbind -ip ${ip} -port ${port} +clientport ${clien
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 125 - 0
EnemyTerritory/cfg/lgsm-default.cfg

@@ -0,0 +1,125 @@
+set dedicated "2"				// 1: dedicated server for lan 2: dedicated server for internet
+// set net_ip ""				// set to override the default IP ET uses
+// set net_port "27960"				// set to override the default port ET uses
+
+// PASSWORDS & CLIENTS 
+
+set sv_maxclients "20"				// number of players including private slots
+set g_password ""				// set to password protect the server
+set sv_privateclients "4"			// if set > 0, then this number of client slots will be reserved for connections
+set sv_privatepassword ""			// that have "password" set to the value of "sv_privatePassword"
+set rconpassword "<rconpassword>"				// remote console access password
+set refereePassword ""				// referee status password
+
+// DL, RATE
+
+set sv_maxRate "13000"				// 10000 standard but poor for ET 
+set sv_dl_maxRate "42000"			// increase/decerease if you have plenty/little spare bandwidth 
+set sv_allowDownload "0"        			// global toggle for both legacy download and web download
+set sv_wwwDownload "0"				// toggle to enable web download
+set sv_wwwBaseURL "" 				// base URL for redirection
+set sv_wwwDlDisconnected "0"			// tell clients to perform their downloads while disconnected from the server
+set sv_wwwFallbackURL ""			// URL to send to if an http/ftp fails or is refused client side
+
+// MOTD ETC
+
+set sv_hostname "<hostname>" 			// name of server here
+set server_motd0 " ^NEnemy Territory ^7MOTD "	// message in right corner of join screen here
+set server_motd1 ""
+set server_motd2 ""
+set server_motd3 ""
+set server_motd4 ""
+set server_motd5 ""
+
+// MISC SETTINGS
+
+set g_heavyWeaponRestriction "100"
+set g_antilag "1"
+set g_altStopwatchMode "0"
+set g_autofireteams "1"
+set g_complaintlimit "6"
+set g_ipcomplaintlimit "3"
+set g_fastres "0"
+set g_friendlyFire "1"
+//set g_gametype "4"				// Game type should be set from map rotation script
+set g_minGameClients "8"
+set g_maxlives "0"
+set g_alliedmaxlives "0"
+set g_axismaxlives "0"
+set g_teamforcebalance "1"
+set g_noTeamSwitching "0"
+set g_voiceChatsAllowed "4"
+set g_doWarmup "0"
+set g_warmup "30"
+set g_spectatorInactivity "0"
+set sv_floodProtect "1"
+set sv_allowDownload "1"
+set sv_pure "1"
+set sv_minping "0"
+set sv_maxping "0"
+set match_latejoin "1"
+set match_minplayers "4"
+set match_mutespecs "0"
+set match_readypercent "100"
+set match_timeoutcount "0"
+set match_warmupDamage "1"
+set team_maxplayers "0"
+set team_nocontrols "1"
+set pmove_fixed "0"
+set pmove_msec "8"
+
+// LMS ONLY SETTINGS
+
+set g_lms_teamForceBalance "1"
+set g_lms_roundlimit "3"
+set g_lms_matchlimit "2"
+set g_lms_currentMatch "0"
+set g_lms_lockTeams "0"
+set g_lms_followTeamOnly "1"
+
+// VOTING
+
+set g_allowVote "1"
+set vote_limit "5"
+set vote_percent "50"
+set vote_allow_comp "1"
+set vote_allow_gametype "1"
+set vote_allow_kick "1"
+set vote_allow_map "1"
+set vote_allow_matchreset "1"
+set vote_allow_mutespecs "1"
+set vote_allow_nextmap "1"
+set vote_allow_pub "1"
+set vote_allow_referee "0"
+set vote_allow_shuffleteams "1"
+set vote_allow_swapteams "1"
+set vote_allow_friendlyfire "1"
+set vote_allow_timelimit "0"
+set vote_allow_warmupdamage "1"
+set vote_allow_antilag "1"
+set vote_allow_balancedteams "1"
+set vote_allow_muting "1"
+
+// PUNKBUSTER
+
+// sv_punkbuster is a readonly variable. Use +set sv_punkbuster on command line or use the command pb_sv_enable in the console
+//pb_sv_enable
+
+// LOGGING
+
+set g_log "etserver.log" 			// Game logging
+set g_logsync 0
+set logfile 0 					// Console logging ( 1: enable 2: enable and sync )
+
+// MAP ROTATION
+
+exec campaigncycle.cfg				// Campaign mode
+//exec objectivecycle.cfg			// Objective mode
+//exec lmscycle.cfg				// Last Man Standing mode
+
+// WATCHDOG
+
+// in case the game dies with an ERR_DROP
+// or any situation leading to server running with no map
+//set com_watchdog 10				// defaults 60
+set com_watchdog_cmd "exec campaigncycle.cfg"	// defaults to quit

+ 143 - 0
EnemyTerritory/etserver

@@ -0,0 +1,143 @@
+#!/bin/bash
+# Enemy Territory
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+ip="0.0.0.0"
+port="27960"
+
+fn_parms(){
+	parms="+set net_strict 1 +set net_ip ${ip} +set net_port ${port} +set fs_homepath ${filesdir} +exec ${servicename}.cfg"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+# Server Details
+servicename="et-server"
+gamename="Enemy Territory"
+engine="idtech3"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}"
+executabledir="${systemdir}"
+executable="./etded"
+servercfg="${servicename}.cfg"
+servercfgdir="${systemdir}/etmain"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+servercfgdefault="${servercfgdir}/lgsm-default.cfg"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 4 - 4
FistfulOfFrags/cfg/lgsm-default.cfg

@@ -1,7 +1,7 @@
 // ****************************************************************************
 //                                                                            *
 //     Fistful of Frags - server.cfg                                          *
-//     Version 100116                                                         *
+//     Version 240716                                                         *
 //                                                                            *
 // ****************************************************************************
 
@@ -25,7 +25,7 @@ sv_lan 0
 
 // ............................... Map Cycles ............................... //
 // info: There are several predefined mapcycles available that are listed below.
-// You can also create your own custom mapcycle. 
+// You can also create your own custom mapcycle.
 
 // "mapcycle.txt" - All Shootout/2 Team Shootout/4 Team Shootout maps
 // "mapcycle_12.txt" - All 12 slot maps for Shootout/2 Team Shootout/4 Team Shootout
@@ -50,7 +50,7 @@ mp_timelimit 15
 // 3 = Break Bad
 // 4 = Elimination
 // 5 = Versus
-fof_sv_currentmode 1 
+fof_sv_currentmode 1
 
 // Teamplay
 // 0 = Free-for-all
@@ -98,7 +98,7 @@ sv_downloadurl ""
 // personal banlist based on user IDs.
 exec banned_user.cfg
 
-// personal banlist based on user IPs.	
+// personal banlist based on user IPs.
 exec banned_ip.cfg
 
 writeid

+ 2 - 2
FistfulOfFrags/fofserver

@@ -48,8 +48,8 @@ parms="-game fof -strictportbind -ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
GarrysMod/gmodserver

@@ -69,8 +69,8 @@ parms="-game garrysmod -strictportbind -ip ${ip} -port ${port} -tickrate ${tickr
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
GoldenEyeSource/gesserver

@@ -49,8 +49,8 @@ parms="-game gesource -strictportbind -ip ${ip} -port ${port} +clientport ${clie
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam - 2007 SDK

+ 2 - 2
HalfLife2Deathmatch/hl2dmserver

@@ -48,8 +48,8 @@ parms="-game hl2mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
HalfLifeDeathmatch/hldmserver

@@ -47,8 +47,8 @@ parms="-game valve -strictportbind +ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
HalfLifeDeathmatchSource/hldmsserver

@@ -48,8 +48,8 @@ parms="-game hl1mp -strictportbind -ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Hurtworld/hwserver

@@ -62,8 +62,8 @@ parms="-batchmode -nographics -exec \"host ${port} ${map} ${loadsave};queryport
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Insurgency/insserver

@@ -50,8 +50,8 @@ parms="-game insurgency -strictportbind -ip ${ip} -port ${port} +clientport ${cl
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
JustCause2/jc2server

@@ -42,8 +42,8 @@ parms=""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
KillingFloor/kfserver

@@ -47,8 +47,8 @@ parms="server ${defaultmap}?game=KFmod.KFGameType?VACSecured=true -nohomedir ini
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Left4Dead/l4dserver

@@ -48,8 +48,8 @@ parms="-game left4dead -strictportbind -ip ${ip} -port ${port} +clientport ${cli
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Left4Dead2/l4d2server

@@ -47,8 +47,8 @@ parms="-game left4dead2 -strictportbind -ip ${ip} -port ${port} +clientport ${cl
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 40 - 0
Minecraft/cfg/lgsm-default.ini

@@ -0,0 +1,40 @@
+#Minecraft server properties (LGSM 210516)
+#Sat Aug 20 17:30:15 CEST 2016
+allow-flight=false
+allow-nether=true
+announce-player-achievements=true
+difficulty=1
+enable-command-block=false
+enable-query=false
+enable-rcon=false
+force-gamemode=false
+gamemode=0
+generate-structures=true
+generator-settings=
+hardcore=false
+level-name=world
+level-seed=
+level-type=DEFAULT
+max-build-height=256
+max-players=20
+max-tick-time=60000
+max-world-size=29999984
+motd=A Minecraft Server
+network-compression-threshold=256
+online-mode=true
+op-permission-level=4
+player-idle-timeout=0
+pvp=true
+rcon.password=
+rcon.port=25575
+resource-pack-sha1=
+resource-pack=
+server-ip=
+server-port=25565
+snooper-enabled=true
+spawn-animals=true
+spawn-monsters=true
+spawn-npcs=true
+use-native-transport=true
+view-distance=10
+white-list=false

+ 142 - 0
Minecraft/mcserver

@@ -0,0 +1,142 @@
+#!/bin/bash
+# Minecraft
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+        exec 5>dev-debug.log
+        BASH_XTRACEFD="5"
+        set -x
+fi
+
+version="210816"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+updateonstart="off"
+javaram="1024" # -Xmx$1024M
+
+fn_parms(){
+parms="nogui"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+# Server Details
+servicename="mc-server"
+gamename="Minecraft"
+engine="lwjgl2"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}"
+executabledir="${filesdir}"
+executable="java -Xmx${javaram}M -jar minecraft_server.jar"
+servercfg="server.properties"
+servercfgdir="${filesdir}"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+servercfgdefault="${servercfgdir}/lgsm-default.ini"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${systemdir}/logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+        if [ ! -d "${filedir}" ]; then
+                mkdir -p "${filedir}"
+        fi
+        echo -e "    fetching ${filename}...\c"
+        # Check curl exists and use available path
+        curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+        for curlcmd in ${curlpaths}
+        do
+                if [ -x "${curlcmd}" ]; then
+                        break
+                fi
+        done
+        # If curl exists download file
+        if [ "$(basename ${curlcmd})" == "curl" ]; then
+                curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+                if [ $? -ne 0 ]; then
+                        echo -e "\e[0;31mFAIL\e[0m\n"
+                        echo "${curlfetch}"
+                        echo -e "${githuburl}\n"
+                        exit 1
+                else
+                        echo -e "\e[0;32mOK\e[0m"
+                fi
+        else
+                echo -e "\e[0;31mFAIL\e[0m\n"
+                echo "Curl is not installed!"
+                echo -e ""
+                exit 1
+        fi
+        chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 2 - 2
Mumble/mumbleserver

@@ -38,8 +38,8 @@ parms="-fg -ini ${servercfgfullpath}"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 

+ 2 - 2
NS2Combat/ns2cserver

@@ -55,8 +55,8 @@ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
NaturalSelection2/ns2server

@@ -55,8 +55,8 @@ parms="-name \"${servername}\" -port ${port} -webadmin -webdomain ${ip} -webuser
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
NoMoreRoomInHell/nmrihserver

@@ -53,8 +53,8 @@ parms="-game nmrih -insecure -strictportbind -ip ${ip} -port ${port} +clientport
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
OpposingForce/opforserver

@@ -47,8 +47,8 @@ parms="-game gearbox -strictportbind +ip ${ip} -port ${port} +clientport ${clien
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
PiratesVikingandKnightsII/pvkiiserver

@@ -48,8 +48,8 @@ parms="-game pvkii -strictportbind -ip ${ip} -port ${port} +clientport ${clientp
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
ProjectZomboid/pzserver

@@ -44,8 +44,8 @@ parms="-ip ${ip} -adminpassword \"${adminpassword}\""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
QuakeLive/qlserver

@@ -51,8 +51,8 @@ fn_parms(){
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 11 - 11
README.md

@@ -1,8 +1,8 @@
 <h1>Linux Game Server Managers_</h1>
-<a href="https://gameservermanagers.com"><img src="https://github.com/dgibbs64/linuxgsm/blob/master/images/logo/lgsm-full-light.png" alt="linux Game Server Managers" width="600" /></a>
+<a href="https://gameservermanagers.com"><img src="https://github.com/GameServerManagers/LinuxGSM/blob/master/images/logo/lgsm-full-light.png" alt="linux Game Server Managers" width="600" /></a>
 
-[![Build Status](https://travis-ci.org/dgibbs64/linuxgsm.svg?branch=master)](https://travis-ci.org/dgibbs64/linuxgsm)
-[![Under Development](https://badge.waffle.io/dgibbs64/linuxgsm.svg?label=Under%20Development&title=Under%20Development)](http://waffle.io/dgibbs64/linuxgsm)
+[![Build Status](https://travis-ci.org/GameServerManagers/LinuxGSM.svg?branch=master)](https://travis-ci.org/GameServerManagers/LinuxGSM)
+[![Under Development](https://badge.waffle.io/GameServerManagers/LinuxGSM.svg?label=Under%20Development&title=Under%20Development)](http://waffle.io/GameServerManagers/LinuxGSM)
 
 The Linux Game Server Managers are command line tools for quick, simple deployment and management of various dedicated game servers and voice alert servers.
 
@@ -29,25 +29,25 @@ The Linux Game Server Managers are tested to work on the following Linux distros
 Other distros are likely to work but are not fully tested.
 <h3>Specific Requirements</h3>
 <ul>
-	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki/Glibc">GLIBC</a> >= 2.15 recommended [<a href="https://github.com/dgibbs64/linuxgsm/wiki/Glibc#server-requirements">specific requirements</a>].</li>
-	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki/Tmux">Tmux</a> >= 1.6 recommended (Avoid Tmux 1.8).</li>
+	<li><a href="https://github.com/GameServerManagers/LinuxGSM/wiki/Glibc">GLIBC</a> >= 2.15 recommended [<a href="https://github.com/GameServerManagers/LinuxGSM/wiki/Glibc#server-requirements">specific requirements</a>].</li>
+	<li><a href="https://github.com/GameServerManagers/LinuxGSM/wiki/Tmux">Tmux</a> >= 1.6 recommended (Avoid Tmux 1.8).</li>
 </ul>
 <h2>FAQ</h2>
 All FAQ can be found here.
 
-<a href="https://github.com/dgibbs64/linuxgsm/wiki/FAQ">https://github.com/dgibbs64/linuxgsm/wiki/FAQ</a>
+<a href="https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ">https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ</a>
 <h2>Donate</h2>
-If you want to donate to the project you can via PayPal, Flattr or Gratipay. I have had a may kind people show their support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers!
+If you want to donate to the project you can via PayPal. I have had a may kind people show their support by sending me a donation. Any donations you send help cover my server costs and buy me a drink. Cheers!
 <ul>
 <li><a href="https://gameservermanagers.com/#donate">Donate</a></li>
 </ul>
 <h2>Useful Links</h2>
 <ul>
 	<li><a href="https://gameservermanagers.com">Homepage</a></li>
-	<li><a href="https://github.com/dgibbs64/linuxgsm/wiki">Wiki</a></li>
-	<li><a href="https://github.com/dgibbs64/linuxgsm">GitHub Code</a></li>
-	<li><a href="https://github.com/dgibbs64/linuxgsm/issues">GitHub Issues</a></li>
-	<li><a href="https://waffle.io/dgibbs64/linuxgsm">Waffle (Github Dashboard)</a></li>
+	<li><a href="https://github.com/GameServerManagers/LinuxGSM/wiki">Wiki</a></li>
+	<li><a href="https://github.com/GameServerManagers/LinuxGSM">GitHub Code</a></li>
+	<li><a href="https://github.com/GameServerManagers/LinuxGSM/issues">GitHub Issues</a></li>
+	<li><a href="https://waffle.io/GameServerManagers/LinuxGSM">Waffle (Github Dashboard)</a></li>
 	<li><a href="http://alternativeto.net/software/linux-game-server-managers/">alternativeTo.net</a></li>
 </ul>
 <h2>Social</h2>

+ 2 - 2
RedOrchestra/roserver

@@ -43,8 +43,8 @@ parms="server ${defaultmap}?game=ROGame.ROTeamGame?VACSecured=true -nohomedir in
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Server Details

+ 2 - 2
Ricochet/ricochetserver

@@ -47,8 +47,8 @@ parms="-game ricochet -strictportbind +ip ${ip} -port ${port} +clientport ${clie
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 1 - 1
Rust/cfg/lgsm-default.cfg

@@ -11,7 +11,7 @@
 server.description "LGSM Server\nRust support : UltimateByte"
 
 # A URL to the image which shows up on the server details screen (dimensions are 512x256).
-server.headerimage "https://github.com/dgibbs64/linuxgsm/raw/master/images/logo/lgsm-full-light.png"
+server.headerimage "https://github.com/GameServerManagers/LinuxGSM/raw/master/images/logo/lgsm-full-light.png"
 
 # The URL to your servers website.
 server.url "https://gameservermanagers.com/"

+ 2 - 2
Rust/rustserver

@@ -65,8 +65,8 @@ fi
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 3 - 3
SeriousSam3BFE/ss3sserver

@@ -33,7 +33,7 @@ steampass=""
 ip="0.0.0.0"
 updateonstart="off"
 
-# https://raw.githubusercontent.com/dgibbs64/linuxgsm/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt
+# https://raw.githubusercontent.com/GameServerManagers/LinuxGSM/master/SeriousSam3BFE/help/DedicatedServer_Readme.txt
 fn_parms(){
 parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}"
 }
@@ -43,8 +43,8 @@ parms="+ip ${ip} +logfile ${gamelog} +exec ${servercfgfullpath}"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Starbound/sbserver

@@ -42,8 +42,8 @@ parms=""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
SvenCoop/svencoopserver

@@ -47,8 +47,8 @@ parms="-game svencoop -strictportbind +ip ${ip} -port ${port} +clientport ${clie
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
TeamFortress2/tf2server

@@ -53,8 +53,8 @@ parms="-game tf -strictportbind -ip ${ip} -port ${port} +clientport ${clientport
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
TeamFortressClassic/tfcserver

@@ -47,8 +47,8 @@ parms="-game tfc -strictportbind _ip ${ip} -port ${port} +clientport ${clientpor
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
TeamSpeak3/ts3server

@@ -63,8 +63,8 @@ scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S'
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 ##### Script #####

+ 2 - 2
Teeworlds/twserver

@@ -43,8 +43,8 @@ parms="-f ${servercfgfullpath}"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 2 - 2
Terraria/terrariaserver

@@ -43,8 +43,8 @@ parms="-config ${servercfgfullpath}"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Steam

+ 3 - 0
UnrealTournament/cfg/Engine.ini

@@ -0,0 +1,3 @@
+[/Script/UnrealTournament.UTGameEngine]
+bFirstRun=False
+RconPassword="<rconpassword>"

+ 4 - 0
UnrealTournament/cfg/Game.ini

@@ -0,0 +1,4 @@
+[/Script/UnrealTournament.UTGameState]
+ServerName="<hostname>"
+ServerMOTD=<UT.Font.NormalText.Huge>WELCOME</>\n\n<UT.Font.NormalText.Medium>Headshots for everyone.</>
+ServerDescription=This is my server, have fun

+ 147 - 0
UnrealTournament/utserver

@@ -0,0 +1,147 @@
+#!/bin/bash
+# Unreal Tournament
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+defaultmap="DM-Underland"
+gametype="DM"
+#defaultmap="CTF-Face"
+#gametype="CTF"
+timelimit="10"
+ip="0.0.0.0"
+port="7777"
+
+fn_parms(){
+parms="UnrealTournament ${defaultmap}?Game=${gametype}?TimeLimit=${timelimit} -port=${port}"
+}
+
+#### Advanced Variables ####
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+# Server Details
+servicename="ut-server"
+gamename="Unreal Tournament"
+engine="unreal4"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}/LinuxServer"
+executabledir="${systemdir}/Engine/Binaries/Linux"
+executable="./UE4Server-Linux-Shipping"
+servercfg="Game.ini"
+servercfgdir="${systemdir}/UnrealTournament/Saved/Config/LinuxServer"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${filesdir}/Logs"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh

+ 2 - 2
UnrealTournament2004/ut2k4server

@@ -75,8 +75,8 @@ consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 ##### Script #####

+ 155 - 0
UnrealTournament3/ut3server

@@ -0,0 +1,155 @@
+#!/bin/bash
+# Unreal Tournament 3
+# Server Management Script
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+if [ -f ".dev-debug" ]; then
+	exec 5>dev-debug.log
+	BASH_XTRACEFD="5"
+	set -x
+fi
+
+version="210516"
+
+#### Variables ####
+
+# Notification Alerts
+# (on|off)
+
+# Email
+emailalert="off"
+email="email@example.com"
+
+# Pushbullet
+# https://www.pushbullet.com/#settings
+pushbulletalert="off"
+pushbullettoken="accesstoken"
+
+# Start Variables
+ip="0.0.0.0"
+port="7777"
+queryport="25300"
+defaultmap="VCTF-Suspense"
+game="UTGameContent.UTVehicleCTFGame_Content"
+mutators="" #"UTGame.UTMutator_Instagib,UTGame.UTMutator_LowGrav"
+isdedicated="true"
+islanmatch="false"
+usesstats="false"
+shouldadvertise="true"
+pureserver="1"
+allowjoininprogress="true"
+maxplayers="32"
+
+#list of game types and mutators : http://wiki.unrealadmin.org/FAQ:UT3
+fn_parms(){
+parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?MaxPlayers=${maxplayers}?Mutator=${mutators} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}"
+}
+
+# Server Details
+servicename="ut3-server"
+gamename="Unreal Tournament 3"
+engine="unreal3"
+
+# Directories
+rootdir="$(dirname $(readlink -f "${BASH_SOURCE[0]}"))"
+selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+lockselfname=".${servicename}.lock"
+lgsmdir="${rootdir}/lgsm"
+functionsdir="${lgsmdir}/functions"
+libdir="${lgsmdir}/lib"
+filesdir="${rootdir}/serverfiles"
+systemdir="${filesdir}"
+executabledir="${systemdir}/Binaries"
+executable="./ut3"
+servercfg="UTGame.ini"
+servercfgdir="${systemdir}/UTGame/Config"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+backupdir="${rootdir}/backups"
+
+# Logging
+logdays="7"
+gamelogdir="${rootdir}/log/server"
+scriptlogdir="${rootdir}/log/script"
+consolelogdir="${rootdir}/log/console"
+consolelogging="on"
+
+gamelog="${gamelogdir}/${servicename}-game.log"
+scriptlog="${scriptlogdir}/${servicename}-script.log"
+consolelog="${consolelogdir}/${servicename}-console.log"
+emaillog="${scriptlogdir}/${servicename}-email.log"
+
+gamelogdate="${gamelogdir}/${servicename}-game-$(date '+%d-%m-%Y-%H-%M-%S').log"
+scriptlogdate="${scriptlogdir}/${servicename}-script-$(date '+%d-%m-%Y-%H-%M-%S').log"
+consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%d-%m-%Y-%H-%M-%S').log"
+
+# Github Branch Select
+# Allows for the use of different function files
+# from a different repo and/or branch.
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
+githubbranch="master"
+
+##### Script #####
+# Do not edit
+
+# Fetches core_dl for file downloads
+fn_fetch_core_dl(){
+github_file_url_dir="lgsm/functions"
+github_file_url_name="${functionfile}"
+filedir="${functionsdir}"
+filename="${github_file_url_name}"
+githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
+# If the file is missing, then download
+if [ ! -f "${filedir}/${filename}" ]; then
+	if [ ! -d "${filedir}" ]; then
+		mkdir -p "${filedir}"
+	fi
+	echo -e "    fetching ${filename}...\c"
+	# Check curl exists and use available path
+	curlpaths="$(command -v curl 2>/dev/null) $(which curl >/dev/null 2>&1) /usr/bin/curl /bin/curl /usr/sbin/curl /sbin/curl)"
+	for curlcmd in ${curlpaths}
+	do
+		if [ -x "${curlcmd}" ]; then
+			break
+		fi
+	done
+	# If curl exists download file
+	if [ "$(basename ${curlcmd})" == "curl" ]; then
+		curlfetch=$(${curlcmd} -s --fail -o "${filedir}/${filename}" "${githuburl}" 2>&1)
+		if [ $? -ne 0 ]; then
+			echo -e "\e[0;31mFAIL\e[0m\n"
+			echo "${curlfetch}"
+			echo -e "${githuburl}\n"
+			exit 1
+		else
+			echo -e "\e[0;32mOK\e[0m"
+		fi
+	else
+		echo -e "\e[0;31mFAIL\e[0m\n"
+		echo "Curl is not installed!"
+		echo -e ""
+		exit 1
+	fi
+	chmod +x "${filedir}/${filename}"
+fi
+source "${filedir}/${filename}"
+}
+
+core_dl.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_functions.sh(){
+# Functions are defined in core_functions.sh.
+functionfile="${FUNCNAME}"
+fn_fetch_core_dl
+}
+
+core_dl.sh
+core_functions.sh
+
+getopt=$1
+core_getopt.sh
+

+ 2 - 2
UnrealTournament99/ut99server

@@ -38,8 +38,8 @@ parms="server ${defaultmap}.unr ini=${servercfgfullpath}"
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="master"
 
 # Server Details

+ 2 - 2
functions/core_functions.sh

@@ -15,10 +15,10 @@ fi
 
 fn_fetch_core_dl(){
 if [ -z "${githubuser}" ]; then
-	githubuser="dgibbs64"
+	githubuser="GameServerManagers"
 fi
 if [ -z "${githubrepo}" ]; then
-	githubrepo="linuxgsm"
+	githubrepo="LinuxGSM"
 fi
 if [ -z "${githubbranch}" ]; then
 	githubbranch="master"

+ 21 - 12
lgsm/functions/check_deps.sh

@@ -73,7 +73,7 @@ fn_found_missing_deps(){
 		sleep 1
 		sudo -v > /dev/null 2>&1
 		if [ $? -eq 0 ]; then
-			fn_print_infomation_nl "Automatically installing missing dependencies."
+			fn_print_information_nl "Automatically installing missing dependencies."
 			fn_script_log_info "Automatically installing missing dependencies."
 			echo -en ".\r"
 			sleep 1
@@ -120,7 +120,7 @@ fn_check_loop(){
 		fn_deps_detector
 	done
 
-	# user to be informaed of any missing dependecies
+	# user to be informed of any missing dependencies
 	fn_found_missing_deps
 }
 
@@ -128,7 +128,7 @@ info_distro.sh
 
 if [ "${function_selfname}" == "command_install.sh" ]; then
 	echo ""
-	echo "Checking Dependecies"
+	echo "Checking Dependencies"
 	echo "================================="
 fi
 
@@ -149,8 +149,8 @@ if [ -n "$(command -v dpkg-query)" ]; then
 		fi
 	fi
 
-	# All servers except ts3 & mumble require libstdc++6, lib32gcc1
-	if [ "${gamename}" != "TeamSpeak 3" ]||[ "${gamename}" != "Mumble" ]; then
+	# All servers except ts3,mumble and minecraft servers require libstdc++6 and lib32gcc1
+	if [ "${gamename}" != "TeamSpeak 3" ]||[ "${gamename}" != "Mumble" ]||[ "${engine}" != "lwjgl2" ]; then
 		if [ "${arch}" == "x86_64" ]; then
 			array_deps_required+=( lib32gcc1 libstdc++6:i386 )
 		else
@@ -176,10 +176,13 @@ if [ -n "$(command -v dpkg-query)" ]; then
 	# Brainbread 2 and Don't Starve Together
 	elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
 		array_deps_required+=( libcurl4-gnutls-dev:i386 )
-	# Project Zomboid
-	elif [ "${engine}" ==  "projectzomboid" ]; then
+	# Battlefield: 1942 requies ncurses
+	elif [ "${gamename}" == "Battlefield: 1942" ]; then
+		array_deps_required+=( libncurses5:i386 )
+	# Project Zomboid and Minecraft
+	elif [ "${engine}" ==  "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then
 		array_deps_required+=( default-jdk )
-	# Unreal engine
+	# Unreal Engine
 	elif [ "${executable}" ==  "./ucc-bin" ]; then
 		#UT2K4
 		if [ -f "${executabledir}/ut2004-bin" ]; then
@@ -188,6 +191,9 @@ if [ -n "$(command -v dpkg-query)" ]; then
 		else
 			array_deps_required+=( libsdl1.2debian bzip2 )
 		fi
+	# Unreal Tournament
+	elif [ "${gamename}" == "Unreal Tournament" ]; then
+		array_deps_required+=( unzip )
 	fi
 	fn_deps_email
 	fn_check_loop
@@ -212,8 +218,8 @@ elif [ -n "$(command -v yum)" ]; then
 		fi
 	fi
 
-	# All servers excelts ts3 & mumble require glibc.i686 libstdc++.i686
-	if [ "${executable}" != "./ts3server_startscript.sh" ]||[ "${executable}" != "./murmur.x86" ]; then
+	# All servers except ts3,mumble and minecraft servers require glibc.i686 and libstdc++.i686
+	if [ "${gamename}" != "TeamSpeak 3" ]||[ "${gamename}" != "Mumble" ]||[ "${engine}" != "lwjgl2" ]; then
 		array_deps_required+=( glibc.i686 libstdc++.i686 )
 	fi
 
@@ -231,8 +237,8 @@ elif [ -n "$(command -v yum)" ]; then
 	# Brainbread 2 and Don't Starve Together
 	elif [ "${gamename}" == "Brainbread 2" ]||[ "${gamename}" == "Don't Starve Together" ]; then
 		array_deps_required+=( libcurl.i686 )
-	# Project Zomboid
-	elif [ "${engine}" ==  "projectzomboid" ]; then
+	# Project Zomboid and Minecraft
+	elif [ "${engine}" ==  "projectzomboid" ]||[ "${engine}" == "lwjgl2" ]; then
 		array_deps_required+=( java-1.8.0-openjdk )
 	# Unreal Engine
 	elif [ "${executable}" ==  "./ucc-bin" ]; then
@@ -243,6 +249,9 @@ elif [ -n "$(command -v yum)" ]; then
 		else
 			array_deps_required+=( SDL.i686 bzip2 )
 		fi
+	# Unreal Tournament
+	elif [ "${gamename}" == "Unreal Tournament" ]; then
+		array_deps_required+=( unzip )
 	fi
 	fn_deps_email
 	fn_check_loop

+ 1 - 1
lgsm/functions/check_glibc.sh

@@ -35,7 +35,7 @@ elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n
 		echo -e "	* glibc required: ${glibcrequired}"
 		echo -e "	* glibc installed: ${red}${glibcversion}${default}"
 		echo -en "\n"
-		fn_print_infomation "The game server will probably not work. A distro upgrade is required!"
+		fn_print_information "The game server will probably not work. A distro upgrade is required!"
 		sleep 5
 	fi
 fi

+ 2 - 2
lgsm/functions/check_ip.sh

@@ -8,7 +8,7 @@
 local commandname="CHECK"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
-if [ "${gamename}" != "TeamSpeak 3" ]; then
+if [ "${gamename}" != "TeamSpeak 3" ] && [ "${gamename}" != "Mumble" ]; then
 	if [ ! -f "/bin/ip" ]; then
 		ipcommand="/sbin/ip"
 	else
@@ -24,7 +24,7 @@ if [ "${gamename}" != "TeamSpeak 3" ]; then
 			fn_print_fail "Check IP: Multiple active network interfaces found."
 			sleep 1
 			echo -en "\n"
-			fn_print_infomation "Specify the IP you want to use within the ${selfname} script.\n"
+			fn_print_information "Specify the IP you want to use within the ${selfname} script.\n"
 			echo -en "Set ip=\"0.0.0.0\" to one of the following:\n"
 			echo -en "${getip}\n"
 			echo -en ""

+ 37 - 12
lgsm/functions/check_permissions.sh

@@ -9,19 +9,44 @@ local commandname="CHECK"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
 fn_check_ownership(){
+	if [ -f "${rootdir}/${selfname}" ]; then
+		if [ $(find "${rootdir}/${selfname}" -not -user $(whoami)|wc -l) -ne "0" ]; then
+			selfownissue=1
+		fi
+	fi
+	if [ -d "${functionsdir}" ]; then
+		if [ $(find "${functionsdir}" -not -user $(whoami)|wc -l) -ne "0" ]; then
+			funcownissue=1
+		fi
+	fi
 	if [ -d "${filesdir}" ]; then
-		if [ $(find "${filesdir}" -not -user $(whoami)|wc -l) -ne "0" ]||[ $(find "${rootdir}/${selfname}" -not -user $(whoami)|wc -l) -ne "0" ]; then
-			fn_print_fail_nl "Permissions issues found"
-			fn_script_log_fatal "Permissions issues found"
-			fn_print_infomation_nl "The current user ($(whoami)) does not have ownership of the following files:"
-			fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:"
-			{
-				echo -e "User\tGroup\tFile\n"
-				find "${filesdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
-			} | column -s $'\t' -t | tee -a "${scriptlog}"
-			core_exit.sh
+		if [ $(find "${filesdir}" -not -user $(whoami)|wc -l) -ne "0" ]; then
+			filesownissue=1
 		fi
 	fi
+	if [ "${selfownissue}" == "1" ]||[ "${funcownissue}" == "1" ]||[ "${filesownissue}" == "1" ]; then
+		fn_print_fail_nl "Ownership issues found"
+		fn_script_log_fatal "Ownership issues found"
+		fn_print_information_nl "The current user ($(whoami)) does not have ownership of the following files:"
+		fn_script_log_info "The current user ($(whoami)) does not have ownership of the following files:"
+		{
+			echo -e "User\tGroup\tFile\n"
+			if [ "${selfownissue}" == "1" ]; then
+				find "${rootdir}/${selfname}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
+			fi
+			if [ "${funcownissue}" == "1" ]; then
+				find "${functionsdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
+			fi
+			if [ "${funcownissue}" == "1"  ]; then
+				find "${filesdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
+			fi
+
+		} | column -s $'\t' -t | tee -a "${scriptlog}"
+		echo ""
+		fn_print_information_nl "For more information, please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-permissions-issues-found"
+		fn_script_log "For more information, please see https://github.com/GameServerManagers/LinuxGSM/wiki/FAQ#-fail--starting-game-server-permissions-issues-found"
+		core_exit.sh
+	fi
 }
 
 fn_check_permissions(){
@@ -29,7 +54,7 @@ fn_check_permissions(){
 		if [ $(find "${functionsdir}" -type f -not -executable|wc -l) -ne "0" ]; then
 			fn_print_fail_nl "Permissions issues found"
 			fn_script_log_fatal "Permissions issues found"
-			fn_print_infomation_nl "The following files are not executable:"
+			fn_print_information_nl "The following files are not executable:"
 			fn_script_log_info "The following files are not executable:"
 			{
 				echo -e "File\n"
@@ -49,7 +74,7 @@ fn_check_permissions(){
 		if [ "${userrootdirperm}" != "7" ] && [ "${grouprootdirperm}" != "7" ]; then
 			fn_print_fail_nl "Permissions issues found"
 			fn_script_log_fatal "Permissions issues found"
-			fn_print_infomation_nl "The following directorys does not have the correct permissions:"
+			fn_print_information_nl "The following directorys does not have the correct permissions:"
 			fn_script_log_info "The following directorys does not have the correct permissions:"
 			ls -l "${rootdir}"
 			core_exit.sh

+ 1 - 1
lgsm/functions/check_steamcmd.sh

@@ -51,7 +51,7 @@ fn_check_steamcmd_sh(){
 			fn_install_steamcmd
 		fi
 	elif [ "${function_selfname}" == "command_install.sh" ]; then
-		fn_print_infomation "SteamCMD is already installed..."
+		fn_print_information "SteamCMD is already installed..."
 		fn_print_ok_eol_nl
 	fi
 }

+ 5 - 0
lgsm/functions/check_system_requirements.sh

@@ -21,6 +21,11 @@ if [ "${gamename}" == "ARMA 3" ]; then
 	ramrequirementgb="1"
 fi
 
+if [ "${gamename}" == "Minecraft" ]; then
+	ramrequirementmb="1000"
+	ramrequirementgb="1"
+fi
+
 # If the game or engine has a minimum RAM Requirement, compare it to system's available RAM.
 if [ -n "${ramrequirementmb}" ]; then
 	if [ "${physmemtotalmb}" -lt "${ramrequirementmb}" ]; then

+ 18 - 4
lgsm/functions/command_details.sh

@@ -3,7 +3,7 @@
 # Author: Daniel Gibbs
 # Contributor: UltimateByte
 # Website: https://gameservermanagers.com
-# Description: Displays server infomation.
+# Description: Displays server information.
 
 local commandname="DETAILS"
 local commandaction="Details"
@@ -106,7 +106,9 @@ fn_details_gameserver(){
 	printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' =
 	{
 		# Server name
-		echo -e "${blue}Server name:\t${default}${servername}"
+		if [ -n "${servername}" ]; then
+			echo -e "${blue}Server name:\t${default}${servername}"
+		fi
 
 		# Server ip
 		echo -e "${blue}Server IP:\t${default}${ip}:${port}"
@@ -287,14 +289,15 @@ fn_details_ports(){
 	echo -e "Change ports by editing the parameters in:"
 
 	parmslocation="${red}UNKNOWN${default}"
-	local ports_edit_array=( "avalanche" "dontstarve" "projectzomboid" "idtech3" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "TeamSpeak 3" "Mumble" "7 Days To Die" )
+	# engines that require editing in the config file
+	local ports_edit_array=( "avalanche" "dontstarve" "idtech3" "lwjgl2" "projectzomboid" "realvirtuality" "seriousengine35" "teeworlds" "terraria" "unreal" "unreal2" "TeamSpeak 3" "Mumble" "7 Days To Die" )
 	for port_edit in "${ports_edit_array[@]}"
 	do
 		if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
 			parmslocation="${servercfgfullpath}"
 		fi
 	done
-
+	# engines that require editing in the script file
 	local ports_edit_array=( "starbound" "spark" "source" "goldsource" "Rust" "Hurtworld" "unreal4")
 	for port_edit in "${ports_edit_array[@]}"
 	do
@@ -337,6 +340,15 @@ fn_details_dontstarve(){
 	} | column -s $'\t' -t
 }
 
+fn_details_minecraft(){
+	echo -e "netstat -atunp | grep java"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game\tINBOUND\t${port}\tudp"
+	} | column -s $'\t' -t
+}
+
 fn_details_projectzomboid(){
 	echo -e "netstat -atunp | grep java"
 	echo -e ""
@@ -591,6 +603,8 @@ if [ "${engine}" == "avalanche" ]; then
 	fn_details_avalanche
 elif [ "${engine}" == "dontstarve" ]; then
 	fn_details_dontstarve
+elif [ "${engine}" == "lwjgl2" ]; then
+	fn_details_minecraft
 elif [ "${engine}" == "projectzomboid" ]; then
 	fn_details_projectzomboid
 elif [ "${engine}" == "idtech3" ]; then

+ 2 - 2
lgsm/functions/command_fastdl.sh

@@ -29,7 +29,7 @@ fn_check_bzip2(){
 		echo -en "\n"
 		sleep 1
 		echo "We advise using it"
-		echo "For more information, see https://github.com/dgibbs64/linuxgsm/wiki/FastDL#bzip2-compression"
+		echo "For more information, see https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL#bzip2-compression"
 		sleep 2
 	else
 		bzip2installed="1"
@@ -310,7 +310,7 @@ fn_fastdl_completed(){
 	sleep 2
 	echo -en "\n"
 	echo ""
-	fn_print_info "Need more documentation? See https://github.com/dgibbs64/linuxgsm/wiki/FastDL"
+	fn_print_info "Need more documentation? See https://github.com/GameServerManagers/LinuxGSM/wiki/FastDL"
 	echo -en "\n"
 	if [ "$bzip2installed" == "0" ]; then
 	echo "By the way, you'd better install bzip2 and re-run this command!"

+ 1 - 1
lgsm/functions/command_install.sh

@@ -18,7 +18,7 @@ check_deps.sh
 if [ "${gamename}" == "Unreal Tournament 2004" ]; then
 	install_server_files.sh
 	install_ut2k4_key.sh
-elif [ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Mumble" ]; then
+elif [ "${gamename}" == "Unreal Tournament 3" ]||[ "${gamename}" == "Battlefield: 1942" ]||[ "${gamename}" == "Enemy Territory" ]||[ "${gamename}" == "Unreal Tournament 99" ]||[ "${gamename}" == "Unreal Tournament" ]||[ "${gamename}" == "TeamSpeak 3" ]||[ "${gamename}" == "Minecraft" ]||[ "${gamename}" == "Mumble" ]; then
 	installer=1
 	install_server_files.sh
 elif [ -n "${appid}" ]; then

+ 33 - 3
lgsm/functions/command_stop.sh

@@ -9,7 +9,7 @@ local commandname="STOP"
 local commandaction="Stopping"
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
-# Attempts Graceful of source using rcon 'quit' command.
+# Attempts graceful of source using rcon 'quit' command.
 fn_stop_graceful_source(){
 	fn_print_dots "Graceful: rcon quit"
 	fn_script_log_info "Graceful: rcon quit"
@@ -37,7 +37,7 @@ fn_stop_graceful_source(){
 	fn_stop_tmux
 }
 
-# Attempts Graceful of goldsource using rcon 'quit' command.
+# Attempts graceful of goldsource using rcon 'quit' command.
 # Goldsource 'quit' command restarts rather than shutsdown
 # this function will only wait 3 seconds then force a tmux shutdown.
 # preventing the server from coming back online.
@@ -58,7 +58,7 @@ fn_stop_graceful_goldsource(){
 	fn_stop_tmux
 }
 
-# Attempts Graceful of 7 Days To Die using telnet.
+# Attempts graceful of 7 Days To Die using telnet.
 fn_stop_telnet_sdtd(){
 	sdtd_telnet_shutdown=$( expect -c '
 	proc abort {} {
@@ -144,6 +144,34 @@ fn_stop_graceful_sdtd(){
 	fn_stop_tmux
 }
 
+# Attempts graceful of source using rcon '/stop' command.
+fn_stop_graceful_minecraft(){
+	fn_print_dots "Graceful: console /stop"
+	fn_script_log_info "Graceful: console /stop"
+	# sends quit
+	tmux send -t "${servicename}" /stop ENTER > /dev/null 2>&1
+	# waits up to 30 seconds giving the server time to shutdown gracefuly
+	for seconds in {1..30}; do
+		check_status.sh
+		if [ "${status}" == "0" ]; then
+			fn_print_ok "Graceful: console /stop: ${seconds}: "
+			fn_print_ok_eol_nl
+			fn_script_log_pass "Graceful: console /stop: OK: ${seconds} seconds"
+			break
+		fi
+		sleep 1
+		fn_print_dots "Graceful: console /stop: ${seconds}"
+	done
+	check_status.sh
+	if [ "${status}" != "0" ]; then
+		fn_print_error "Graceful: console /stop: "
+		fn_print_fail_eol_nl
+		fn_script_log_error "Graceful: console /stop: FAIL"
+	fi
+	sleep 1
+	fn_stop_tmux
+}
+
 fn_stop_graceful_select(){
 	if [ "${gamename}" == "7 Days To Die" ]; then
 		fn_stop_graceful_sdtd
@@ -151,6 +179,8 @@ fn_stop_graceful_select(){
 		fn_stop_graceful_source
 	elif [ "${engine}" == "goldsource" ]; then
 		fn_stop_graceful_goldsource
+	elif [ "${engine}" == "lwjgl2" ]; then
+		fn_stop_graceful_minecraft
 	else
 		fn_stop_tmux
 	fi

+ 1 - 1
lgsm/functions/command_ts3_server_pass.sh

@@ -16,7 +16,7 @@ fn_serveradmin_password_prompt(){
 	echo "================================="
 	echo ""
 	echo "Press \"CTRL+b d\" to exit console."
-	fn_print_infomation_nl "You are about to change the ${gamename} ServerAdmin password."
+	fn_print_information_nl "You are about to change the ${gamename} ServerAdmin password."
 	fn_print_warning_nl "${gamename} will restart during this process."
 	echo ""
 	while true; do

+ 2 - 0
lgsm/functions/command_update.sh

@@ -15,6 +15,8 @@ check.sh
 
 if [ "${gamename}" == "TeamSpeak 3" ]; then
 	update_ts3.sh
+elif [ "${engine}" == "lwjgl2" ]; then
+	update_minecraft.sh
 elif [ "${gamename}" == "Mumble" ]; then
 	update_mumble.sh
 else

+ 4 - 2
lgsm/functions/core_dl.sh

@@ -44,7 +44,7 @@ fn_dl_md5(){
 	fi
 }
 
-# Extracts bzip2 or gzip files
+# Extracts bzip2 or gzip or zip files
 # Extracts can be defined in code like so:
 # fn_dl_extract "${filedir}" "${filename}" "${extractdir}"
 # fn_dl_extract "/home/gameserver/lgsm/tmp" "file.tar.bz2" "/home/gamserver/serverfiles"
@@ -61,6 +61,8 @@ fn_dl_extract(){
 		tarcmd=$(tar -zxf "${filedir}/${filename}" -C "${extractdir}")
 	elif [ "${mime}" == "application/x-bzip2" ]; then
 		tarcmd=$(tar -jxf "${filedir}/${filename}" -C "${extractdir}")
+	elif [ "${mime}" == "application/zip" ]; then
+		tarcmd=$(unzip -d "${extractdir}" "${filedir}/${filename}")
 	fi
 	local exitcode=$?
 	if [ ${exitcode} -ne 0 ]; then
@@ -115,7 +117,7 @@ fn_fetch_file(){
 			# trap to remove part downloaded files
 			trap fn_fetch_trap INT
 			# if larger file shows progress bar
-			if [ ${filename##*.} == "bz2" ]; then
+			if [ ${filename##*.} == "bz2" ]||[ ${filename##*.} == "jar" ]; then
 				echo -ne "downloading ${filename}..."
 				sleep 1
 				curlcmd=$(${curlcmd} --progress-bar --fail -L -o "${filedir}/${filename}" "${fileurl}")

+ 14 - 0
lgsm/functions/core_functions.sh

@@ -322,6 +322,10 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
+fix_ut.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
 
 # Info
 
@@ -396,6 +400,11 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
+update_minecraft.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
 update_mumble.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
@@ -451,6 +460,11 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
+install_minecraft_eula.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
 install_retry.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function

+ 78 - 14
lgsm/functions/core_getopt.sh

@@ -41,7 +41,7 @@ case "${getopt}" in
 		command_install.sh;;
 	ai|auto-install)
 		fn_autoinstall;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -65,7 +65,7 @@ case "${getopt}" in
 		echo -e "${blue}validate\t${default}v  |Validate server files with SteamCMD."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
 		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
@@ -103,7 +103,7 @@ case "${getopt}" in
 		command_install.sh;;
 	ai|auto-install)
 		fn_autoinstall;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -125,7 +125,7 @@ case "${getopt}" in
 		echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}change-password\t${default}pw |Changes TS3 serveradmin password."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}install\t${default}i  |Install the server."
@@ -134,6 +134,68 @@ case "${getopt}" in
 	esac
 }
 
+fn_getopt_minecraft(){
+case "${getopt}" in
+	st|start)
+		command_start.sh;;
+	sp|stop)
+		command_stop.sh;;
+	r|restart)
+		command_restart.sh;;
+	u|update)
+		command_update.sh;;
+	uf|update-functions)
+		command_update_functions.sh;;
+	m|monitor)
+		command_monitor.sh;;
+	ta|test-alert)
+		command_test_alert.sh;;
+	dt|details)
+		command_details.sh;;
+	b|backup)
+		command_backup.sh;;
+	c|console)
+		command_console.sh;;
+	d|debug)
+		command_debug.sh;;
+	dev|dev-debug)
+		command_dev_debug.sh;;
+	i|install)
+		command_install.sh;;
+	ai|auto-install)
+		fn_autoinstall;;
+	dd|deps-detect)
+		command_dev_detect_deps.sh;;
+	dg|detect-glibc)
+		command_dev_detect_glibc.sh;;
+	*)
+	if [ -n "${getopt}" ]; then
+		echo -e "${red}Unknown command${default}: $0 ${getopt}"
+		exitcode=2
+	fi
+	echo "Usage: $0 [option]"
+	echo "${gamename} - Linux Game Server Manager - Version ${version}"
+	echo "https://gameservermanagers.com/${selfname}"
+	echo -e ""
+	echo -e "${lightyellow}Commands${default}"
+	{
+		echo -e "${blue}start\t${default}st |Start the server."
+		echo -e "${blue}stop\t${default}sp |Stop the server."
+		echo -e "${blue}restart\t${default}r  |Restart the server."
+		echo -e "${blue}update\t${default}u  |Checks and applies updates from mojang.com."
+		echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
+		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
+		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
+		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}backup\t${default}b  |Create archive of the server."
+		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
+		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
+		echo -e "${blue}install\t${default}i  |Install the server."
+		echo -e "${blue}auto-install\t${default}ai |Install the server, without prompts."
+	} | column -s $'\t' -t
+	esac
+}
+
 fn_getopt_mumble(){
 case "${getopt}" in
 	st|start)
@@ -158,7 +220,7 @@ case "${getopt}" in
 		command_dev_debug.sh;;
 	i|install)
 		command_install.sh;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -180,7 +242,7 @@ case "${getopt}" in
 		echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}install\t${default}i  |Install the server."
 	} | column -s $'\t' -t
@@ -222,7 +284,7 @@ case "${getopt}" in
 		command_install.sh;;
 	ai|auto-install)
 		fn_autoinstall;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -248,7 +310,7 @@ case "${getopt}" in
 		echo -e "${blue}validate\t${default}v  |Validate server files with SteamCMD."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
 		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
@@ -289,7 +351,7 @@ case "${getopt}" in
 		fn_autoinstall;;
 	mc|map-compressor)
 		compress_ut99_maps.sh;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -310,7 +372,7 @@ case "${getopt}" in
 		echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
 		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
@@ -357,7 +419,7 @@ case "${getopt}" in
 		command_install.sh;;
 	ai|auto-install)
 		fn_autoinstall;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -383,7 +445,7 @@ case "${getopt}" in
 		echo -e "${blue}validate\t${default}v  |Validate server files with SteamCMD."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
 		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
@@ -427,7 +489,7 @@ case "${getopt}" in
 		install_ut2k4_key.sh;;
 	mc|map-compressor)
 		compress_unreal2_maps.sh;;
-	dd|depsdetect)
+	dd|deps-detect)
 		command_dev_detect_deps.sh;;
 	dg|detect-glibc)
 		command_dev_detect_glibc.sh;;
@@ -448,7 +510,7 @@ case "${getopt}" in
 		echo -e "${blue}update-functions\t${default}uf |Removes all functions so latest can be downloaded."
 		echo -e "${blue}monitor\t${default}m  |Checks that the server is running."
 		echo -e "${blue}test-alert\t${default}ta |Sends test alert."
-		echo -e "${blue}details\t${default}dt |Displays useful infomation about the server."
+		echo -e "${blue}details\t${default}dt |Displays useful information about the server."
 		echo -e "${blue}backup\t${default}b  |Create archive of the server."
 		echo -e "${blue}console\t${default}c  |Console allows you to access the live view of a server."
 		echo -e "${blue}debug\t${default}d  |See the output of the server directly to your terminal."
@@ -462,6 +524,8 @@ case "${getopt}" in
 
 if [ "${gamename}" == "Mumble" ]; then
 	fn_getopt_mumble
+elif [ "${engine}" == "lwjgl2" ]; then
+	fn_getopt_minecraft
 elif [ "${gamename}" == "TeamSpeak 3" ]; then
 	fn_getopt_teamspeak3
 elif [ "${gamename}" == "Garry's Mod" ]; then

+ 5 - 5
lgsm/functions/core_messages.sh

@@ -249,13 +249,13 @@ fn_print_warning_nl(){
 	echo -e "${yellow}Warning!${default} $@"
 }
 
-# Infomation!
-fn_print_infomation(){
-	echo -en "${cyan}Infomation!${default} $@"
+# Information!
+fn_print_information(){
+	echo -en "${cyan}Information!${default} $@"
 }
 
-fn_print_infomation_nl(){
-	echo -e "${cyan}Infomation!${default} $@"
+fn_print_information_nl(){
+	echo -e "${cyan}Information!${default} $@"
 }
 
 # On-Screen End of Line

+ 6 - 0
lgsm/functions/fix.sh

@@ -72,5 +72,11 @@ if [ "${function_selfname}" == "command_install.sh" ]; then
 		echo "================================="
 		sleep 1
 		fix_ut99.sh
+	elif [ "${gamename}" == "Unreal Tournament" ]; then
+		echo ""
+		echo "Applying ${gamename} Server Fixes"
+		echo "================================="
+		sleep 1
+		fix_ut.sh
 	fi
 fi

+ 14 - 0
lgsm/functions/fix_ut.sh

@@ -0,0 +1,14 @@
+#!/bin/bash
+# LGSM fix_ut.sh function
+# Author: Alexander Hurd
+# Website: https://gameservermanagers.com
+# Description: Resolves various issues with Unreal Tournament.
+
+local commandname="FIX"
+local commandaction="Fix"
+local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+
+#Set Binary Executable
+echo "chmod +x ${executabledir}/${executable}"
+chmod +x "${executabledir}/${executable}"
+sleep 1

+ 44 - 9
lgsm/functions/info_config.sh

@@ -10,7 +10,7 @@ local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 ## Examples of filtering to get info from config files
 # sed 's/foo//g' - remove foo
 # tr -cd '[:digit:]' leave only digits
-# tr -d '=\"; ' remove selected charectors =\";
+# tr -d '=\"; ' remove selected characters =\";
 # grep -v "foo" filter out lines that contain foo
 
 unavailable="${red}UNAVAILABLE${default}"
@@ -68,6 +68,37 @@ fn_info_config_dontstarve(){
 	fi
 }
 
+fn_info_config_minecraft(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		rconpassword="${unavailable}"
+		rconport="${zero}"
+		slots="${zero}"
+		port="${zero}"
+		gamemode="${zero}"
+		gameworld="${unavailable}"
+	else
+		# check if the ip exists in the config file. Failing this will fall back to the default.
+		ipconfigcheck=$(grep "server-ip=" "${servercfgfullpath}" | sed 's/server-ip=//g')
+		if [ -n "${ipconfigcheck}" ]; then
+			ip="${ipconfigcheck}"
+		fi
+		rconpassword=$(grep "rcon.password=" "${servercfgfullpath}" | sed 's/rcon.password=//g' | tr -d '=\"; ')
+		rconport=$(grep "rcon.port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
+		slots=$(grep "max-players=" "${servercfgfullpath}" | tr -cd '[:digit:]')
+		port=$(grep "server-port=" "${servercfgfullpath}" | tr -cd '[:digit:]')
+		gamemode=$(grep "gamemode=" "${servercfgfullpath}" | tr -cd '[:digit:]')
+		gameworld=$(grep "level-name=" "${servercfgfullpath}" | sed 's/level-name=//g' | tr -d '=\"; ')
+
+		# Not Set
+		rconpassword=${rconpassword:-"NOT SET"}
+		rconport=${rconport:-"NOT SET"}
+		slots=${slots:-"NOT SET"}
+		port=${port:-"NOT SET"}
+		gamemode=${gamemode:-"NOT SET"}
+		gameworld=${gameworld:-"NOT SET"}
+	fi
+}
+
 fn_info_config_projectzomboid(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 		servername="${unavailable}"
@@ -77,9 +108,9 @@ fn_info_config_projectzomboid(){
 		port="${zero}"
 		gameworld="${unavailable}"
 	else
-		servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '\')
-		serverpassword=$(grep "^Password=$" "${servercfgfullpath}" | sed 's/Password=//g' | tr -d '\')
-		rconpassword=$(grep "RCONPassword=" "${servercfgfullpath}" | sed 's/RCONPassword=//g' | tr -d '\')
+		servername=$(grep "PublicName=" "${servercfgfullpath}" | sed 's/PublicName=//g' | tr -d '=\";\n')
+		serverpassword=$(grep "^Password=$" "${servercfgfullpath}" | sed 's/Password=//g' | tr -d '=\"; ')
+		rconpassword=$(grep "RCONPassword=" "${servercfgfullpath}" | sed 's/RCONPassword=//g' | tr -d '=\"; ')
 		slots=$(grep "MaxPlayers=" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
 		port=$(grep "DefaultPort=" "${servercfgfullpath}" | tr -cd '[:digit:]')
 		gameworld=$(grep "Map=" "${servercfgfullpath}" | sed 's/Map=//g' | tr -d '\n')
@@ -374,18 +405,22 @@ fn_info_config_sdtd(){
 		gameworld=${gameworld:-"NOT SET"}
 	fi
 }
-## Just Cause 2
+
+# Just Cause 2
 if [ "${engine}" == "avalanche" ]; then
 	fn_info_config_avalanche
-## Dont Starve Together
+# Dont Starve Together
 elif [ "${engine}" == "dontstarve" ]; then
 	fn_info_config_dontstarve
-## Project Zomboid
-elif [ "${engine}" == "projectzomboid" ]; then
-	fn_info_config_projectzomboid
 # Quake Love
 elif [ "${engine}" == "idtech3" ]; then
 	fn_info_config_idtech3
+# Minecraft
+elif [ "${engine}" == "lwjgl2" ]; then
+	fn_info_config_minecraft
+# Project Zomboid
+elif [ "${engine}" == "projectzomboid" ]; then
+	fn_info_config_projectzomboid
 # ARMA 3
 elif [ "${engine}" == "realvirtuality" ]; then
 	fn_info_config_realvirtuality

+ 4 - 4
lgsm/functions/info_distro.sh

@@ -7,7 +7,7 @@
 
 local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
 
-### Distro infomation
+### Distro information
 
 ## Distro
 # Returns architecture, kernel and distro/os.
@@ -53,12 +53,12 @@ hours=$(( uptime/60/60%24 ))
 days=$(( uptime/60/60/24 ))
 
 
-### Performance infomation
+### Performance information
 
 ## Average server load
 load=$(uptime|awk -F 'load average: ' '{ print $2 }')
 
-## Memory Infomation
+## Memory information
 # Available RAM and swap.
 
 # Older versions of free do not support -h option.
@@ -77,7 +77,7 @@ swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
 swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
 swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
 
-### Disk Infomation
+### Disk information
 
 ## Available disk space on the partition.
 filesystem=$(df -hP "${rootdir}" | grep -v "Filesystem" | awk '{print $1}')

+ 18 - 0
lgsm/functions/info_glibc.sh

@@ -29,18 +29,27 @@ elif [ "${gamename}" == "Garry's Mod" ]; then
 elif [ "${gamename}" == "Insurgency" ]; then
 	glibcrequired="2.15"
 	glibcfix="yes"
+elif [ "${gamename}" == "Mumble" ]; then
+	glibcrequired="NOT REQUIRED"
+	glibcfix="no"
 elif [ "${gamename}" == "No More Room in Hell" ]; then
 	glibcrequired="2.15"
 	glibcfix="yes"
 elif [ "${gamename}" == "Quake Live" ]; then
 	glibcrequired="2.15"
 	glibcfix="no"
+elif [ "${gamename}" == "TeamSpeak 3" ]; then
+	glibcrequired="NOT REQUIRED"
+	glibcfix="no"
 elif [ "${engine}" == "avalanche" ]; then
 	glibcrequired="2.13"
 	glibcfix="yes"
 elif [ "${engine}" == "dontstarve" ]; then
 	glibcrequired="2.15"
 	glibcfix="no"
+elif [ "${engine}" == "lwjgl2" ]; then
+	glibcrequired="NOT REQUIRED"
+	glibcfix="no"
 elif [ "${engine}" == "projectzomboid" ]; then
 	glibcrequired="2.15"
 	glibcfix="no"
@@ -68,6 +77,9 @@ elif [ "${engine}" == "unreal" ]; then
 elif [ "${engine}" == "unreal2" ]; then
 	glibcrequired="2.4"
 	glibcfix="no"
+elif [ "${engine}" == "unreal3" ]; then
+	glibcrequired="2.3.2"
+	glibcfix="no"
 elif [ "${engine}" == "unreal4" ]; then
 	glibcrequired="2.14"
 	glibcfix="no"
@@ -80,6 +92,12 @@ elif [ "${gamename}" == "TeamSpeak 3" ]; then
 elif [ "${gamename}" == "Mumble" ]; then
 	glibcrequired="NOT REQUIRED"
 	glibcfix="no"
+elif [ "${engine}" == "idtech3" ]; then
+	glibcrequired="2.0"
+	glibcfix="no"
+elif [ "${engine}" == "refractor" ]; then
+	glibcrequired="2.0"
+	glibcfix="no"
 else
 	glibcrequired="UNKNOWN"
 	glibcfix="no"

+ 73 - 1
lgsm/functions/install_config.sh

@@ -36,7 +36,7 @@ fn_userinputconfig(){
 	fn_script_log_info "changing rconpassword."
 	sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgfullpath}"
 	sleep 1
-	}
+}
 
 fn_arma3config(){
 	fn_defaultconfig
@@ -165,6 +165,57 @@ fn_unreal2config(){
 	echo ""
 }
 
+fn_ut3config(){
+	echo ""
+	echo "Configuring ${gamename} Server"
+	echo "================================="
+	sleep 1
+	echo "setting ServerName to 'LinuxGSM UT3 Server'."
+	fn_script_log_info "setting ServerName to 'LinuxGSM UT3 Server'."
+	sleep 1
+	sed -i 's/ServerName=/ServerName=LinuxGSM UT3 Server/g' "${servercfgdir}/DefaultGame.ini"
+	echo "setting WebAdmin password to admin."
+	fn_script_log_info "setting WebAdmin password to admin."
+	echo '[Engine.AccessControl]' >> "${servercfgdir}/DefaultGame.ini"
+	echo 'AdminPassword=admin' >> "${servercfgdir}/DefaultGame.ini"
+	sleep 1
+	echo "enabling WebAdmin."
+	fn_script_log_info "enabling WebAdmin."
+	sed -i 's/bEnabled=false/bEnabled=True/g' "${servercfgdir}/DefaultWeb.ini"
+	if [ "${gamename}" == "Unreal Tournament 3" ]; then
+		sleep 1
+		echo "setting WebAdmin port to 8081."
+		fn_script_log_info "setting WebAdmin port to 8081."
+		sed -i 's/ListenPort=80/ListenPort=8081/g' "${servercfgdir}/DefaultWeb.ini"
+	fi
+	sleep 1
+	echo ""
+}
+
+fn_unrealtournament(){
+	# allow user to input server name and password
+	if [ -z "${autoinstall}" ]; then
+		echo ""
+		echo "Configuring ${gamename} Server"
+		echo "================================="
+		sleep 1
+		read -p "Enter server name: " servername
+		read -p "Enter rcon password: " rconpass
+	else
+		servername="${servicename}"
+		rconpass="rconpassword"
+	fi
+	echo "changing hostname."
+	fn_script_log_info "changing hostname."
+	sed -i "s/\"<hostname>\"/\"${servername}\"/g" "${servercfgdir}/Game.ini"
+	sleep 1
+	echo "changing rconpassword."
+	fn_script_log_info "changing rconpassword."
+	sed -i "s/\"<rconpassword>\"/\"${rconpass}\"/g" "${servercfgdir}/Engine.ini"
+	sleep 1
+
+}
+
 echo ""
 if [ "${gamename}" != "Hurtworld" ]; then
 echo "Creating Configs"
@@ -257,6 +308,13 @@ elif [ "${gamename}" == "Double Action: Boogaloo" ]; then
 	fn_sourceconfig
 elif [ "${gamename}" == "Empires Mod" ]; then
 	fn_defaultconfig
+elif [ "${gamename}" == "Enemy Territory" ]; then
+	echo -e "downloading lgsm-default.cfg...\c"
+	wget -N /dev/null ${githuburl}/EnemyTerritory/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
+	sleep 1
+	fn_defaultconfig
+	fn_userinputconfig
+	echo ""
 elif [ "${gamename}" == "Fistful of Frags" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
 	wget -N /dev/null ${githuburl}/FistfulOfFrags/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
@@ -301,6 +359,11 @@ elif [ "${gamename}" == "Left 4 Dead 2" ]; then
 	wget -N /dev/null ${githuburl}/Left4Dead2/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_sourceconfig
+elif [ "${gamename}" == "Minecraft" ]; then
+	echo -e "downloading lgsm-default.ini...\c"
+	wget -N /dev/null ${githuburl}/Minecraft/cfg/lgsm-default.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
+	sleep 1
+	fn_defaultconfig
 elif [ "${gamename}" == "No More Room in Hell" ]; then
 	echo -e "downloading lgsm-default.cfg...\c"
 	wget -N /dev/null ${githuburl}/NoMoreRoomInHell/cfg/lgsm-default.cfg 2>&1 | grep -F HTTP | cut -c45- | uniq
@@ -382,6 +445,15 @@ elif [ "${gamename}" == "Terraria" ]; then
 	wget -N /dev/null ${githuburl}/Terraria/cfg/lgsm-default.txt 2>&1 | grep -F HTTP | cut -c45- | uniq
 	sleep 1
 	fn_defaultconfig
+elif [ "${gamename}" == "Unreal Tournament" ]; then
+	echo -e "downloading Engine.ini...\c"
+	wget -N /dev/null ${githuburl}/UnrealTournament/cfg/Engine.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
+	echo -e "downloading Game.ini...\c"
+	wget -N /dev/null ${githuburl}/UnrealTournament/cfg/Game.ini 2>&1 | grep -F HTTP | cut -c45- | uniq
+	sleep 1
+	fn_unrealtournament
+elif [ "${gamename}" == "Unreal Tournament 3" ]; then
+	fn_ut3config
 elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
 	fn_unreal2config
 elif [ "${gamename}" == "Unreal Tournament 99" ]; then

+ 1 - 1
lgsm/functions/install_gslt.sh

@@ -12,7 +12,7 @@ echo ""
 echo "Game Server Login Token"
 echo "================================="
 sleep 1
-if [ "${gamename}" == "Counter Strike: Global Offensive" ]; then
+if [ "${gamename}" == "Counter Strike: Global Offensive" ]||[ "${gamename}" == "Counter Strike: Source" ]; then
 	echo "GSLT is required to run a public ${gamename} server"
 	fn_script_log_info "GSLT is required to run a public ${gamename} server"
 else

+ 33 - 0
lgsm/functions/install_minecraft_eula.sh

@@ -0,0 +1,33 @@
+#!/bin/bash
+# LGSM install_minecraft_eula.sh function
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+# Description: Gets user to accept the EULA.
+
+echo ""
+echo "Accept ${gamename} EULA"
+echo "================================="
+sleep 1
+echo "You are required to accept the EULA:"
+echo "https://account.mojang.com/documents/minecraft_eula"
+
+echo "eula=false" > "${filesdir}/eula.txt"
+
+if [ -z "${autoinstall}" ]; then
+echo "By continuing you are indicating your agreement to the EULA."
+echo ""
+	while true; do
+		read -e -i "y" -p "Continue [Y/n]" yn
+		case $yn in
+		[Yy]* ) break;;
+		[Nn]* ) core_exit.sh;;
+		* ) echo "Please answer yes or no.";;
+		esac
+	done
+else
+echo "By using auto-install you are indicating your agreement to the EULA."
+echo ""
+	sleep 5
+fi
+
+sed -i "s/eula=false/eula=true/g" "${filesdir}/eula.txt"

+ 12 - 1
lgsm/functions/install_server_files.sh

@@ -13,6 +13,14 @@ fn_install_server_files(){
 		fileurl="https://gameservermanagers.com/files/UnrealTournament99/ut99-server-451-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut99-server-451-ultimate-linux.tar.bz2"; executecmd="noexecute" run="norun"; force="noforce"; md5="49cb24d0550ff6ddeaba6007045c6edd"
 	elif [ "${gamename}" == "Unreal Tournament 2004" ]; then
 		fileurl="https://gameservermanagers.com/files/UnrealTournament2004/ut2004-server-3339-ultimate-linux.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="ut2004-server-3339-ultimate-linux.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="67c5e2cd9c2a4b04f163962ee41eff54"
+	elif [ "${gamename}" == "Unreal Tournament 3" ]; then
+		fileurl="https://s3.amazonaws.com/linuxgsm/UT3-linux-server-2.1.tar.gz"; filedir="${lgsmdir}/tmp"; filename="UT3-linux-server-2.1.tar.gz";  executecmd="noexecute" run="norun"; force="noforce"; md5="6c22fcef9e2e03ed154df97569af540c"
+	elif [ "${gamename}" == "Battlefield: 1942" ]; then
+		fileurl="https://s3.amazonaws.com/linuxgsm/bf1942_lnxded-1.61-hacked-to-1.612.full.tar.gz"; filedir="${lgsmdir}/tmp"; filename="bf1942_lnxded-1.61-hacked-to-1.612.full.tar.gz";  executecmd="noexecute" run="norun"; force="noforce"; md5="7e9d2538a62b228f2de7176b44659aa9"
+	elif [ "${gamename}" == "Enemy Territory" ]; then
+		fileurl="https://s3.amazonaws.com/linuxgsm/enemy-territory.260b.tar.gz"; filedir="${lgsmdir}/tmp"; filename="enemy-territory.260b.tar.gz";  executecmd="noexecute" run="norun"; force="noforce"; md5="ded32053e470fe15d9403ec4a0ab7e89"
+	elif [ "${gamename}" == "Unreal Tournament" ]; then
+		fileurl="https://s3.amazonaws.com/unrealtournament/UnrealTournament-Server-XAN-3045522-Linux.zip"; filedir="${lgsmdir}/tmp"; filename="UnrealTournament-Server-XAN-3045522-Linux.zip";  executecmd="noexecute" run="norun"; force="noforce"; md5="553fed5645a9fc623e92563049bf79f6"
 	elif [ "${gamename}" == "GoldenEye: Source" ]; then
 		fileurl="https://gameservermanagers.com/files/GoldenEyeSource/goldenEye_source_v4.2.4_server_2015_map_pack.tar.bz2"; filedir="${lgsmdir}/tmp"; filename="goldenEye_source_v4.2.4_server_2015_map_pack.tar.bz2";  executecmd="noexecute" run="norun"; force="noforce"; md5="3148ac38acc3642b0d6d64f51f27de15"
 	fi
@@ -78,7 +86,7 @@ fn_install_server_files_steamcmd(){
 	# Goldsource servers commonly fail to download all the server files required.
 	# Validating a few of times may reduce the chance of this issue.
 	if [ "${engine}" == "goldsource" ]; then
-		fn_print_infomation_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue."
+		fn_print_information_nl "Goldsource servers commonly fail to download all the server files required. Validating a few of times may reduce the chance of this issue."
 		counter="0"
 		while [ "${counter}" -le "4" ]; do
 			counter=$((counter+1))
@@ -95,6 +103,9 @@ sleep 1
 
 if [ "${gamename}" == "TeamSpeak 3" ]; then
 	update_ts3.sh
+elif [ "${gamename}" == "Minecraft" ]; then
+	update_minecraft.sh
+	install_minecraft_eula.sh
 elif [ "${gamename}" == "Mumble" ]; then
 	update_mumble.sh
 elif [ -z "${appid}" ]||[ "${gamename}" == "GoldenEye: Source" ]; then

+ 157 - 0
lgsm/functions/update_minecraft.sh

@@ -0,0 +1,157 @@
+#!/bin/bash
+# LGSM update_minecraft.sh function
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+# Description: Handles updating of Minecraft servers.
+
+local commandname="UPDATE"
+local commandaction="Update"
+local function_selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
+
+fn_update_dl(){
+	fn_fetch_file "https://s3.amazonaws.com/Minecraft.Download/versions/${availablebuild}/minecraft_server.${availablebuild}.jar" "${lgsmdir}/tmp" "minecraft_server.${availablebuild}.jar"
+	echo -e "copying to ${filesdir}...\c"
+	fn_script_log "Copying to ${filesdir}"
+	cp "${lgsmdir}/tmp/minecraft_server.${availablebuild}.jar" "${filesdir}/minecraft_server.jar"
+	local exitcode=$?
+	if [ ${exitcode} -eq 0 ]; then
+		fn_print_ok_eol_nl
+	else
+		fn_print_fail_eol_nl
+	fi
+}
+
+fn_update_currentbuild(){
+	# Gets current build info
+	# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
+	if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
+		fn_print_error "Checking for update: mojang.com"
+		sleep 1
+		fn_print_error_nl "Checking for update: mojang.com: No logs with server version found"
+		fn_script_log_error "Checking for update: mojang.com: No logs with server version found"
+		sleep 1
+		fn_print_info_nl "Checking for update: mojang.com: Forcing server restart"
+		fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
+		sleep 1
+		exitbypass=1
+		command_stop.sh
+		exitbypass=1
+		command_start.sh
+		sleep 1
+		# Check again and exit on failure.
+		if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
+			fn_print_fail_nl "Checking for update: mojang.com: Still No logs with server version found"
+			fn_script_log_fatal "Checking for update: mojang.com: Still No logs with server version found"
+			core_exit.sh
+		fi
+	fi
+
+	# Get current build from logs
+	currentbuild=$(cat "${filesdir}/logs/latest.log" 2> /dev/null | grep version | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
+	if [ -z "${currentbuild}" ]; then
+		fn_print_error_nl "Checking for update: mojang.com: Current build version not found"
+		fn_script_log_error "Checking for update: mojang.com: Current build version not found"
+		sleep 1
+		fn_print_info_nl "Checking for update: mojang.com: Forcing server restart"
+		fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
+		exitbypass=1
+		command_stop.sh
+		exitbypass=1
+		command_start.sh
+		currentbuild=$(cat "${filesdir}/logs/latest.log" 2> /dev/null | grep version | egrep -o '((\.)?[0-9]{1,3}){1,3}\.[0-9]{1,3}')
+		if [ -z "${currentbuild}" ]; then
+			fn_print_fail_nl "Checking for update: mojang.com: Current build version still not found"
+			fn_script_log_fatal "Checking for update: mojang.com: Current build version still not found"
+			core_exit.sh
+		fi
+	fi
+}
+
+fn_update_availablebuild(){
+	# Gets latest build info.
+	availablebuild=$(curl -s "https://launchermeta.mojang.com/mc/game/version_manifest.json" | sed -e 's/^.*"release":"\([^"]*\)".*$/\1/')
+	sleep 1
+
+	# Checks if availablebuild variable has been set
+	if [ -z "${availablebuild}" ]; then
+		fn_print_fail "Checking for update: mojang.com"
+		sleep 1
+		fn_print_fail "Checking for update: mojang.com: Not returning version info"
+		fn_script_log_fatal "Failure! Checking for update: mojang.com: Not returning version info"
+		core_exit.sh
+	else
+		fn_print_ok_nl "Checking for update: mojang.com"
+		fn_script_log_pass "Checking for update: mojang.com"
+		sleep 1
+	fi
+}
+
+fn_update_compare(){
+	# Removes dots so if can compare version numbers
+	currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
+	availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
+
+	if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
+		echo -e "\n"
+		echo -e "Update available:"
+		sleep 1
+		echo -e "	Current build: ${red}${currentbuild}${default}"
+		echo -e "	Available build: ${green}${availablebuild}${default}"
+		echo -e ""
+		sleep 1
+		echo ""
+		echo -en "Applying update.\r"
+		sleep 1
+		echo -en "Applying update..\r"
+		sleep 1
+		echo -en "Applying update...\r"
+		sleep 1
+		echo -en "\n"
+		fn_script_log "Update available"
+		fn_script_log "Current build: ${currentbuild}"
+		fn_script_log "Available build: ${availablebuild}"
+		fn_script_log "${currentbuild} > ${availablebuild}"
+
+		unset updateonstart
+
+		check_status.sh
+		if [ "${status}" == "0" ]; then
+			fn_update_dl
+			exitbypass=1
+			command_start.sh
+			exitbypass=1
+			command_stop.sh
+		else
+			exitbypass=1
+			command_stop.sh
+			fn_update_dl
+			exitbypass=1
+			command_start.sh
+		fi
+		alert="update"
+		alert.sh
+	else
+		echo -e "\n"
+		echo -e "No update available:"
+		echo -e "	Current version: ${green}${currentbuild}${default}"
+		echo -e "	Available version: ${green}${availablebuild}${default}"
+		echo -e ""
+		fn_print_ok_nl "No update available"
+		fn_script_log_info "Current build: ${currentbuild}"
+		fn_script_log_info "Available build: ${availablebuild}"
+	fi
+}
+
+
+if [ "${installer}" == "1" ]; then
+	fn_update_availablebuild
+	fn_update_dl
+else
+	# Checks for server update from mojang.com
+	fn_print_dots "Checking for update: mojang.com"
+	fn_script_log_info "Checking for update: mojang.com"
+	sleep 1
+	fn_update_currentbuild
+	fn_update_availablebuild
+	fn_update_compare
+fi

+ 1 - 1
lgsm/functions/update_mumble.sh

@@ -87,7 +87,7 @@ fn_update_mumble_availablebuild(){
 		fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info"
 		core_exit.sh
 	else
-		fn_print_ok_nl "Checking for update: GitHub"
+		fn_print_ok "Checking for update: GitHub"
 		fn_script_log_pass "Checking for update: GitHub"
 		sleep 1
 	fi

+ 1 - 1
lgsm/functions/update_ts3.sh

@@ -119,7 +119,7 @@ fn_update_ts3_availablebuild(){
 		fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info"
 		core_exit.sh
 	else
-		fn_print_ok_nl "Checking for update: teamspeak.com"
+		fn_print_ok "Checking for update: teamspeak.com"
 		fn_script_log_pass "Checking for update: teamspeak.com"
 		sleep 1
 	fi

+ 2 - 2
tests/tests_jc2server.sh

@@ -41,8 +41,8 @@ parms=""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="$TRAVIS_BRANCH"
 
 # Steam

+ 2 - 2
tests/tests_ts3server.sh

@@ -37,8 +37,8 @@ parms=""
 # Github Branch Select
 # Allows for the use of different function files
 # from a different repo and/or branch.
-githubuser="dgibbs64"
-githubrepo="linuxgsm"
+githubuser="GameServerManagers"
+githubrepo="LinuxGSM"
 githubbranch="$TRAVIS_BRANCH"
 
 # Server Details