From 12009da8fe02548ee2c163c81fe0387be6b0bf63 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 18 Dec 2022 10:59:43 +0100 Subject: [PATCH 001/251] install script fix double tar cmd + move to python3 --- bots/discord/bastion/README.md | 3 --- bots/discord/bastion/egg-bastion.json | 6 +++--- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/bots/discord/bastion/README.md b/bots/discord/bastion/README.md index 2156a2fb..963bf474 100644 --- a/bots/discord/bastion/README.md +++ b/bots/discord/bastion/README.md @@ -4,9 +4,6 @@ Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities. -## Install notes - -There will be a tar error on first install. You can safly ignore this. ## Running the bot diff --git a/bots/discord/bastion/egg-bastion.json b/bots/discord/bastion/egg-bastion.json index 0ad33578..cc0ea170 100644 --- a/bots/discord/bastion/egg-bastion.json +++ b/bots/discord/bastion/egg-bastion.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-15T16:23:16+01:00", + "exported_at": "2022-12-18T10:58:30+01:00", "name": "Bastion", "author": "parker@parkervcp.com", "description": "Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python git tar\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ntar -czf mongodb_back.tar.gz mongodb\/\r\nmv mongodb_back.tar.gz \/tmp\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm bastion.cmd .env.example bastion.sh\r\n\r\n\r\nmkdir mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python3 git tar\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm -rf bastion.cmd .env.example bastion.sh scripts\/\r\n\r\n\r\nmkdir -p mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "node:18-bullseye", "entrypoint": "bash" } @@ -119,4 +119,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 3028b481b8d3f0b66977f2fbe1b11ba7bf90418c Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 18 Dec 2022 11:28:45 +0100 Subject: [PATCH 002/251] bastion: update npm to latest on install add L31 npm install -g npm@latest --- bots/discord/bastion/egg-bastion.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bots/discord/bastion/egg-bastion.json b/bots/discord/bastion/egg-bastion.json index cc0ea170..37356c98 100644 --- a/bots/discord/bastion/egg-bastion.json +++ b/bots/discord/bastion/egg-bastion.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-18T10:58:30+01:00", + "exported_at": "2022-12-18T11:27:40+01:00", "name": "Bastion", "author": "parker@parkervcp.com", "description": "Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python3 git tar\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm -rf bastion.cmd .env.example bastion.sh scripts\/\r\n\r\n\r\nmkdir -p mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# Bastion Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## Move to install folder\r\napt update\r\napt install -y build-essential libtool python3 git tar\r\n\r\n\r\nmkdir -p \/mnt\/server\/\r\ncd \/mnt\/server\/\r\n\r\nif [ -d \"\/mnt\/server\/mongodb\" ]\r\nthen\r\n cd \/mnt\/server\/\r\n echo \"backing up mongodb\"\r\n REINSTALL=true\r\n tar -czf mongodb_backup.tar.gz mongodb\/\r\n mv mongodb_backup.tar.gz \/tmp\r\nfi\r\n\r\ncd \/mnt\/server\r\nrm -rf * .git\/ .github\/ .env.example .eslintrc.yml .gitattributes .gitignore .npm\/\r\n\r\n\r\n## Clone repo\r\necho \"cloning Bastion bot\"\r\ngit clone -q --depth 1 https:\/\/github.com\/TheBastionBot\/Bastion.git .\/\r\n\r\necho \"updating npm\"\r\nnpm install -g npm@latest\r\necho \"npm install --no-package-lock\"\r\nnpm install --no-package-lock\r\necho \"npm run build\"\r\nnpm run build\r\n\r\n## Move config files.\r\nmv settings.example.yaml settings.yaml\r\nrm -rf bastion.cmd .env.example bastion.sh scrips\/\r\n\r\n\r\nmkdir -p mongodb\/\r\nif [ \"$REINSTALL\" == \"true\" ]\r\nthen\r\n cd \/mnt\/server\r\n echo \"reinstall\"\r\n mv \/tmp\/mongodb_backup.tar.gz \/mnt\/server\r\n tar xf mongodb_backup.tar.gz\r\n rm mongodb_backup.tar.gz\r\nelse\r\n echo \"fresh install\"\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "node:18-bullseye", "entrypoint": "bash" } @@ -119,4 +119,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 245d3326e4b9f36a0b015eb33247aab7d19365af Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 16 Feb 2023 16:18:02 +0100 Subject: [PATCH 003/251] rewrite minetest --- game_eggs/minetest/egg-minetest.json | 136 ++++++++++++++++++++++++--- 1 file changed, 121 insertions(+), 15 deletions(-) diff --git a/game_eggs/minetest/egg-minetest.json b/game_eggs/minetest/egg-minetest.json index 07a37fdf..d047cbbc 100644 --- a/game_eggs/minetest/egg-minetest.json +++ b/game_eggs/minetest/egg-minetest.json @@ -1,36 +1,142 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "2020-11-02T22:59:26-05:00", + "exported_at": "2023-02-16T16:17:26+01:00", "name": "Minetest", "author": "support@pterodactyl.io", "description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.", - "image": "quay.io\/parkervcp\/pterodactyl-images:base_ubuntu", - "startup": ".\/bin\/minetestserver --port {{SERVER_PORT}} --terminal", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/games:minetest": "ghcr.io\/parkervcp\/games:minetest" + }, + "file_denylist": [], + "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", "config": { - "files": "{}", - "startup": "{\r\n \"done\": \" Server for gameid\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": false,\r\n \"location\": \"debug.txt\"\r\n}", + "files": "{\r\n \"minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" name = \": \" name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \" server_name = \": \" server_name = {{server.build.env.SERVER_NAME}}\",\r\n \" server_description = \": \" server_description = {{server.build.env.SERVER_DESC}}\",\r\n \" server_address = \": \" server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \" server_url = \": \" server_url = {{server.build.env.SERVER_URL}}\",\r\n \" server_announce = \": \" server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \" serverlist_url = \": \" serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \" motd = \": \" motd = {{server.build.env.SERVER_MOTD}}\",\r\n \" max_users = \": \" max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \" bind_address = \": \" bind_address = 0.0.0.0\",\r\n \" default_password = \": \" default_password = {{server.build.env.SERVER_PASSWORD}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}", + "logs": "{}", "stop": "\/shutdown" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\ncd \/mnt\/server &&\r\n\r\n# Install installation dependencies\r\napt update &&\r\napt -y install unzip wget build-essential libirrlicht-dev cmake libbz2-dev libjpeg-dev libxxf86vm-dev libsqlite3-dev libopenal-dev libcurl4-gnutls-dev libfreetype6-dev zlib1g-dev libgmp-dev libjsoncpp-dev luajit libncurses5-dev &&\r\n#touch test &&\r\n\r\n# Download, compile and prepare the engine\r\nwget -Osrc.zip https:\/\/github.com\/minetest\/minetest\/archive\/\"${MTVERSION}\".zip &&\r\nunzip .\/src.zip &&\r\nrm .\/src.zip &&\r\ncd .\/minetest-\"${MTVERSION}\" &&\r\ncmake . -DRUN_IN_PLACE=TRUE -DBUILD_CLIENT=FALSE -DBUILD_SERVER=TRUE -DENABLE_GLES=OFF -DENABLE_POSTGRESQL=OFF -DENABLE_REDIS=OFF -DENABLE_SOUND=OFF -DENABLE_LEVELDB=OFF -DENABLE_SPATIAL=OFF &&\r\nmake -j$(nproc) &&\r\nmake package &&\r\nmv .\/minetest-\"${MTVERSION}\"-linux.tar.gz ..\/ &&\r\ncd .. &&\r\nrm -rf .\/minetest-\"${MTVERSION}\" &&\r\ntar xfz .\/minetest-\"${MTVERSION}\"-linux.tar.gz &&\r\nrm minetest-\"${MTVERSION}\"-linux.tar.gz &&\r\nmv .\/minetest-\"${MTVERSION}\"-linux\/* .\/ &&\r\nrm -rf minetest-\"${MTVERSION}\"-linux &&\r\ntouch .\/minetest.conf &&\r\n\r\n# Download and prepare the game\r\ncd .\/games &&\r\nwget -Ominetest_game.zip https:\/\/github.com\/minetest\/minetest_game\/archive\/\"${MTVERSION}\".zip &&\r\nunzip minetest_game.zip &&\r\n#rm minetest_game.zip &&\r\nmv minetest_game-\"${MTVERSION}\" minetest_game &&\r\ncd .. &&\r\n\r\n# Clean up a bit\r\nrm -rf clientmods unix doc client fonts textures &&\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", - "container": "ubuntu:18.04", + "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \/mnt\/server\/server.log\r\nfi\r\n\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf https:\/\/pteropaste.com\/mwxco1\r\nfi\r\n\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, "variables": [ { - "name": "Version", - "description": "The version of MT to install. Releases only", - "env_variable": "MTVERSION", - "default_value": "5.4.1", - "user_viewable": false, + "name": "Name of the admin player.", + "description": "When running a server, clients connecting with this name are admins.", + "env_variable": "SERVER_ADMIN_NAME", + "default_value": "", + "user_viewable": true, "user_editable": true, - "rules": "required|string|max:10" + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Server name", + "description": "Name of the server, to be displayed when players join and in the serverlist.", + "env_variable": "SERVER_NAME", + "default_value": "Minetest server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Description of the server", + "description": "Description of server, to be displayed when players join and in the serverlist.", + "env_variable": "SERVER_DESC", + "default_value": "mine here", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Domain name of the server", + "description": "Domain name of server, to be displayed in the serverlist.", + "env_variable": "SERVER_DOMAIN", + "default_value": "game.minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Server url", + "description": "Homepage of server, to be displayed in the serverlist.", + "env_variable": "SERVER_URL", + "default_value": "https:\/\/minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Show in server list", + "description": "Automatically report to the serverlist.", + "env_variable": "SERVER_ANNOUNCE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "string|in:true,false", + "field_type": "text" + }, + { + "name": "Announce serverlist", + "description": "Announce to this serverlist.", + "env_variable": "SERVER_LIST_URL", + "default_value": "servers.minetest.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "message of the day", + "description": "Message of the day displayed to players connecting.", + "env_variable": "SERVER_MOTD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players that can be connected simultaneously.", + "env_variable": "SERVER_MAX_USERS", + "default_value": "15", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|min:0|max:65535", + "field_type": "text" + }, + { + "name": "Server password", + "description": "New users need to input this password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "World name", + "description": "The name of the world", + "env_variable": "WORLD_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" } ] } From 1dfa34683983800e28b865f96efc28d4d5cab41a Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 16 Feb 2023 16:26:42 +0100 Subject: [PATCH 004/251] Update README.md --- game_eggs/minetest/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/game_eggs/minetest/README.md b/game_eggs/minetest/README.md index 591733ca..28e59989 100644 --- a/game_eggs/minetest/README.md +++ b/game_eggs/minetest/README.md @@ -1,3 +1,7 @@ # Minetest An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server. + +## Console + +The console is currently bugged. It does work but the startup message is messed up From 91e5a36ca6a5a7202332d5224a2ed1407d841f70 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 23 Feb 2023 19:26:34 +0100 Subject: [PATCH 005/251] minetest: update 2 --- game_eggs/minetest/egg-minetest.json | 60 +++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/game_eggs/minetest/egg-minetest.json b/game_eggs/minetest/egg-minetest.json index d047cbbc..9e2a1eb8 100644 --- a/game_eggs/minetest/egg-minetest.json +++ b/game_eggs/minetest/egg-minetest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-16T16:17:26+01:00", + "exported_at": "2023-02-23T19:25:23+01:00", "name": "Minetest", "author": "support@pterodactyl.io", "description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.", @@ -13,16 +13,16 @@ "ghcr.io\/parkervcp\/games:minetest": "ghcr.io\/parkervcp\/games:minetest" }, "file_denylist": [], - "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", + "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", "config": { - "files": "{\r\n \"minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" name = \": \" name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \" server_name = \": \" server_name = {{server.build.env.SERVER_NAME}}\",\r\n \" server_description = \": \" server_description = {{server.build.env.SERVER_DESC}}\",\r\n \" server_address = \": \" server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \" server_url = \": \" server_url = {{server.build.env.SERVER_URL}}\",\r\n \" server_announce = \": \" server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \" serverlist_url = \": \" serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \" motd = \": \" motd = {{server.build.env.SERVER_MOTD}}\",\r\n \" max_users = \": \" max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \" bind_address = \": \" bind_address = 0.0.0.0\",\r\n \" default_password = \": \" default_password = {{server.build.env.SERVER_PASSWORD}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}", "logs": "{}", - "stop": "\/shutdown" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \/mnt\/server\/server.log\r\nfi\r\n\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf https:\/\/pteropaste.com\/mwxco1\r\nfi\r\n\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", + "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server || exit\r\n\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\nGAMES_FOLDER=\/mnt\/server\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\nMOD_FOLDER=\/mnt\/server\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if [ -z \"$COMMUNITY_GAME_NAME\" ]\r\n then\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n exit\r\n fi\r\n if [ -z \"$COMMUNITY_GAME_AUTOR\" ]\r\n then\r\n echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n exit\r\n fi\r\n cd \/mnt\/server\/games\r\n D_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n curl --progress-bar --verbose -sSL -o game.zip https:\/\/content.minetest.net\/$D_URL\r\n cd \/mnt\/server\/games\r\n unzip -o game.zip\r\n rm game.zip\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -137,6 +137,56 @@ "user_editable": true, "rules": "required|string|max:32", "field_type": "text" + }, + { + "name": "Game name", + "description": "Default game when creating a new world. Only change if you have already uploaded the game!", + "env_variable": "DEFAULT_GAME", + "default_value": "minetest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Community download", + "description": "Download a community game.\r\nNeeds COMMUNITY_GAME_NAME and COMMUNITY_GAME_AUTOR", + "env_variable": "COMMUNITY_DOWNLOAD", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Community game name", + "description": "Case sensitive!\r\nExample: https:\/\/content.minetest.net\/packages\/Wuzzy\/mineclone2\/\r\nthen this should be mineclone2", + "env_variable": "COMMUNITY_GAME_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Community game author", + "description": "Case-sensitive!\r\nExample: https:\/\/content.minetest.net\/packages\/Wuzzy\/mineclone2\/\r\nthen this should be Wuzzy", + "env_variable": "COMMUNITY_GAME_AUTOR", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Game PATH", + "description": "", + "env_variable": "MINETEST_SUBGAME_PATH", + "default_value": "\/home\/container\/games", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" } ] } From 35376d4a8666d41845783e0a913234afa36a57d6 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:37:47 +0100 Subject: [PATCH 006/251] minetest: update 2 --- game_eggs/minetest/README.md | 9 ++++++++- game_eggs/minetest/egg-minetest.json | 14 +++++++------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/game_eggs/minetest/README.md b/game_eggs/minetest/README.md index 28e59989..7a93329c 100644 --- a/game_eggs/minetest/README.md +++ b/game_eggs/minetest/README.md @@ -2,6 +2,13 @@ An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server. +## Stopping the server + +For the server to be able to stop properly you have to give the admin/console user the permission `server` else you will have to kill the server and no date will be saved! + ## Console -The console is currently bugged. It does work but the startup message is messed up +The console is currently bugged. It does work but the startup message is messed up. + +## Rewrite +A special thank you to [Tealk](https://github.com/Tealk) for helping me rewrite this egg. \ No newline at end of file diff --git a/game_eggs/minetest/egg-minetest.json b/game_eggs/minetest/egg-minetest.json index 9e2a1eb8..3fe9faf4 100644 --- a/game_eggs/minetest/egg-minetest.json +++ b/game_eggs/minetest/egg-minetest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-23T19:25:23+01:00", + "exported_at": "2023-02-25T18:33:22+01:00", "name": "Minetest", "author": "support@pterodactyl.io", "description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.", @@ -13,16 +13,16 @@ "ghcr.io\/parkervcp\/games:minetest": "ghcr.io\/parkervcp\/games:minetest" }, "file_denylist": [], - "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", + "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", "config": { "files": "{\r\n \"minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}", "logs": "{}", - "stop": "^^C" + "stop": "\/shutdown" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server || exit\r\n\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\nGAMES_FOLDER=\/mnt\/server\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\nMOD_FOLDER=\/mnt\/server\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if [ -z \"$COMMUNITY_GAME_NAME\" ]\r\n then\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n exit\r\n fi\r\n if [ -z \"$COMMUNITY_GAME_AUTOR\" ]\r\n then\r\n echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n exit\r\n fi\r\n cd \/mnt\/server\/games\r\n D_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n curl --progress-bar --verbose -sSL -o game.zip https:\/\/content.minetest.net\/$D_URL\r\n cd \/mnt\/server\/games\r\n unzip -o game.zip\r\n rm game.zip\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", + "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\/.minetest\r\n\r\n# Create server.log\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\n# Create minetest.conf\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\n# Create games folder\r\nGAMES_FOLDER=\/mnt\/server\/.minetest\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\n# Create mods folder\r\nMOD_FOLDER=\/mnt\/server\/.minetest\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\n# Install Gamemode\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if ! [ -z \"$COMMUNITY_GAME_NAME\" ]; then\r\n\t\t if ! [ -z \"$COMMUNITY_GAME_AUTOR\" ]; then\r\n\t\t \techo \"Download $COMMUNITY_GAME_NAME\"\r\n\t\t\t\tD_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n\t\t\t\tcurl -sSL -o \/mnt\/server\/.minetest\/games.zip https:\/\/content.minetest.net\/$D_URL >\/dev\/null 2>&1\r\n\t\t\t\tunzip -o \/mnt\/server\/.minetest\/games.zip -d \/mnt\/server\/.minetest\/games >\/dev\/null 2>&1\r\n\t\t\t\trm \/mnt\/server\/.minetest\/games.zip\r\n\t\t else\r\n\t\t echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n\t\t fi\r\n else\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n fi\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -182,11 +182,11 @@ "name": "Game PATH", "description": "", "env_variable": "MINETEST_SUBGAME_PATH", - "default_value": "\/home\/container\/games", - "user_viewable": true, + "default_value": "\/home\/container\/.minetest\/games", + "user_viewable": false, "user_editable": false, "rules": "required|string|max:64", "field_type": "text" } ] -} +} \ No newline at end of file From 9188434fd0dfaa249f1d5770f595164ee27832d0 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 26 Feb 2023 12:01:19 +0100 Subject: [PATCH 007/251] minetest: update 3 Move everything exept the log file in to the .minetest folder + move to other installation image as this works on arm64 --- game_eggs/minetest/egg-minetest.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/game_eggs/minetest/egg-minetest.json b/game_eggs/minetest/egg-minetest.json index 3fe9faf4..6b47e682 100644 --- a/game_eggs/minetest/egg-minetest.json +++ b/game_eggs/minetest/egg-minetest.json @@ -4,26 +4,26 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-25T18:33:22+01:00", + "exported_at": "2023-02-26T11:59:47+01:00", "name": "Minetest", "author": "support@pterodactyl.io", "description": "An open source voxel game engine. Play one of our many games, mod a game to your liking, make your own game, or play on a multiplayer server.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/games:minetest": "ghcr.io\/parkervcp\/games:minetest" + "Minetest": "ghcr.io\/parkervcp\/games:minetest" }, "file_denylist": [], - "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/minetest.conf --logfile \/home\/container\/server.log", + "startup": "minetest --server --port {{SERVER_PORT}} --world \/home\/container\/.minetest\/worlds\/{{WORLD_NAME}} --terminal --config \/home\/container\/.minetest\/minetest.conf --logfile \/home\/container\/server.log", "config": { - "files": "{\r\n \"minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \".minetest\/minetest.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"name\": \"name = {{server.build.env.SERVER_ADMIN_NAME}}\",\r\n \"server_name\": \"server_name = {{server.build.env.SERVER_NAME}}\",\r\n \"server_description\": \"server_description = {{server.build.env.SERVER_DESC}}\",\r\n \"server_address\": \"server_address = {{server.build.env.SERVER_DOMAIN}}\",\r\n \"server_url\": \"server_url = {{server.build.env.SERVER_URL}}\",\r\n \"server_announce\": \"server_announce = {{server.build.env.SERVER_ANNOUNCE}}\",\r\n \"serverlist_url\": \"serverlist_url = {{server.build.env.SERVER_LIST_URL}}\",\r\n \"motd\": \"motd = {{server.build.env.SERVER_MOTD}}\",\r\n \"max_users\": \"max_users = {{server.build.env.SERVER_MAX_USERS}}\",\r\n \"bind_address\": \"bind_address = 0.0.0.0\",\r\n \"default_password\": \"default_password = {{server.build.env.SERVER_PASSWORD}}\",\r\n \"default_game\": \"default_game = {{server.build.env.DEFAULT_GAME}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \" Server for gameid\"\r\n}", "logs": "{}", "stop": "\/shutdown" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\/.minetest\r\n\r\n# Create server.log\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\n# Create minetest.conf\r\nCONFIG_FILE=\/mnt\/server\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\n# Create games folder\r\nGAMES_FOLDER=\/mnt\/server\/.minetest\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\n# Create mods folder\r\nMOD_FOLDER=\/mnt\/server\/.minetest\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\n# Install Gamemode\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if ! [ -z \"$COMMUNITY_GAME_NAME\" ]; then\r\n\t\t if ! [ -z \"$COMMUNITY_GAME_AUTOR\" ]; then\r\n\t\t \techo \"Download $COMMUNITY_GAME_NAME\"\r\n\t\t\t\tD_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n\t\t\t\tcurl -sSL -o \/mnt\/server\/.minetest\/games.zip https:\/\/content.minetest.net\/$D_URL >\/dev\/null 2>&1\r\n\t\t\t\tunzip -o \/mnt\/server\/.minetest\/games.zip -d \/mnt\/server\/.minetest\/games >\/dev\/null 2>&1\r\n\t\t\t\trm \/mnt\/server\/.minetest\/games.zip\r\n\t\t else\r\n\t\t echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n\t\t fi\r\n else\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n fi\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", - "container": "ghcr.io\/parkervcp\/installers:debian", + "script": "#!\/bin\/bash\r\n# Minetest Installation Script\r\nmkdir -p \/mnt\/server\/.minetest\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\n# Create server.log\r\nLOG_FILE=\/mnt\/server\/server.log\r\nif [ -f \"$LOG_FILE\" ]; then\r\n echo \"Log file already exists.\"\r\nelse \r\n echo \"Log file does not exist. Making one...\"\r\n touch \"$LOG_FILE\"\r\nfi\r\n\r\n# Create minetest.conf\r\nCONFIG_FILE=\/mnt\/server\/.minetest\/minetest.conf\r\nif [ -f \"$CONFIG_FILE\" ]; then\r\n echo \"Config file already exists.\"\r\nelse \r\n echo \"Config file does not exist. Making one...\"\r\n curl -sSL -o \/mnt\/server\/.minetest\/minetest.conf.example https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/minetest.conf.example\r\n echo -e \"## Server settings generated by pterodactyl\\nname\\nserver_name\\nserver_description\\nserver_address\\nserver_url\\nserver_announce\\nserverlist_url\\nmotd\\nmax_users\\nbind_address\\ndefault_password\\ndefault_game\\n\\n## Custom server settings\\n\" >> \"$CONFIG_FILE\"\r\nfi\r\n\r\n# Create games folder\r\nGAMES_FOLDER=\/mnt\/server\/.minetest\/games\r\nif [ -d \"$GAMES_FOLDER\" ]; then\r\n echo \"GAMES folder already exists.\"\r\nelse \r\n echo \"GAMES folder does not exist. Making one...\"\r\n mkdir -p $GAMES_FOLDER\r\nfi\r\n\r\n# Create mods folder\r\nMOD_FOLDER=\/mnt\/server\/.minetest\/mods\r\nif [ -d \"$MOD_FOLDER\" ]; then\r\n echo \"Mods folder already exists.\"\r\nelse \r\n echo \"Mods folder does not exist. Making one...\"\r\n mkdir -p $MOD_FOLDER\r\n curl -sSL -o \"$MOD_FOLDER\"\/mods_here.txt https:\/\/raw.githubusercontent.com\/minetest\/minetest\/master\/mods\/mods_here.txt\r\nfi\r\n\r\n# Install Gamemode\r\nif [ \"$COMMUNITY_DOWNLOAD\" == \"1\" ]; then\r\n if ! [ -z \"$COMMUNITY_GAME_NAME\" ]; then\r\n\t\t if ! [ -z \"$COMMUNITY_GAME_AUTOR\" ]; then\r\n\t\t \techo \"Download $COMMUNITY_GAME_NAME\"\r\n\t\t\t\tD_URL=$(curl -s https:\/\/content.minetest.net\/packages\/$COMMUNITY_GAME_AUTOR\/$COMMUNITY_GAME_NAME\/ | grep -i download | grep packages | grep download | grep -o 'href=\".*\"' | cut -d \"=\" -f2- | egrep title= | awk -F' ' '{print $1}' | tr -d '\"')\r\n\t\t\t\tcurl -sSL -o \/mnt\/server\/.minetest\/games.zip https:\/\/content.minetest.net\/$D_URL >\/dev\/null 2>&1\r\n\t\t\t\tunzip -o \/mnt\/server\/.minetest\/games.zip -d \/mnt\/server\/.minetest\/games >\/dev\/null 2>&1\r\n\t\t\t\trm \/mnt\/server\/.minetest\/games.zip\r\n\t\t else\r\n\t\t echo \"The COMMUNITY_GAME_AUTOR variable is required to download a community game\"\r\n\t\t fi\r\n else\r\n echo \"The COMMUNITY_GAME_NAME variable is required to download a community game\"\r\n fi\r\nfi\r\n\r\n# Done!\r\necho \"Installation was successfully completed!\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -189,4 +189,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 027eff735a94e40eb316a13a918418ee6b0c333b Mon Sep 17 00:00:00 2001 From: manyrandomthings <42223559+manyrandomthings@users.noreply.github.com> Date: Tue, 28 Feb 2023 14:40:26 -0500 Subject: [PATCH 008/251] Update egg-ftb-modpacksch-server.json --- .../java/ftb/egg-ftb-modpacksch-server.json | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json index ad59555a..f428bb1e 100644 --- a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json +++ b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-06-14T21:28:54+03:00", + "exported_at": "2023-02-28T14:35:03-05:00", "name": "FTB-modpacks.ch Server", "author": "runemaster580@gmail.com", "description": "Since the release of the FTB APP, FTB modpacks are now distributed through modpacks.ch. This egg was developed for support for modpacks that are distributed through this.", @@ -13,23 +13,23 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17" - ], + "docker_images": { + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, "file_denylist": [], - "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar forge-server.jar", + "startup": "java -javaagent:log4jfix\/Log4jPatcher-1.0.0.jar -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar start-server.jar\" || printf %s \"@unix_args.txt\" )", "config": { - "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", - "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", "stop": "stop" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\n\r\n# Download needed software.\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq dos2unix\r\n}\r\n\r\n\r\nfunction get_download {\r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] && [ \"${FTB_SEARCH_TERM}\" != \"\" ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n \r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\n fi\r\n \r\n if [ -z ${FTB_MODPACK_VERSION_ID} ] && [ \"${FTB_VERSION_STRING}\" != \"\" ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\n fi\r\n \r\n echo -e \"ID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID}\"\r\n \r\n cd \/mnt\/server\r\n \r\n curl https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID}\/${FTB_MODPACK_VERSION_ID}\/server\/linux --output serversetup\r\n chmod +x .\/serversetup\r\n .\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto\r\n}\r\n\r\nfunction cleanup {\r\n rm -rf serversetup\r\n mv forge-*.jar forge-server.jar\r\n}\r\n\r\ninstall_required\r\nget_download\r\ncleanup", + "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Download needed software.\r\napt update\r\napt install -y curl jq\r\n\r\n\r\n# if no modpack id is set and modpack search term is set.\r\nif [ -z ${FTB_MODPACK_ID} ] && [ ! -z ${FTB_SEARCH_TERM} ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n\r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\nfi\r\n\r\nif [ -z ${FTB_MODPACK_VERSION_ID} ] && [ ! -z ${FTB_VERSION_STRING} ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\nfi\r\n\r\n# get architecture for installer\r\nINSTALLER_TYPE=$([ \"$(uname -m)\" == \"x86_64\" ] && echo \"linux\" || echo \"arm\/linux\")\r\n\r\necho \"ModpackID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID} InstallerType: ${INSTALLER_TYPE}\"\r\n\r\n# download installer\r\ncurl -L https:\/\/api.modpacks.ch\/public\/modpack\/0\/0\/server\/${INSTALLER_TYPE} --output serversetup\r\nchmod +x .\/serversetup\r\n\r\n\r\n# remove old forge files (to allow updating)\r\nrm -rf libraries\/net\/minecraftforge\/forge\r\nrm -f unix_args.txt\r\n\r\n# run installer\r\n.\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto --noscript --nojava\r\n\r\n# create symlink for forge unix_args.txt if exists\r\nif compgen -G \"libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt\"; then\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\nfi\r\n\r\n# move forge\/fabric jar file to start-server.jar if exists\r\nif compgen -G \"forge-*.jar\"; then\r\n mv -f forge-*.jar start-server.jar\r\nelif compgen -G \"fabric-*.jar\"; then\r\n mv -f fabric-*.jar start-server.jar\r\nfi\r\n\r\n# installer cleanup\r\nrm serversetup\r\nrm -f run.bat\r\nrm -f run.sh\r\n\r\necho \"Finished installing FTB modpack\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } @@ -42,7 +42,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:99|min:4" + "rules": "nullable|string|max:99|min:4", + "field_type": "text" }, { "name": "FTB modpack ID", @@ -51,7 +52,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|integer|min:1", + "field_type": "text" }, { "name": "FTB Pack Version", @@ -60,7 +62,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|string|max:20", + "field_type": "text" }, { "name": "FTB Pack Version ID", @@ -69,7 +72,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|integer|min:1", + "field_type": "text" } ] } From e26fc57b989e69e3b0beda8156f5d40d98bf2104 Mon Sep 17 00:00:00 2001 From: manyrandomthings <42223559+manyrandomthings@users.noreply.github.com> Date: Sun, 5 Mar 2023 13:38:27 -0500 Subject: [PATCH 009/251] Implement suggested fixes --- .../java/ftb/egg-ftb-modpacksch-server.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json index f428bb1e..76b1adeb 100644 --- a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json +++ b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-28T14:35:03-05:00", + "exported_at": "2023-03-05T13:37:42-05:00", "name": "FTB-modpacks.ch Server", "author": "runemaster580@gmail.com", "description": "Since the release of the FTB APP, FTB modpacks are now distributed through modpacks.ch. This egg was developed for support for modpacks that are distributed through this.", @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Download needed software.\r\napt update\r\napt install -y curl jq\r\n\r\n\r\n# if no modpack id is set and modpack search term is set.\r\nif [ -z ${FTB_MODPACK_ID} ] && [ ! -z ${FTB_SEARCH_TERM} ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n\r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\nfi\r\n\r\nif [ -z ${FTB_MODPACK_VERSION_ID} ] && [ ! -z ${FTB_VERSION_STRING} ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\nfi\r\n\r\n# get architecture for installer\r\nINSTALLER_TYPE=$([ \"$(uname -m)\" == \"x86_64\" ] && echo \"linux\" || echo \"arm\/linux\")\r\n\r\necho \"ModpackID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID} InstallerType: ${INSTALLER_TYPE}\"\r\n\r\n# download installer\r\ncurl -L https:\/\/api.modpacks.ch\/public\/modpack\/0\/0\/server\/${INSTALLER_TYPE} --output serversetup\r\nchmod +x .\/serversetup\r\n\r\n\r\n# remove old forge files (to allow updating)\r\nrm -rf libraries\/net\/minecraftforge\/forge\r\nrm -f unix_args.txt\r\n\r\n# run installer\r\n.\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto --noscript --nojava\r\n\r\n# create symlink for forge unix_args.txt if exists\r\nif compgen -G \"libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt\"; then\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\nfi\r\n\r\n# move forge\/fabric jar file to start-server.jar if exists\r\nif compgen -G \"forge-*.jar\"; then\r\n mv -f forge-*.jar start-server.jar\r\nelif compgen -G \"fabric-*.jar\"; then\r\n mv -f fabric-*.jar start-server.jar\r\nfi\r\n\r\n# installer cleanup\r\nrm serversetup\r\nrm -f run.bat\r\nrm -f run.sh\r\n\r\necho \"Finished installing FTB modpack\"", + "script": "#!\/bin\/bash\r\n# FTB Pack Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\ncd \/mnt\/server\r\n\r\n\r\n# Download needed software.\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq\r\n}\r\n\r\nfunction get_modpack_id {\r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] && [ ! -z ${FTB_SEARCH_TERM} ]; then\r\n JSON_DATA=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/search\/8?term=${FTB_SEARCH_TERM})\r\n \r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[]\")\r\n fi\r\n \r\n if [ -z ${FTB_MODPACK_VERSION_ID} ] && [ ! -z ${FTB_VERSION_STRING} ]; then\r\n # grabs the correct version id matching the string.\r\n FTB_MODPACK_VERSION_ID=$(curl -sSL https:\/\/api.modpacks.ch\/public\/modpack\/${FTB_MODPACK_ID} | jq -r --arg VSTRING ${FTB_VERSION_STRING} '.versions[] | select(.name == $VSTRING) | .id')\r\n fi\r\n}\r\n\r\nfunction run_installer {\r\n # get architecture for installer\r\n INSTALLER_TYPE=$([ \"$(uname -m)\" == \"x86_64\" ] && echo \"linux\" || echo \"arm\/linux\")\r\n echo \"ModpackID: ${FTB_MODPACK_ID} VersionID: ${FTB_MODPACK_VERSION_ID} InstallerType: ${INSTALLER_TYPE}\"\r\n\r\n # download installer\r\n curl -L https:\/\/api.modpacks.ch\/public\/modpack\/0\/0\/server\/${INSTALLER_TYPE} --output serversetup\r\n chmod +x .\/serversetup\r\n \r\n # remove old forge files (to allow updating)\r\n rm -rf libraries\/net\/minecraftforge\/forge\r\n rm -f unix_args.txt\r\n \r\n # run installer\r\n .\/serversetup ${FTB_MODPACK_ID} ${FTB_MODPACK_VERSION_ID} --auto --noscript --nojava\r\n}\r\n\r\n# allows startup command to work\r\nfunction move_startup_files {\r\n # create symlink for forge unix_args.txt if exists\r\n if compgen -G \"libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt\"; then\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n fi\r\n \r\n # move forge\/fabric jar file to start-server.jar if exists\r\n if compgen -G \"forge-*.jar\"; then\r\n mv -f forge-*.jar start-server.jar\r\n elif compgen -G \"fabric-*.jar\"; then\r\n mv -f fabric-*.jar start-server.jar\r\n fi\r\n}\r\n\r\n# installer cleanup\r\nfunction installer_cleanup {\r\n rm serversetup\r\n rm -f run.bat\r\n rm -f run.sh\r\n}\r\n\r\n# run installation steps\r\ninstall_required\r\nget_modpack_id\r\nrun_installer\r\nmove_startup_files\r\ninstaller_cleanup\r\n\r\necho \"Finished installing FTB modpack\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } @@ -42,7 +42,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:99|min:4", + "rules": "nullable|string", "field_type": "text" }, { @@ -52,7 +52,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|integer|min:1", + "rules": "nullable|integer", "field_type": "text" }, { @@ -62,7 +62,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20", + "rules": "nullable|string", "field_type": "text" }, { @@ -72,7 +72,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|integer|min:1", + "rules": "nullable|integer", "field_type": "text" } ] From 8525389fd5a69906b88337e524d67d14c5098de0 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 11 Mar 2023 20:06:00 +0100 Subject: [PATCH 010/251] add Operation Harsh Doorstop --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 + .../operation_harsh_doorstop/README.md | 15 +++ .../egg-operation-harsh-doorstop.json | 124 ++++++++++++++++++ 5 files changed, 145 insertions(+) create mode 100644 game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md create mode 100644 game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json diff --git a/README.md b/README.md index 6d5d9350..a929f12b 100644 --- a/README.md +++ b/README.md @@ -241,6 +241,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [No More Room in Hell](game_eggs/steamcmd_servers/nmrih) * [Onset](game_eggs/steamcmd_servers/onset) * [Open Fortress](game_eggs/steamcmd_servers/open_fortress) +* [Operation Harsh Doorstop](game_eggs/steamcmd_servers/operation_harsh_doorstop) * [Pavlov VR](game_eggs/steamcmd_servers/pavlov_vr) * [PixARK](game_eggs/steamcmd_servers/pixark) * [Portal Knights](game_eggs/steamcmd_servers/portal_knights) diff --git a/game_eggs/README.md b/game_eggs/README.md index 9ee98e57..b2d89e21 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -141,6 +141,7 @@ * [No More Room in Hell](steamcmd_servers/nmrih) * [Onset](steamcmd_servers/onset) * [Open Fortress](steamcmd_servers/open_fortress) +* [Operation Harsh Doorstop](steamcmd_servers/operation_harsh_doorstop) * [Pavlov VR](steamcmd_servers/pavlov_vr) * [PixARK](steamcmd_servers/pixark) * [Portal Knights](steamcmd_servers/portal_knights) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index e46946c7..a9c101f4 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -122,6 +122,10 @@ This is a collection of servers that use SteamCMD to install. [Open Fortress](open_fortress) +## Operation Harsh Doorstop + +[Operation Harsh Doorstop](operation_harsh_doorstop) + ## Pavlov VR [Pavlov VR](pavlov_vr) diff --git a/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md b/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md new file mode 100644 index 00000000..b012c094 --- /dev/null +++ b/game_eggs/steamcmd_servers/operation_harsh_doorstop/README.md @@ -0,0 +1,15 @@ +# Operation Harsh Doorstop + +[Steam](https://store.steampowered.com/app/736590/Operation_Harsh_Doorstop/) + +Operation: Harsh Doorstop is an Unreal Engine powered shooter sandbox similar to mod-friendly games like Ravenfield and Garry's Mod but with roots in tactical shooters like Squad and Arma III. Our game is entirely donation funded, completely free, and has full Steam workshop support! + +## Server Ports + +Operation Harsh Doorstop servers require 3 ports to be open + +| Port | default | +|-----------|---------| +| Game | 7777 | +| Query | 27005 | +| RCON | 7779 | \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json b/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json new file mode 100644 index 00000000..d43d1178 --- /dev/null +++ b/game_eggs/steamcmd_servers/operation_harsh_doorstop/egg-operation-harsh-doorstop.json @@ -0,0 +1,124 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-03-11T19:59:13+01:00", + "name": "Operation Harsh Doorstop", + "author": "josdekurk@gmail.com", + "description": "Operation: Harsh Doorstop is an Unreal Engine powered shooter sandbox similar to mod-friendly games like Ravenfield and Garry's Mod but with roots in tactical shooters like Squad and Arma III. Our game is entirely donation funded, completely free, and has full Steam workshop support!", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, + "file_denylist": [], + "startup": ".\/HarshDoorstop\/Binaries\/Linux\/HarshDoorstopServer-Linux-Shipping HarshDoorstop AAS-TestMap?MaxPlayers={{MAX_PLAYERS}} -SteamServerName=\"{{SERVER_NAME}}\" -Port={{SERVER_PORT}} -MULTIHOME=0.0.0.0 -QueryPort={{QUERY_PORT}} -RCONPort={{RCON_PORT}} -EnableRCON -RCONMaxAuthAttempts={{RCON_MAX_AUTH_ATTEMPTS}} -RCONPassword=\"{{RCON_PASSWORD}}\" -RCONMaxActiveConnections={{RCON_MAX_CONNECTIONS}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"LogRCON: RCON server listening on\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/\r\ncd \/mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/\r\ntouch Game.ini\r\ntee -a mnt\/server\/HarshDoorstop\/Saved\/Config\/LinuxServer\/Game.ini << END\r\n[\/Script\/RCON.RCONServerSystem]\r\nbEnabled=True\r\nListenPort=7779\r\nPassword=\"LetMeIn\"\r\nMaxActiveConnections=5\r\nMaxAuthAttempts=3\r\n\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=32\r\nServerName=\"My Awesome Server\"\r\nPassword=\"cookies\"\r\nEND\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Autop update", + "description": "Auto update the server on startup", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "app id", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "950900", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:950900", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players allowed by this server.", + "env_variable": "MAX_PLAYERS", + "default_value": "32", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Server name", + "description": "Defines the display or host name of the game server when listed in a server browser", + "env_variable": "SERVER_NAME", + "default_value": "Harsh Doorstop Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:200", + "field_type": "text" + }, + { + "name": "Query port", + "description": "Defines port for Steam master server traffic", + "env_variable": "QUERY_PORT", + "default_value": "27005", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Rcon Port", + "description": "Defines port for RCON server traffic", + "env_variable": "RCON_PORT", + "default_value": "7779", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Rcon Max Auth Attempts", + "description": "Defines the maximum number of authentication attempts an RCON connection can make before being forcibly disconnected", + "env_variable": "RCON_MAX_AUTH_ATTEMPTS", + "default_value": "3", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Rcon Password", + "description": "Defines the password used for authenticating with the RCON server", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Rcon Max Connections", + "description": "Maximum number of concurrent RCON connections", + "env_variable": "RCON_MAX_CONNECTIONS", + "default_value": "5", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + } + ] +} \ No newline at end of file From 4704ee86acda2ca998a53361fa1ab0fc530da607 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 19 Mar 2023 08:36:51 +0100 Subject: [PATCH 011/251] update tshock for arm64 --- game_eggs/terraria/tshock/egg-tshock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/terraria/tshock/egg-tshock.json b/game_eggs/terraria/tshock/egg-tshock.json index c82cb557..8d34c3ab 100644 --- a/game_eggs/terraria/tshock/egg-tshock.json +++ b/game_eggs/terraria/tshock/egg-tshock.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-06T14:39:45+01:00", + "exported_at": "2023-03-19T08:36:18+01:00", "name": "tshock", "author": "parker@parkervcp.com", "description": "The t-shock modded terraria server.\r\n\r\nhttps:\/\/tshock.co\/", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget jq file unzip\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\")\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i \"linux-x64\" | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"linux-x64\" | head -1 )\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i \"linux-x64\" | head -1)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK -O TShock.zip\r\n\r\nunzip -o TShock.zip\r\n\r\ntar xvf TShock-*.tar\r\n\r\nrm TShock.zip TShock-*.tar\r\n\r\nchmod +x TShock.Server\r\n\r\necho -e \"install complete\"", + "script": "#!\/bin\/bash\r\n# Vanilla tModloader Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## install packages to get version and download links\r\napt update\r\napt install -y curl wget jq file unzip\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Pryaxis\/TShock\/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\necho ${MATCH}\r\n\r\nif [ -z \"$TSHOCK_VERSION\" ] || [ \"$TSHOCK_VERSION\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH} | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"$TSHOCK_VERSION\" == \"$VERSION_CHECK\" ]; then\r\n DOWNLOAD_LINK=$(echo $RELEASES | jq -r --arg VERSION \"$TSHOCK_VERSION\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH} | head -1 )\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo $LATEST_JSON | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH} | head -1)\r\n fi\r\nfi\r\n\r\n## mkdir and cd to \/mnt\/server\/\r\nmkdir -p \/mnt\/server\r\n\r\ncd \/mnt\/server\r\n\r\n## download release\r\necho -e \"running: wget $DOWNLOAD_LINK\"\r\nwget $DOWNLOAD_LINK -O TShock.zip\r\n\r\nunzip -o TShock.zip\r\n\r\ntar xvf TShock-*.tar\r\n\r\nrm TShock.zip TShock-*.tar\r\n\r\nchmod +x TShock.Server\r\n\r\necho -e \"install complete\"", "container": "debian:bullseye-slim", "entrypoint": "\/bin\/bash" } @@ -69,4 +69,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 94428fa05f9e7cff7890c784b62609fb4509408a Mon Sep 17 00:00:00 2001 From: Miku <26039249+xMikux@users.noreply.github.com> Date: Tue, 21 Mar 2023 13:28:15 +0800 Subject: [PATCH 012/251] Add Limbo egg (#2128) Add Limbo egg --- README.md | 1 + game_eggs/README.md | 3 +- game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/java/README.md | 5 +++ game_eggs/minecraft/java/limbo/README.md | 13 ++++++ game_eggs/minecraft/java/limbo/egg-limbo.json | 42 +++++++++++++++++++ 6 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 game_eggs/minecraft/java/limbo/README.md create mode 100644 game_eggs/minecraft/java/limbo/egg-limbo.json diff --git a/README.md b/README.md index 35d1433e..e51d46de 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Feed The Beast](game_eggs/minecraft/java/ftb) * [Forge](game_eggs/minecraft/java/forge) * [Glowstone](game_eggs/minecraft/java/glowstone) + * [Limbo](game_eggs/minecraft/java/limbo) * [Magma](game_eggs/minecraft/java/magma) * [Mohist](game_eggs/minecraft/java/mohist) * [NanoLimbo](game_eggs/minecraft/java/nanolimbo) diff --git a/game_eggs/README.md b/game_eggs/README.md index 7d4822b0..f1a566b2 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -1,4 +1,4 @@ -# Game Eggs +# Game Eggs [Among Us](among_us) @@ -64,6 +64,7 @@ * [Feed The Beast](minecraft/java/ftb) * [Forge](minecraft/java/forge) * [Glowstone](minecraft/java/glowstone) + * [Limbo](minecraft/java/limbo) * [Magma](minecraft/java/magma) * [Mohist](minecraft/java/mohist) * [NanoLimbo](minecraft/java/nanolimbo) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index f8834dbb..49a74135 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -22,6 +22,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [CusreForge Generic](java/forge/curseforge-generic) * [Feed The Beast](java/ftb) * [Glowstone](java/glowstone) +* [Limbo](java/limbo) * [Krypton](java/krypton) * [Magma](java/magma) * [Mohist](java/mohist) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index a2bde658..2990a645 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -88,6 +88,11 @@ Please restart the server after first launch to fix this.** [NanoLimbo GitHub](https://github.com/Nan1t/NanoLimbo) A lightweight minecraft limbo server, written on Java with Netty. The main goal of the project is maximum simplicity with a minimum number of sent and processed packets. +## [Limbo](limbo) + +[Limbo GitHub](https://github.com/LOOHP/Limbo) +Standalone server program Limbo. + ## Spigot Based A collection of spigot and forked spigot eggs. diff --git a/game_eggs/minecraft/java/limbo/README.md b/game_eggs/minecraft/java/limbo/README.md new file mode 100644 index 00000000..88718474 --- /dev/null +++ b/game_eggs/minecraft/java/limbo/README.md @@ -0,0 +1,13 @@ +# Limbo + +Standalone server program Limbo. + +[Limbo Github](https://github.com/LOOHP/Limbo) + +## Server Ports + +The Limbo server requires a single port for access (default 25565). + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/game_eggs/minecraft/java/limbo/egg-limbo.json b/game_eggs/minecraft/java/limbo/egg-limbo.json new file mode 100644 index 00000000..a00c6580 --- /dev/null +++ b/game_eggs/minecraft/java/limbo/egg-limbo.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-03-21T04:56:57+08:00", + "name": "Limbo", + "author": "xEfinax@protonmail.com", + "description": "Standalone server program Limbo.", + "features": null, + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Limbo server listening on \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Limbo Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nmkdir -p \/mnt\/server\r\n\r\nLATEST_LIMBO_NAME=$(curl -s https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/api\/json | jq -r .artifacts[1].displayPath)\r\n\r\ncd \/mnt\/server || exit\r\n\r\nif [ -f \"${SERVER_JARFILE}\" ]; then\r\n\tmv \"${SERVER_JARFILE}\" \"${SERVER_JARFILE}\".old\r\nfi\r\n\r\necho \"Downloading Limbo server jar...\"\r\ncurl -o \"${SERVER_JARFILE}\" https:\/\/ci.loohpjames.com\/job\/Limbo\/lastSuccessfulBuild\/artifact\/target\/$LATEST_LIMBO_NAME\r\n\r\nif [ ! -f server.properties ]; then\r\n echo \"Downloading Limbo server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/LOOHP\/Limbo\/master\/src\/main\/resources\/server.properties\r\nfi", + "container": "ghcr.io\/pterodactyl\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the Limbo server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "Limbo.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + } + ] +} \ No newline at end of file From 1abfacbec5bf9d55568d34b07eb3dab8ebfb8b6a Mon Sep 17 00:00:00 2001 From: Brandon Pendleton <22108519+bitbucket90@users.noreply.github.com> Date: Tue, 21 Mar 2023 15:10:58 -0400 Subject: [PATCH 013/251] Update readme.md with correct ports To correctly query the server from funcoms master we need to allow port 7778. Once done this will show the correct age & ping. --- game_eggs/steamcmd_servers/conan_exiles/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/game_eggs/steamcmd_servers/conan_exiles/README.md b/game_eggs/steamcmd_servers/conan_exiles/README.md index 32017867..d0236fee 100644 --- a/game_eggs/steamcmd_servers/conan_exiles/README.md +++ b/game_eggs/steamcmd_servers/conan_exiles/README.md @@ -15,6 +15,7 @@ Ports required to run the server in a table format. | Port | default | |---------|---------| | Game | 7777 | +| UDP Query | 7778 | | Steam Query | 27015 | ## More information can be found [here](https://forums.funcom.com/t/conan-exiles-dedicated-server-app-latest-version-1-0-21/21699) From 8364b489847adf7e73918b8d7897a47412222f0b Mon Sep 17 00:00:00 2001 From: skittles-fivem <57036758+skittles-fivem@users.noreply.github.com> Date: Sat, 25 Mar 2023 05:57:18 -0500 Subject: [PATCH 014/251] Fixes BeamMP server not shutting down (#2201) BeamMP: Fix server not shutting down --- .../{egg-beam-m-p-servers.json => egg-beam-m-p-server.json} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename game_eggs/beamng/beammp/{egg-beam-m-p-servers.json => egg-beam-m-p-server.json} (99%) diff --git a/game_eggs/beamng/beammp/egg-beam-m-p-servers.json b/game_eggs/beamng/beammp/egg-beam-m-p-server.json similarity index 99% rename from game_eggs/beamng/beammp/egg-beam-m-p-servers.json rename to game_eggs/beamng/beammp/egg-beam-m-p-server.json index 220812c5..f6e282e3 100644 --- a/game_eggs/beamng/beammp/egg-beam-m-p-servers.json +++ b/game_eggs/beamng/beammp/egg-beam-m-p-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-07T17:26:47+01:00", + "exported_at": "2023-03-24T22:19:45+01:00", "name": "BeamMP Servers", "author": "noah@noahserver.online", "description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point through which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.", @@ -18,7 +18,7 @@ "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.NAME}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"[INFO] Vehicle data network online\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "exit" }, "scripts": { "installation": { From 812e9a75c10cd4ac72008185948cc0f71760b665 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 26 Mar 2023 16:14:31 +0200 Subject: [PATCH 015/251] fix: OpenTTD for version 1.13.x and up --- .../openttd/egg-open-t-t-d-server.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json b/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json index 1a5ef0bb..23a8a486 100644 --- a/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json +++ b/game_eggs/tycoon_games/openttd/egg-open-t-t-d-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-08T16:22:11+01:00", + "exported_at": "2023-03-26T16:13:26+02:00", "name": "OpenTTD Server", "author": "admin@justmyrandomstuff.com", "description": "OpenTTD is an open source simulation game based upon the popular Microprose game \"Transport Tycoon Deluxe\", written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.\r\n\r\nOpenTTD is modelled after the original Transport Tycoon game by Chris Sawyer and enhances the game experience dramatically. Many features were inspired by TTDPatch while others are original.", @@ -22,8 +22,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\napk add --no-cache wget binutils xz curl\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"getting file from: https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-debian-bullseye-amd64.deb\"\r\nwget https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-debian-bullseye-amd64.deb -O openttd.deb\r\nar -x openttd.deb\r\ntar -xvf data.tar.*\r\ncp -a usr\/share\/games\/openttd\/* .\/\r\ncp -a usr\/games\/openttd .\/\r\nchmod +x openttd\r\n\r\nrm -fR usr\/share\/games\/openttd\/\r\nrm -fR usr\/games\/openttd\r\n\r\nwget https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip -O opengfx.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz debian-binary open*deb\r\n\r\n[ -f \/home\/container\/openttd.cfg ] || curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", - "container": "alpine:3.16", + "script": "#!\/bin\/ash\r\napk add --no-cache xz curl tar unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho -e \"\\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz\"\r\ncurl -SsL -o openttd-linux.tar.xz https:\/\/cdn.openttd.org\/openttd-releases\/${OPENTTD_VERSION}\/openttd-${OPENTTD_VERSION}-linux-generic-amd64.tar.xz \r\n\r\necho -e \"\\nUnpacking tar\"\r\ntar -xf openttd-linux.tar.xz --strip-components=1\r\nrm openttd-linux.tar.xz\r\nchmod +x openttd\r\n\r\necho -e \"\\nRunning curl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\"\r\ncurl -sSL -o opengfx.zip https:\/\/cdn.openttd.org\/opengfx-releases\/${OPENGFX_VERSION}\/opengfx-${OPENGFX_VERSION}-all.zip\r\nunzip opengfx.zip \r\n\r\ntar --strip-components=1 -C baseset\/ -xvf opengfx*.tar\r\nrm -fR open*zip open*tar open*gz\r\n\r\n[ -f \/home\/container\/openttd.cfg ] || curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/tycoon_games\/openttd\/openttd.cfg > openttd.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "alpine:latest", "entrypoint": "ash" } }, @@ -45,14 +45,14 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:5", + "rules": "required|string|in:true,false", "field_type": "text" }, { "name": "OpenTTD Version", - "description": "The version of OpenTTD i.e. 1.10.1", + "description": "The version of OpenTTD i.e. 12.2", "env_variable": "OPENTTD_VERSION", - "default_value": "12.2", + "default_value": "13.0-RC2", "user_viewable": true, "user_editable": false, "rules": "required|string|max:20", @@ -60,7 +60,7 @@ }, { "name": "OpenGFX Version", - "description": "The OpenGFX Version i.e. 0.6.0", + "description": "The OpenGFX Version i.e. 7.1", "env_variable": "OPENGFX_VERSION", "default_value": "7.1", "user_viewable": true, @@ -69,4 +69,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 0ad633db887b203314a1bf1218953b0ac64599f6 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Wed, 29 Mar 2023 10:35:02 +0200 Subject: [PATCH 016/251] bastion: new ENV variables --- bots/discord/bastion/egg-bastion.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/bots/discord/bastion/egg-bastion.json b/bots/discord/bastion/egg-bastion.json index 37356c98..038d1707 100644 --- a/bots/discord/bastion/egg-bastion.json +++ b/bots/discord/bastion/egg-bastion.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-18T11:27:40+01:00", + "exported_at": "2023-03-29T10:33:50+02:00", "name": "Bastion", "author": "parker@parkervcp.com", "description": "Bastion is a multi-purpose Discord Bot that can help you automate most tasks in your server, from administration and moderation to keeping the members active through various incentives, games and other fun activities", @@ -31,7 +31,7 @@ { "name": "Bot Token", "description": "The Bot Token you get from https:\/\/discordapp.com\/developers\/applications\/", - "env_variable": "TESSERACT_BOT_TOKEN", + "env_variable": "BOT_TOKEN", "default_value": "GETABOTTOKEN", "user_viewable": true, "user_editable": true, @@ -41,7 +41,7 @@ { "name": "Bot Client ID", "description": "The Bot ID you get from https:\/\/discordapp.com\/developers\/applications\/", - "env_variable": "TESSERACT_BOT_ID", + "env_variable": "BOT_ID", "default_value": "", "user_viewable": true, "user_editable": true, @@ -51,7 +51,7 @@ { "name": "Mongo URL", "description": "use `mongodb:\/\/127.0.0.1:27017\/bastion` for using the build in mongodb server", - "env_variable": "TESSERACT_MONGO_URI", + "env_variable": "MONGO_URI", "default_value": "mongodb:\/\/127.0.0.1:27017\/bastion", "user_viewable": true, "user_editable": true, @@ -81,7 +81,7 @@ { "name": "Safe Mode", "description": "When enabled, this disables usage of unsafe commands like `exec` and `eval`.", - "env_variable": "TESSERACT_UNSAFE_MODE", + "env_variable": "UNSAFE_MODE", "default_value": "false", "user_viewable": true, "user_editable": true, @@ -119,4 +119,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 8eff93e509f1939397ce27db6ef5d08d5f649c0b Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 29 Mar 2023 14:42:59 +0200 Subject: [PATCH 017/251] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e51d46de..8495c2bb 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ If you are reading this it looks like you are looking to add an egg to your serv [Minecraft](game_eggs/minecraft) -* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows 10, mobile, console) +* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows 10/11, mobile, console) * [Bedrock](game_eggs/minecraft/bedrock/bedrock) * [gomint](game_eggs/minecraft/bedrock/gomint) * [LiteLoaderBDS](game_eggs/bedrock/LiteLoader-bedrock) From 65959c283f55a9863dc2630a04be8668783326ab Mon Sep 17 00:00:00 2001 From: Steven Date: Wed, 29 Mar 2023 14:54:49 +0200 Subject: [PATCH 018/251] Update README Only Windows in MC Bedrock --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8495c2bb..2b07e1aa 100644 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ If you are reading this it looks like you are looking to add an egg to your serv [Minecraft](game_eggs/minecraft) -* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows 10/11, mobile, console) +* [Bedrock](game_eggs/minecraft/bedrock) Servers for Bedrock Minecraft (Windows, mobile, console) * [Bedrock](game_eggs/minecraft/bedrock/bedrock) * [gomint](game_eggs/minecraft/bedrock/gomint) * [LiteLoaderBDS](game_eggs/bedrock/LiteLoader-bedrock) From febbedfa83267e532b80b582cc7dadb446c3e44a Mon Sep 17 00:00:00 2001 From: Attackwave <51136146+Attackwave@users.noreply.github.com> Date: Thu, 30 Mar 2023 08:21:20 +0200 Subject: [PATCH 019/251] Update egg-core-keeper.json (#2205) --- game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json b/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json index 87a087c4..4ab04d56 100644 --- a/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json +++ b/game_eggs/steamcmd_servers/core_keeper/egg-core-keeper.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-18T23:18:52+01:00", + "exported_at": "2023-03-28T22:32:36+02:00", "name": "Core Keeper", "author": "karsten@fiedleronline.net", "description": "Core Keeper is a survival sandbox game for single or multiplayers.\r\n\r\n--- Drawn towards a mysterious relic, you are an explorer who awakens in an ancient cavern of creatures, resources and trinkets. Trapped deep underground will your survival skills be up to the task? Mine relics and resources to build your base, craft new equipment, survive, and power up the Core. ---", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": "export DISPLAY=:0; rm .\/GameID.txt .\/CoreKeeperServerLog.txt; touch .\/CoreKeeperServerLog.txt; xvfb-run -s \"-screen 0 {{DISPLAY_WIDTH}}x{{DISPLAY_HEIGHT}}x{{DISPLAY_DEPTH}} -ac -nolisten tcp -nolisten unix\" .\/CoreKeeperServer -logfile CoreKeeperServerLog.txt -world {{WORLD_INDEX}} -worldname \"{{WORLD_NAME}}\" -worldseed {{WORLD_SEED}} $([[ \"{{GAME_ID}}\" != \"\" ]] && echo -n \" -gameid {{GAME_ID}}\") -maxplayers {{MAX_PLAYERS}} -worldmode {{WORLD_MODE}} -port {{SERVER_PORT}} & CKPID=$!; tail -f CoreKeeperServerLog.txt & LOGPID=$!; trap \"kill ${CKPID}; wait ${CKPID}; kill ${LOGPID}; wait ${LOGPID}\" 15; wait $!", + "startup": "export DISPLAY=:0; rm .\/GameID.txt .\/CoreKeeperServerLog.txt; touch .\/CoreKeeperServerLog.txt; xvfb-run -s \"-screen 0 {{DISPLAY_WIDTH}}x{{DISPLAY_HEIGHT}}x{{DISPLAY_DEPTH}} -ac -nolisten tcp -nolisten unix\" .\/CoreKeeperServer -batchmode -logfile CoreKeeperServerLog.txt -world {{WORLD_INDEX}} -worldname \"{{WORLD_NAME}}\" -worldseed {{WORLD_SEED}} $([[ \"{{GAME_ID}}\" != \"\" ]] && echo -n \" -gameid {{GAME_ID}}\") -maxplayers {{MAX_PLAYERS}} -worldmode {{WORLD_MODE}} -port {{SERVER_PORT}} & CKPID=$!; tail -f CoreKeeperServerLog.txt | grep -e '^\\[userid:[0-9]*\\] player' -e '^[^\\[]' & LOGPID=$!; trap \"kill ${CKPID}; wait ${CKPID}; kill ${LOGPID}; wait ${LOGPID}\" 15; wait $!", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Started session\"\r\n}", From a4e8095a4bb27bb5af2c86dc8683972a585e74ae Mon Sep 17 00:00:00 2001 From: Jcodeerd <68161666+Jcodeerd@users.noreply.github.com> Date: Mon, 3 Apr 2023 17:59:22 +0200 Subject: [PATCH 020/251] Update the velocity egg (#2210) Update the velocity --- .../proxy/java/velocity/egg-velocity.json | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json b/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json index 25cf326e..544ca2b6 100644 --- a/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json +++ b/game_eggs/minecraft/proxy/java/velocity/egg-velocity.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-02T16:47:41+00:00", + "exported_at": "2023-04-03T16:55:25+02:00", "name": "Velocity", "author": "parker@parkervcp.com", "description": "Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.", @@ -13,12 +13,12 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar {{SERVER_JARFILE}}", "config": { @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\nVELOCITY_VERSION=\"latest\"\r\nfi\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\necho -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\nDOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\nVER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\nLATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\nif [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} version\"\r\nVELOCITY_VERSION=${LATEST_VERSION}\r\nfi\r\nBUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\nif [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\necho -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\nBUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\nJAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\nif [[ -f ${SERVER_JARFILE} ]]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\nif [[ -f velocity.toml ]]; then\r\necho -e \"velocity config file exists\"\r\nelse\r\necho -e \"downloading velocity config file.\"\r\ncurl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\nif [[ -f forwarding.secret ]]; then\r\necho -e \"velocity forwarding secret file already exists\"\r\nelse\r\necho -e \"creating forwarding secret file\"\r\ntouch forwarding.secret\r\ndate +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\necho -e \"install complete\"", + "script": "#!\/bin\/ash\r\n# Velocity Proxy Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=velocity\r\n\r\nif [[ -z ${VELOCITY_VERSION} ]] || [[ ${VELOCITY_VERSION} == \"latest\" ]]; then\r\n VELOCITY_VERSION=\"latest\"\r\nfi\r\n\r\nif [[ -n \"${DOWNLOAD_LINK}\" ]]; then\r\n echo -e \"Using supplied download url: ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_URL=$(eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g'))\r\nelse\r\n VER_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $VELOCITY_VERSION '.versions[] | contains($VERSION)' | grep true)\r\n LATEST_VERSION=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]')\r\n\r\nif [[ \"${VER_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Version is valid. Using version ${VELOCITY_VERSION}\"\r\nelse\r\n echo -e \"Using the latest ${PROJECT} version\"\r\n VELOCITY_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\nBUILD_EXISTS=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true)\r\nLATEST_BUILD=$(curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION} | jq -r '.builds' | jq -r '.[-1]')\r\n\r\nif [[ \"${BUILD_EXISTS}\" == \"true\" ]]; then\r\n echo -e \"Build is valid for version ${VELOCITY_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\n echo -e \"Using the latest ${PROJECT} build for version ${VELOCITY_VERSION}\"\r\n BUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\n\r\nJAR_NAME=${PROJECT}-${VELOCITY_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"Velocity Version: ${VELOCITY_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${VELOCITY_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\n\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [[ -f ${SERVER_JARFILE} ]]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [[ -f velocity.toml ]]; then\r\n echo -e \"velocity config file exists\"\r\nelse\r\n echo -e \"downloading velocity config file.\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/velocity\/velocity.toml -o velocity.toml\r\nfi\r\n\r\nif [[ -f forwarding.secret ]]; then\r\n echo -e \"velocity forwarding secret file already exists\"\r\nelse\r\n echo -e \"creating forwarding secret file\"\r\n touch forwarding.secret\r\n date +%s | sha256sum | base64 | head -c 12 > forwarding.secret\r\nfi\r\n\r\necho -e \"install complete\"", "container": "ghcr.io\/pterodactyl\/installers:alpine", "entrypoint": "ash" } @@ -42,7 +42,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Server Jar File", @@ -51,7 +52,8 @@ "default_value": "velocity.jar", "user_viewable": true, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:32|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" }, { "name": "Download Path", @@ -60,7 +62,8 @@ "default_value": "", "user_viewable": false, "user_editable": false, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "Build Number", @@ -69,7 +72,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] } \ No newline at end of file From 590646d1136aac22fca036311de161763f83acb1 Mon Sep 17 00:00:00 2001 From: DropAwpPlss <85845965+DropAwpPlss@users.noreply.github.com> Date: Mon, 3 Apr 2023 23:16:17 +0000 Subject: [PATCH 021/251] Fixed typo in README.md --- game_eggs/minecraft/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index 49a74135..d4661d98 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -19,7 +19,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [Feather](java/feather) * [Forge](java/forge) * [Forge](java/forge/forge) - * [CusreForge Generic](java/forge/curseforge-generic) + * [CurseForge Generic](java/forge/curseforge-generic) * [Feed The Beast](java/ftb) * [Glowstone](java/glowstone) * [Limbo](java/limbo) From abba28331d11459e5021b1a350d07a1eb27d7e62 Mon Sep 17 00:00:00 2001 From: MarcoCoreDuo <90222533+MarcoCoreDuo@users.noreply.github.com> Date: Sun, 9 Apr 2023 04:50:22 +0200 Subject: [PATCH 022/251] Tmodloader fix config not being loaded at startup This fixes the issue of the difficulty not being applied when the world is generated. --- game_eggs/terraria/tmodloader/egg-t-modloader.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/terraria/tmodloader/egg-t-modloader.json b/game_eggs/terraria/tmodloader/egg-t-modloader.json index ccbee327..43af8d20 100755 --- a/game_eggs/terraria/tmodloader/egg-t-modloader.json +++ b/game_eggs/terraria/tmodloader/egg-t-modloader.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-04T11:17:39+01:00", + "exported_at": "2023-04-09T04:34:42+02:00", "name": "tModloader", "author": "parker@parkervcp.com", "description": "tModLoader is essentially a mod that provides a way to load your own mods without having to work directly with Terraria's source code itself. This means you can easily make mods that are compatible with other people's mods, save yourself the trouble of having to decompile and recompile Terraria.exe, and escape from having to understand all of the obscure \"intricacies\" of Terraria's source code. It is made to work for Terraria 1.3+.", @@ -13,7 +13,7 @@ "Dotnet 6": "ghcr.io\/parkervcp\/yolks:dotnet_6" }, "file_denylist": [], - "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~\/saves\/Worlds\/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods", + "startup": ".\/tModLoaderServer -ip 0.0.0.0 -port {{SERVER_PORT}} -maxplayers {{MAX_PLAYERS}} -password \"{{SERVER_PASSWORD}}\" -motd \"{{MOTD}}\" -lang {{LANGUAGE}} -world ~\/saves\/Worlds\/{{WORLD_NAME}}.wld -worldname {{WORLD_NAME}} -autocreate {{WORLD_SIZE}} -config serverconfig.txt -savedirectory ~\/ -tmlsavedirectory ~\/saves -modpath ~\/mods", "config": { "files": "{\r\n \"serverconfig.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"difficulty\": \"difficulty={{server.build.env.DIFFICULTY}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Type 'help' for a list of commands\"\r\n}", @@ -129,4 +129,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 184064d311f70b82a4e72d0e21929c71e04a5dcb Mon Sep 17 00:00:00 2001 From: Panda260 <52088459+Panda260@users.noreply.github.com> Date: Tue, 11 Apr 2023 10:55:55 +0200 Subject: [PATCH 023/251] purpur: add startup variable as it is recommended in the console (#2218) purpur: add startup variable as it is recommended in the console --- .../minecraft/java/purpur/egg-purpur.json | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/game_eggs/minecraft/java/purpur/egg-purpur.json b/game_eggs/minecraft/java/purpur/egg-purpur.json index 579bda6d..81b9fa1f 100644 --- a/game_eggs/minecraft/java/purpur/egg-purpur.json +++ b/game_eggs/minecraft/java/purpur/egg-purpur.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-18T19:20:26-05:00", + "exported_at": "2023-04-11T10:05:13+02:00", "name": "Purpur", "author": "purpur@birdflop.com", "description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features.", @@ -13,14 +13,14 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17", + "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", + "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, "file_denylist": [], - "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", + "startup": "java --add-modules=jdk.incubator.vector -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", @@ -42,7 +42,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Server Jar File", @@ -51,7 +52,8 @@ "default_value": "server.jar", "user_viewable": true, "user_editable": true, - "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/|max:80" + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/|max:80", + "field_type": "text" }, { "name": "Build Number", @@ -60,7 +62,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] -} +} \ No newline at end of file From a486c73c69cd15c5bbda1fe9529388a13f4392d9 Mon Sep 17 00:00:00 2001 From: Jamis H Date: Tue, 11 Apr 2023 12:20:42 -0600 Subject: [PATCH 024/251] Squad: Fix typo (#2219) Squad: Fix typo --- game_eggs/steamcmd_servers/squad/egg-squad.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/squad/egg-squad.json b/game_eggs/steamcmd_servers/squad/egg-squad.json index 5fbee199..672a4957 100644 --- a/game_eggs/steamcmd_servers/squad/egg-squad.json +++ b/game_eggs/steamcmd_servers/squad/egg-squad.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-13T11:04:16+01:00", + "exported_at": "2023-04-11T11:41:50-06:00", "name": "Squad", "author": "brycea@terrahost.cloud", "description": "Squad is a 50 vs 50 multiplayer first-person shooter that aims to capture combat realism through communication and teamplay. Major features include vehicle-based combined arms gameplay, large scale environments, base building, and integrated positional VoIP for proximity talking & radio.", @@ -101,7 +101,7 @@ "field_type": "text" }, { - "name": "Reserved Slows", + "name": "Reserved Slots", "description": "The number of reserved slots for admins \/ mods", "env_variable": "reservedslots", "default_value": "0", From fd1f43012fb4be52c71125ef756c17c24df5f68a Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Thu, 13 Apr 2023 08:32:56 +0800 Subject: [PATCH 025/251] Update Open Fortress install script to use new domain Updates egg to use new domain and new version of muse --- .../steamcmd_servers/open_fortress/egg-open-fortress.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json index c6c5740d..a9ae9030 100644 --- a/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json +++ b/game_eggs/steamcmd_servers/open_fortress/egg-open-fortress.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-18T08:23:04-04:00", + "exported_at": "2023-04-13T00:19:22+00:00", "name": "Open Fortress", "author": "espeon@espeon.dev", "description": "Open Fortress is a free Team Fortress 2 mod that introduces new gamemodes, weapons, characters, maps, and more to the world of TF2.", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates p7zip-full wget\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## install tf2 content using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server\/tf2 +app_update 232250 ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download OpenFortress\r\ncd \/mnt\/server\r\nmv bin bin_dontdeleteme\r\nwget https:\/\/git.sr.ht\/~welt\/murse\/refs\/download\/v0.2.1\/murse-v0.2.1-linux-amd64.tar.gz -O murse.tgz 2> \/dev\/null\r\ntar xvfz murse.tgz\r\nrm -rf murse.tgz\r\nchmod +x murse\r\n.\/murse upgrade -u https:\/\/toast1.openfortress.fun\/toast -c $(curl https:\/\/toast1.openfortress.fun\/toast\/reithreads) asdrggvead\/open_fortress\r\nmv \/mnt\/server\/asdrggvead\/open_fortress \/mnt\/server\/open_fortress\r\nrm -rf asdrggvead\r\nmv bin_dontdeleteme bin\r\n## add fixed gameinfo\r\ncd \/mnt\/server\/open_fortress\r\nrm -rf gameinfo.txt\r\ncat >> gameinfo.txt << EOF\r\n\"GameInfo\"\r\n{\r\ngame \"Open Fortress\"\r\ntitle \"\"\r\ntitle2 \"\"\r\ngamelogo \"1\"\r\ndeveloper \"https:\/\/github.com\/AgitationSkeleton\/open_fortress\/blob\/master\/credits.txt\"\r\ndeveloper_url\t\"https:\/\/github.com\/KaidemonLP\/Open-Fortress-Source\"\r\nmanual \"\"\r\ntype \"multiplayer_only\"\r\nhasportals \"0\" \/\/ gameui.dll\r\nhashdcontent\t\"0\" \/\/ gameui.dll\r\nnomodels \"0\" \/\/ gameui.dll\r\nnohimodel \"0\" \/\/ gameui.dll\r\nnocrosshair \"0\" \/\/ gameui.dll\r\nadvcrosshair \"1\" \/\/ gameui.dll\r\nnodifficulty\t\"1\" \/\/ gameui.dll\r\nsupportsvr \"0\" \/\/ engine.dll + gameui.dll\r\nbots \"0\" \/\/ gameui.dll\r\nnodegraph \"1\" \/\/ engine.dll\r\nperfwizard \"0\" \/\/ unused\r\nSupportsDX8 \"0\" \/\/ unused\r\nSupportsDX9 \"1\" \/\/ unused\r\nSupportsDX10\t\"0\" \/\/ unused\r\nSupportsDX11\t\"0\" \/\/ unused\r\nSupportsXbox\t\"0\" \/\/ unused\r\nSupportsXbox360\t\"0\" \/\/ unused\r\nSupportsXboxOne\t\"0\" \/\/ unused\r\nSupportsPS3 \"0\" \/\/ unused\r\nSupportsPS4 \"0\" \/\/ unused\r\nicon \"resource\/game\"\r\nGameData \"ofd_fic2.fgd\"\r\nInstancePath\t\"maps\/instances\/\"\r\nhidden_maps\r\n{\r\n\"test_speakers\" 1\r\n\"test_hardware\" 1\r\n\"background01\" 1\r\n\"background02\" 1\r\n\"background03\" 1\r\n\"background04\" 1\r\n\"background05\" 1\r\n\"background06\" 1\r\n\"background07\" 1\r\n\"background08\" 1\r\n\"background09\" 1\r\n\"background12\" 1\r\n\"background15\" 1\r\n\"ep1_c17_00\" 1\r\n\"ep1_c17_00a\" 1\r\n\"ep1_c17_01\" 1\r\n\"ep1_c17_01a\" 1\r\n\"ep1_c17_02\" 1\r\n\"ep1_c17_02a\" 1\r\n\"ep1_c17_02b\" 1\r\n\"ep1_c17_05\" 1\r\n\"ep1_c17_06\" 1\r\n\"ep1_citadel_00\"\t1\r\n\"ep1_citadel_00_demo\" 1\r\n\"ep1_citadel_01\"\t1\r\n\"ep1_citadel_02\"\t1\r\n\"ep1_citadel_02b\"\t1\r\n\"ep1_citadel_03\"\t1\r\n\"ep1_citadel_04\"\t1\r\n\"ep1_background01\"\t1\r\n\"ep1_background01a\"\t1\r\n\"ep1_background02\"\t1\r\n\"ep2_outland_01\"\t1\r\n\"ep2_outland_01a\"\t1\r\n\"ep2_outland_02\"\t1\r\n\"ep2_outland_03\"\t1\r\n\"ep2_outland_04\"\t1\r\n\"ep2_outland_05\"\t1\r\n\"ep2_outland_06\"\t1\r\n\"ep2_outland_06a\"\t1\r\n\"ep2_outland_07\"\t1\r\n\"ep2_outland_08\"\t1\r\n\"ep2_outland_09\"\t1\r\n\"ep2_outland_10\"\t1\r\n\"ep2_outland_10a\"\t1\r\n\"ep2_outland_11\"\t1\r\n\"ep2_outland_11a\"\t1\r\n\"ep2_outland_11b\"\t1\r\n\"ep2_outland_12\"\t1\r\n\"ep2_outland_12a\"\t1\r\n\"ep2_background01\"\t1\r\n\"ep2_background02\"\t1\r\n\"ep2_background02a\"\t1\r\n\"ep2_background03\"\t1\r\n\"credits\" 1\r\n\"vst_lostcoast\" 1\r\n\"test\" 1\r\n\"sdk_vehicles\" 1\r\n}\r\nFileSystem\r\n{\r\nSteamAppId 243750\r\nSearchPaths\r\n{\r\ngame+mod |gameinfo_path|custom\/*\r\ngame+game_write+mod+mod_write+default_write_path |gameinfo_path|.\r\ngamebin |gameinfo_path|bin\r\n\/\/ The lines below until the BREAK comment are responsible for the game resources to work properly\r\n\/\/ in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,\r\n\/\/ Source SDK and OF) in the same drive letter\/partition. If you have a different storage configuration,\r\n\/\/ feel free to modify the paths below between quotes (example: D:\\Steam\\steamapps\\common\\Team Fortress 2\\tf).\r\ngame \"\/home\/container\/tf2\/tf\/tf2_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_misc.vpk\"\r\n\/\/ The hl2 folder here is from Source SDK Base 2013 Multiplayer.\r\ngame \"|all_source_engine_paths|hl2\\hl2_misc.vpk\"\r\ngame \"|all_source_engine_paths|hl2\"\r\n\/\/ ========== BREAK ==========\r\nplatform |all_source_engine_paths|platform\/platform_misc.vpk\r\nplatform |all_source_engine_paths|platform\r\ngame+download |gameinfo_path|download\r\n}\r\n}\r\n}\r\nEOF\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s datacache_srv.so datacache.so\r\nln -s dedicated_srv.so dedicated.so\r\nln -s engine_srv.so engine.so\r\nln -s materialsystem_srv.so materialsystem.so\r\nln -s replay_srv.so replay.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s vphysics_srv.so vphysics.so\r\n## more symlink fixes\r\ncd \/mnt\/server\/open_fortress\/bin\r\nln -s server.so server_srv.so\r\n## fix issue with libstdc++.so\r\nrm -rf \/mnt\/server\/bin\/libstdc++.so.6", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates p7zip-full wget\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## install tf2 content using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server\/tf2 +app_update 232250 ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download OpenFortress\r\ncd \/mnt\/server\r\nmv bin bin_dontdeleteme\r\nwget https:\/\/git.sr.ht\/~webb\/murse\/refs\/download\/v0.4.0\/murse-v0.4.0-linux-amd64.tar.gz -O murse.tgz 2> \/dev\/null\r\ntar xvfz murse.tgz\r\nrm -rf murse.tgz\r\nchmod +x murse\r\n.\/murse upgrade -u https:\/\/toast.openfortress.fun:8443\/toast asdrggvead\/open_fortress\r\nmv \/mnt\/server\/asdrggvead\/open_fortress \/mnt\/server\/open_fortress\r\nrm -rf asdrggvead\r\nmv bin_dontdeleteme bin\r\n## add fixed gameinfo\r\ncd \/mnt\/server\/open_fortress\r\nrm -rf gameinfo.txt\r\ncat >> gameinfo.txt << EOF\r\n\"GameInfo\"\r\n{\r\ngame \"Open Fortress\"\r\ntitle \"\"\r\ntitle2 \"\"\r\ngamelogo \"1\"\r\ndeveloper \"https:\/\/github.com\/AgitationSkeleton\/open_fortress\/blob\/master\/credits.txt\"\r\ndeveloper_url\t\"https:\/\/github.com\/KaidemonLP\/Open-Fortress-Source\"\r\nmanual \"\"\r\ntype \"multiplayer_only\"\r\nhasportals \"0\" \/\/ gameui.dll\r\nhashdcontent\t\"0\" \/\/ gameui.dll\r\nnomodels \"0\" \/\/ gameui.dll\r\nnohimodel \"0\" \/\/ gameui.dll\r\nnocrosshair \"0\" \/\/ gameui.dll\r\nadvcrosshair \"1\" \/\/ gameui.dll\r\nnodifficulty\t\"1\" \/\/ gameui.dll\r\nsupportsvr \"0\" \/\/ engine.dll + gameui.dll\r\nbots \"0\" \/\/ gameui.dll\r\nnodegraph \"1\" \/\/ engine.dll\r\nperfwizard \"0\" \/\/ unused\r\nSupportsDX8 \"0\" \/\/ unused\r\nSupportsDX9 \"1\" \/\/ unused\r\nSupportsDX10\t\"0\" \/\/ unused\r\nSupportsDX11\t\"0\" \/\/ unused\r\nSupportsXbox\t\"0\" \/\/ unused\r\nSupportsXbox360\t\"0\" \/\/ unused\r\nSupportsXboxOne\t\"0\" \/\/ unused\r\nSupportsPS3 \"0\" \/\/ unused\r\nSupportsPS4 \"0\" \/\/ unused\r\nicon \"resource\/game\"\r\nGameData \"ofd_fic2.fgd\"\r\nInstancePath\t\"maps\/instances\/\"\r\nhidden_maps\r\n{\r\n\"test_speakers\" 1\r\n\"test_hardware\" 1\r\n\"background01\" 1\r\n\"background02\" 1\r\n\"background03\" 1\r\n\"background04\" 1\r\n\"background05\" 1\r\n\"background06\" 1\r\n\"background07\" 1\r\n\"background08\" 1\r\n\"background09\" 1\r\n\"background12\" 1\r\n\"background15\" 1\r\n\"ep1_c17_00\" 1\r\n\"ep1_c17_00a\" 1\r\n\"ep1_c17_01\" 1\r\n\"ep1_c17_01a\" 1\r\n\"ep1_c17_02\" 1\r\n\"ep1_c17_02a\" 1\r\n\"ep1_c17_02b\" 1\r\n\"ep1_c17_05\" 1\r\n\"ep1_c17_06\" 1\r\n\"ep1_citadel_00\"\t1\r\n\"ep1_citadel_00_demo\" 1\r\n\"ep1_citadel_01\"\t1\r\n\"ep1_citadel_02\"\t1\r\n\"ep1_citadel_02b\"\t1\r\n\"ep1_citadel_03\"\t1\r\n\"ep1_citadel_04\"\t1\r\n\"ep1_background01\"\t1\r\n\"ep1_background01a\"\t1\r\n\"ep1_background02\"\t1\r\n\"ep2_outland_01\"\t1\r\n\"ep2_outland_01a\"\t1\r\n\"ep2_outland_02\"\t1\r\n\"ep2_outland_03\"\t1\r\n\"ep2_outland_04\"\t1\r\n\"ep2_outland_05\"\t1\r\n\"ep2_outland_06\"\t1\r\n\"ep2_outland_06a\"\t1\r\n\"ep2_outland_07\"\t1\r\n\"ep2_outland_08\"\t1\r\n\"ep2_outland_09\"\t1\r\n\"ep2_outland_10\"\t1\r\n\"ep2_outland_10a\"\t1\r\n\"ep2_outland_11\"\t1\r\n\"ep2_outland_11a\"\t1\r\n\"ep2_outland_11b\"\t1\r\n\"ep2_outland_12\"\t1\r\n\"ep2_outland_12a\"\t1\r\n\"ep2_background01\"\t1\r\n\"ep2_background02\"\t1\r\n\"ep2_background02a\"\t1\r\n\"ep2_background03\"\t1\r\n\"credits\" 1\r\n\"vst_lostcoast\" 1\r\n\"test\" 1\r\n\"sdk_vehicles\" 1\r\n}\r\nFileSystem\r\n{\r\nSteamAppId 243750\r\nSearchPaths\r\n{\r\ngame+mod |gameinfo_path|custom\/*\r\ngame+game_write+mod+mod_write+default_write_path |gameinfo_path|.\r\ngamebin |gameinfo_path|bin\r\n\/\/ The lines below until the BREAK comment are responsible for the game resources to work properly\r\n\/\/ in Hammer and other Source tools. The default setup assumes that you have everything (Steam, TF2,\r\n\/\/ Source SDK and OF) in the same drive letter\/partition. If you have a different storage configuration,\r\n\/\/ feel free to modify the paths below between quotes (example: D:\\Steam\\steamapps\\common\\Team Fortress 2\\tf).\r\ngame \"\/home\/container\/tf2\/tf\/tf2_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_misc.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\/tf2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/tf\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_textures.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_vo_english.vpk\"\r\ngame \"\/home\/container\/tf2\/hl2\/hl2_sound_misc.vpk\"\r\n\/\/ The hl2 folder here is from Source SDK Base 2013 Multiplayer.\r\ngame \"|all_source_engine_paths|hl2\\hl2_misc.vpk\"\r\ngame \"|all_source_engine_paths|hl2\"\r\n\/\/ ========== BREAK ==========\r\nplatform |all_source_engine_paths|platform\/platform_misc.vpk\r\nplatform |all_source_engine_paths|platform\r\ngame+download |gameinfo_path|download\r\n}\r\n}\r\n}\r\nEOF\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s datacache_srv.so datacache.so\r\nln -s dedicated_srv.so dedicated.so\r\nln -s engine_srv.so engine.so\r\nln -s materialsystem_srv.so materialsystem.so\r\nln -s replay_srv.so replay.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s vphysics_srv.so vphysics.so\r\n## more symlink fixes\r\ncd \/mnt\/server\/open_fortress\/bin\r\nln -s server.so server_srv.so\r\n## fix issue with libstdc++.so\r\nrm -rf \/mnt\/server\/bin\/libstdc++.so.6", "container": "ubuntu:18.04", "entrypoint": "bash" } @@ -71,4 +71,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 77edb46b62a59b3fb2d956c7384466d53e872092 Mon Sep 17 00:00:00 2001 From: David Katz Date: Tue, 18 Apr 2023 22:46:44 -0700 Subject: [PATCH 026/251] Add support for Modrinth modpacks --- game_eggs/minecraft/java/modrinth/README.md | 18 ++++++ .../java/modrinth/egg-modrinth-generic.json | 59 +++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 game_eggs/minecraft/java/modrinth/README.md create mode 100644 game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json diff --git a/game_eggs/minecraft/java/modrinth/README.md b/game_eggs/minecraft/java/modrinth/README.md new file mode 100644 index 00000000..04580ecc --- /dev/null +++ b/game_eggs/minecraft/java/modrinth/README.md @@ -0,0 +1,18 @@ +# Modrinth Generic + +## This is a generic egg for Modrinth modpacks + +You will need to give it a modpack project ID. The project ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) is `1oIpaoJo` for example. +This can be found on the modpack page in the `Technical information` section in the left sidebar. + +You can also optionally specify a version ID. If you do not specify a version ID, the latest version will be used. The version ID for [Extreme Optimization!](https://modrinth.com/modpack/extreme-optimization!) version 1.12.2For2.0 is `SyMW2FDv` for example. This can be found on the modpack page by clicking the version number in the `Versions` section. + +The script will automatically setup of Forge, Fabric, or Quilt depending on the modpack. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json new file mode 100644 index 00000000..fc3f5bc7 --- /dev/null +++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-04-18T22:37:55-07:00", + "name": "Modrinth Generic", + "author": "contact@chromozone.dev", + "description": "A generic egg for a Modrinth modpack.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: ${SERVER_DIR:=\/mnt\/server}\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p $SERVER_DIR\r\nfi\r\n\r\ncd $SERVER_DIR\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n PROJECT_TITLE=$(echo $PROJECT_DATA | jq -r '.title')\r\n PROJECT_SUPPORTED=$(echo $PROJECT_DATA | jq -r '.\"server_side\"')\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z ${VERSION_ID} || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo $PROJECT_DATA | jq -r '.versions[-1]')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo $PROJECT_DATA | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[] | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n DOWNLOAD_URL=$(echo -e $JSON_DATA | jq -r '.files[] | select(.primary == true) | .url')\r\n\r\n if [[ -z ${DOWNLOAD_URL} ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q ${DOWNLOAD_URL} -O server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[] | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' ${MANIFEST} | while read -r mod; do\r\n fileUrl=$(echo ${mod} | jq -r '.url')\r\n\r\n echo -e \"\\tDownloading ${fileUrl}\"\r\n wget -q \"${fileUrl}\" -P \"${SERVER_DIR}\/mods\"\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n FORGE_VERSION=$(jq -r '.dependencies.forge' ${MANIFEST})\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n wget -q -O forge-installer.jar ${FORGE_INSTALLER}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n java -jar forge-installer.jar --installServer > \/dev\/null 2>&1 || { echo \"Forge installer failed!\"; exit 1; }\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv $FORGE_JAR forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST})\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url')\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O fabric-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar fabric-installer.jar server -mcversion ${MC_VERSION} -loader ${FABRIC_VERSION} -downloadMinecraft || { echo \"Fabric installer failed!\"; exit 4; }\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST})\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url')\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O quilt-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar quilt-installer.jar install server ${MC_VERSION} ${QUILT_VERSION} --download-server --install-dir=.\/ || { echo \"Quilt installer failed!\"; exit 4; }\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ ! -z \"${VERSION_ID}\" && ! \"${VERSION_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "container": "openjdk:8-jdk-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Modpack Project ID", + "description": "This is the modpack project ID from the Modrinth site.\r\n\r\nFor example, the project ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/' is 1KVo5zza", + "env_variable": "PROJECT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + }, + { + "name": "Modpack Version ID", + "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", + "env_variable": "VERSION_ID", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + } + ] +} From 75a8eca32c071d1acb18663ad15a506b550ef13e Mon Sep 17 00:00:00 2001 From: David Katz Date: Tue, 18 Apr 2023 22:57:15 -0700 Subject: [PATCH 027/251] Update README files --- README.md | 1 + game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/java/README.md | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/README.md b/README.md index 2b07e1aa..ded72f55 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Glowstone](game_eggs/minecraft/java/glowstone) * [Limbo](game_eggs/minecraft/java/limbo) * [Magma](game_eggs/minecraft/java/magma) + * [Modrinth](game_eggs/minecraft/java/modrinth) * [Mohist](game_eggs/minecraft/java/mohist) * [NanoLimbo](game_eggs/minecraft/java/nanolimbo) * [Paper](game_eggs/minecraft/java/paper) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index d4661d98..fb48bfc9 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -25,6 +25,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [Limbo](java/limbo) * [Krypton](java/krypton) * [Magma](java/magma) +* [Modrinth](java/modrinth) * [Mohist](java/mohist) * [NanoLimbo](java/nanolimbo) * [Paper](java/paper) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index 2990a645..a5f6a504 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -46,6 +46,13 @@ Glowstone is an open-source replacement for CraftBukkit, Spigot, and Paper. [Magma Website](https://magmafoundation.org) Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability. +### [Modrinth](modrinth) + +A generic service to pull modpacks from Modrinth. + +[Modrinth Website](https://modrinth.com) +Discover, play, and share Minecraft content through our open-source platform built for the community. + ### [Krypton](krypton) [Krypton GitHub](https://github.com/KryptonMC/Krypton) From 939527f286f39beb5250727d3cf6a85113f229d8 Mon Sep 17 00:00:00 2001 From: David Katz Date: Thu, 20 Apr 2023 19:36:30 -0700 Subject: [PATCH 028/251] Add more checks for Modrinth script --- .../java/modrinth/egg-modrinth-generic.json | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json index fc3f5bc7..f1192228 100644 --- a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json +++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-04-18T22:37:55-07:00", + "exported_at": "2023-04-20T19:34:09-07:00", "name": "Modrinth Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a Modrinth modpack.", @@ -29,12 +29,22 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: ${SERVER_DIR:=\/mnt\/server}\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p $SERVER_DIR\r\nfi\r\n\r\ncd $SERVER_DIR\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n PROJECT_TITLE=$(echo $PROJECT_DATA | jq -r '.title')\r\n PROJECT_SUPPORTED=$(echo $PROJECT_DATA | jq -r '.\"server_side\"')\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z ${VERSION_ID} || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo $PROJECT_DATA | jq -r '.versions[-1]')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo $PROJECT_DATA | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[] | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n DOWNLOAD_URL=$(echo -e $JSON_DATA | jq -r '.files[] | select(.primary == true) | .url')\r\n\r\n if [[ -z ${DOWNLOAD_URL} ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q ${DOWNLOAD_URL} -O server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[] | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' ${MANIFEST} | while read -r mod; do\r\n fileUrl=$(echo ${mod} | jq -r '.url')\r\n\r\n echo -e \"\\tDownloading ${fileUrl}\"\r\n wget -q \"${fileUrl}\" -P \"${SERVER_DIR}\/mods\"\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n FORGE_VERSION=$(jq -r '.dependencies.forge' ${MANIFEST})\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n wget -q -O forge-installer.jar ${FORGE_INSTALLER}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n java -jar forge-installer.jar --installServer > \/dev\/null 2>&1 || { echo \"Forge installer failed!\"; exit 1; }\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv $FORGE_JAR forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST})\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url')\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O fabric-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar fabric-installer.jar server -mcversion ${MC_VERSION} -loader ${FABRIC_VERSION} -downloadMinecraft || { echo \"Fabric installer failed!\"; exit 4; }\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft' ${MANIFEST})\r\n QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST})\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url')\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O quilt-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar quilt-installer.jar install server ${MC_VERSION} ${QUILT_VERSION} --download-server --install-dir=.\/ || { echo \"Quilt installer failed!\"; exit 4; }\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ ! -z \"${VERSION_ID}\" && ! \"${VERSION_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "script": "#!\/bin\/bash\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: ${SERVER_DIR:=\/mnt\/server}\r\n: ${PROJECT_ID:=}\r\n: ${VERSION_ID:=}\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p $SERVER_DIR\r\nfi\r\n\r\ncd $SERVER_DIR\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n PROJECT_TITLE=$(echo $PROJECT_DATA | jq -r '.title \/\/ empty')\r\n PROJECT_SUPPORTED=$(echo $PROJECT_DATA | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ ! -n \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo $PROJECT_DATA | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo $PROJECT_DATA | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ ! -n \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n DOWNLOAD_URL=$(echo $JSON_DATA | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ ! -n \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q ${DOWNLOAD_URL} -O server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' ${MANIFEST} | while read -r mod; do\r\n FILE_URL=$(echo ${mod} | jq -r '.url \/\/ empty')\r\n\r\n if [[ ! -n \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n FORGE_VERSION=$(jq -r '.dependencies.forge \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${FORGE_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Forge version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n wget -q -O forge-installer.jar ${FORGE_INSTALLER}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n java -jar forge-installer.jar --installServer > \/dev\/null 2>&1 || { echo \"Forge installer failed!\"; exit 1; }\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv $FORGE_JAR forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version \/\/ empty')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ ! -n \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O fabric-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar fabric-installer.jar server -mcversion ${MC_VERSION} -loader ${FABRIC_VERSION} -downloadMinecraft || { echo \"Fabric installer failed!\"; exit 4; }\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version \/\/ empty')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ ! -n \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O quilt-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar quilt-installer.jar install server ${MC_VERSION} ${QUILT_VERSION} --download-server --install-dir=.\/ || { echo \"Quilt installer failed!\"; exit 4; }\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ ! -n \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } }, "variables": [ + { + "name": "Modpack Version ID", + "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", + "env_variable": "VERSION_ID", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:8", + "field_type": "text" + }, { "name": "Modpack Project ID", "description": "This is the modpack project ID from the Modrinth site.\r\n\r\nFor example, the project ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/' is 1KVo5zza", @@ -44,16 +54,6 @@ "user_editable": true, "rules": "required|string|max:8", "field_type": "text" - }, - { - "name": "Modpack Version ID", - "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", - "env_variable": "VERSION_ID", - "default_value": "latest", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:8", - "field_type": "text" } ] -} +} \ No newline at end of file From 4f9caef2a7846ba9de4768953505e5de09f8a69e Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 23 Apr 2023 18:48:23 +0200 Subject: [PATCH 029/251] Update SogeBot --- bots/twitch/sogebot/egg-soge-bot.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/bots/twitch/sogebot/egg-soge-bot.json b/bots/twitch/sogebot/egg-soge-bot.json index 8a989269..4e68d540 100644 --- a/bots/twitch/sogebot/egg-soge-bot.json +++ b/bots/twitch/sogebot/egg-soge-bot.json @@ -1,17 +1,17 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-13T15:19:16+01:00", + "exported_at": "2023-04-23T18:47:53+02:00", "name": "SogeBot", "author": "info@goover.de", "description": "sogeBot - Free Twitch Bot built on Node.js https:\/\/sogebot.xyz\/", "features": null, - "images": [ - "ghcr.io\/parkervcp\/yolks:nodejs_16" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:nodejs_18": "ghcr.io\/parkervcp\/yolks:nodejs_18" + }, "file_denylist": [], "startup": "npm start", "config": { @@ -22,8 +22,8 @@ }, "scripts": { "installation": { - "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: info@goover.de\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip sqlite3 jq wget python3 build-essential ca-certificates\r\n\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\nMATCH=sogeBot\r\ncd \/mnt\/server\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\nwget -N $DOWNLOAD_LINK\r\nunzip -o $MATCH-*.zip\r\nrm -fR $MATCH-*.zip\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm ci 2>&1 | tee npmlog.txt\r\n\r\necho -e \"install completed\"\r\nexit 0", - "container": "node:16-bullseye-slim", + "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: info@goover.de\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip jq python3 build-essential ca-certificates\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\")\r\nMATCH=sogeBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\ncurl -sSL -o sogeBot.zip ${DOWNLOAD_LINK}\r\n\r\nunzip -o sogeBot.zip\r\nrm -rf sogeBot.zip\r\n\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm install -g npm@8\r\n\r\nnpm install --verbose --force\r\n\r\necho -e \"install completed\"\r\nexit 0", + "container": "node:18-bullseye-slim", "entrypoint": "bash" } }, @@ -35,7 +35,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] -} \ No newline at end of file +} From 0887e8270128aa8c2c88fd2fbf7701a55ce1839b Mon Sep 17 00:00:00 2001 From: Presti Date: Sun, 23 Apr 2023 19:00:04 +0200 Subject: [PATCH 030/251] Add: Ree6 (#2163) Add: Ree6 discord bot --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 1 + bots/discord/README.md | 5 + bots/discord/ree6/README.md | 73 ++++++++ bots/discord/ree6/config.yml | 82 +++++++++ bots/discord/ree6/egg-ree6.json | 292 ++++++++++++++++++++++++++++++++ 5 files changed, 453 insertions(+) create mode 100644 bots/discord/ree6/README.md create mode 100644 bots/discord/ree6/config.yml create mode 100644 bots/discord/ree6/egg-ree6.json diff --git a/README.md b/README.md index 2b07e1aa..f310dc55 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [parkertron](/bots/discord/parkertron) Golang * [pixel-bot](/bots/discord/pixelbot) Python * [Redbot](/bots/discord/redbot) Python +* [Ree6](/bots/discord/ree6) Java * [SinusBot](/bots/discord/sinusbot) [Other](/bots/other) diff --git a/bots/discord/README.md b/bots/discord/README.md index 4974190a..2640948c 100644 --- a/bots/discord/README.md +++ b/bots/discord/README.md @@ -43,6 +43,11 @@ Was used to test python services. [Cog-Creators/Red-DiscordBot](https://github.com/Cog-Creators/Red-DiscordBot) A multifunction Discord bot +### [Ree6](ree6) + +[Ree6-Applications](https://github.com/Ree6-Applications/Ree6) +All-in-one, open source and 100% free Discord Bot! + ### [SinusBot](sinusbot) [SinusBot](https://www.sinusbot.com/) diff --git a/bots/discord/ree6/README.md b/bots/discord/ree6/README.md new file mode 100644 index 00000000..6b4a3a0e --- /dev/null +++ b/bots/discord/ree6/README.md @@ -0,0 +1,73 @@ +# Ree6 + +___ + +## Authors / Contributors + + + + + + + + + +
+ +
Presti +
+
+ 💻 + 🤖 +
+ +
parkervcp +
+
+ 💻 + 🥚 +
+ +
QuintenQVD0 +
+
+ 💻 +
+ + + +___ + +## Bot Description & Features + +From the developer's [Github](https://github.com/Ree6-Applications/Ree6): +> Ree6 is an all-in-one Discord Bot maintained by Presti, which started as an alternative of Mee6 to provide a lot of features that are hidden behind a paywall or subscription. + +- Contains almost every feature Mee6 has. +- Has a open Source Webinterface. +- Provides advanced Audit-Logging. +- Has built in post notifications (Twitter, Instagram, YouTube, Reddit and Twitch). +- Built-in simple Ticket System. +- And more! +___ + +## Configuration + +- You will need to modify the config.yml to even start the bot. + +___ + +## Server Ports + +There are no ports required for Ree6. +___ + +## Updating + +Re-Installing the server via the panel will do the following: + +1. Update the bot to the latest version. + + +## API keys +This bot uses a lot of api keys. It will print some errors to the console if you don't have some filled in but the bot should still function as normal with the api keys you entered. \ No newline at end of file diff --git a/bots/discord/ree6/config.yml b/bots/discord/ree6/config.yml new file mode 100644 index 00000000..03a01b3e --- /dev/null +++ b/bots/discord/ree6/config.yml @@ -0,0 +1,82 @@ +# ################################ +# # # +# # Ree6 Config File # +# # by Presti # +# # # +# ################################ +# + +# Do not change this! +config: + version: 2.4.3 + creation: 1681169485237 + +# HikariCP Configuration +hikari: + + # SQL Configuration + sql: + user: root + db: root + pw: yourpw + host: localhost + port: 3306 + + # Misc Configuration + misc: + storage: sqlite + storageFile: storage/Ree6.db + poolSize: 10 + +# Heartbeat Configuration, for status reporting +heartbeat: + url: none # The URL to the Heartbeat-Server + interval: 60 + +dagpi: + apitoken: yourdagpixyztokenhere # Your Dagpi.xyz API-Token, for tweet image generation! + +amari: + apitoken: Amari API-Token # Your Amari API-Token, for Amari Level imports! + +sentry: + dsn: yourSentryDSNHere # Your Sentry DSN, for error reporting! + +# Spotify Application Configuration, used to parse Spotify Tracks/Playlists to YouTube search queries. +spotify: + client: + id: yourspotifyclientid + secret: yourspotifyclientsecret + +# Twitch Application Configuration, used for the StreamTools and Twitch Notifications. +twitch: + client: + id: yourtwitchclientidhere + secret: yourtwitchclientsecrethere + +# Twitter Application Configuration, used for the Twitter Notifications. +twitter: + consumer: + key: yourTwitterConsumerKey + secret: yourTwitterConsumerSecret + access: + key: yourTwitterAccessKey + secret: yourTwitterAccessSecret + +# Reddit Application Configuration, used for the Reddit Notification. +reddit: + client: + id: yourredditclientid + secret: yourredditclientsecret + +# Instagram Application Configuration, used for the Instagram Notification. +instagram: + username: yourInstagramUsername + password: yourInstagramPassword + +# Discord Application Configuration, used for OAuth and Bot Authentication. +bot: + tokens: + release: ReleaseTokenhere # Token used when set to release build. + beta: BetaTokenhere # Token used when set to beta build. + dev: DevTokenhere # Token used when set to dev build. diff --git a/bots/discord/ree6/egg-ree6.json b/bots/discord/ree6/egg-ree6.json new file mode 100644 index 00000000..0f8791d6 --- /dev/null +++ b/bots/discord/ree6/egg-ree6.json @@ -0,0 +1,292 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-04-22T20:23:22+02:00", + "name": "Ree6", + "author": "presti@presti.me", + "description": "All-in-one, open source and 100% free Discord Bot!", + "features": null, + "docker_images": { + "Java_17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -Dnogui=true -jar Ree6.jar", + "config": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"hikari.sql.user\": \"{{server.build.env.DATABASE_USER}}\",\r\n \"hikari.sql.db\": \"{{server.build.env.DATABASE_DB}}\",\r\n \"hikari.sql.pw\": \"{{server.build.env.DATABASE_PW}}\",\r\n \"hikari.sql.host\": \"{{server.build.env.DATABASE_HOST}}\",\r\n \"hikari.sql.port\": \"{{server.build.env.DATABASE_PORT}}\",\r\n \"hikari.misc.storage\": \"{{server.build.env.DATABASE_TYP}}\",\r\n \"hikari.misc.storageFile\": \"{{server.build.env.DATABASE_FILE}}\",\r\n \"hikari.misc.poolSize\": \"{{server.build.env.DATABASE_POOL}}\",\r\n \"heartbeat.url\": \"{{server.build.env.HEARTBEAT_URL}}\",\r\n \"heartbeat.interval\": \"{{server.build.env.HEARTBEAT_INTERVAL}}\",\r\n \"dagpi.apitoken\": \"{{server.build.env.DAGPI_TOKEN}}\",\r\n \"amari.apitoken\": \"{{server.build.env.AMARI_TOKEN}}\",\r\n \"sentry.dsn\": \"{{server.build.env.SENTRY_DSN}}\",\r\n \"spotify.client.id\": \"{{server.build.env.SPOTIFY_CLIENT_ID}}\",\r\n \"spotify.client.secret\": \"{{server.build.env.SPOTIFY_CLIENT_SECRET}}\",\r\n \"twitch.client.id\": \"{{server.build.env.TWITCH_CLIENT_ID}}\",\r\n \"twitch.client.secret\": \"{{server.build.env.TWITCH_CLIENT_SECRET}}\",\r\n \"twitter.consumer.key\": \"{{server.build.env.TWITTER_CONSUMER_ID}}\",\r\n \"twitter.consumer.secret\": \"{{server.build.env.TWITTER_CONSUMER_SECRET}}\",\r\n \"twitter.access.key\": \"{{server.build.env.TWITTER_ACCESS_ID}}\",\r\n \"twitter.access.secret\": \"{{server.build.env.TWITTER_ACCESS_SECRET}}\",\r\n \"reddit.client.id\": \"{{server.build.env.REDDIT_CLIENT_ID}}\",\r\n \"reddit.client.secret\": \"{{server.build.env.REDDIT_CLIENT_SECRET}}\",\r\n \"instagram.username\": \"{{server.build.env.INSTAGRAM_USERNAME}}\",\r\n \"instagram.password\": \"{{server.build.env.INSTAGRAM_PASSWORD}}\",\r\n \"bot.tokens.release\": \"{{server.build.env.BOT_TOKEN}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Finished Loading\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE and VERSION\r\n## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\napt update\r\napt install -y jq curl\r\n\r\n\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/ree6\/config.yml\"\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/Ree6-Applications\/Ree6\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/Ree6-Applications\/Ree6\/releases\")\r\nMATCH=jar-with-dependencies.jar\r\n\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1 )\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i *.jar)\r\n fi\r\nfi\r\n\r\n## Ree6 Setup\r\n[ ! -d \/mnt\/server ] && mkdir -p \/mnt\/server\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating Ree6...\\n\"\r\n\r\nif [ -f Ree6.jar ]; then\r\n echo -e \"Updating Ree6.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"Ree6.jar-old\")'\r\n mv -f Ree6.jar Ree6.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\\n\"\r\ncurl -sSL -o Ree6.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.yml ]; then\r\n echo -e \"Updating config.yml to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.yml-old\")'\r\n mv -f config.yml config.yml-old\r\nfi\r\n\r\necho -e \"Running: curl -sSL -o config.yml ${CONFIG_LINK}\\n\"\r\ncurl -sSL -o config.yml ${CONFIG_LINK}\r\n \r\n\r\necho -e \"\\nRee6 Successfully Installed!\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "[REQUIRED] Discord Bot Token", + "description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https:\/\/jmusicbot.com\/getting-a-bot-token\/", + "env_variable": "BOT_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Dagpi token", + "description": "Your Dagpi.xyz API-Token, for tweet image generation!", + "env_variable": "DAGPI_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Sentry DSN", + "description": "Your Sentry DSN, for error reporting!", + "env_variable": "SENTRY_DSN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Spotify Client Id", + "description": "Spotify Application Configuration, used to parse Spotify Tracks\/Playlists to YouTube search queries.", + "env_variable": "SPOTIFY_CLIENT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Spotify Client Secret", + "description": "Spotify Application Configuration, used to parse Spotify Tracks\/Playlists to YouTube search queries.", + "env_variable": "SPOTIFY_CLIENT_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Heartbeat Url", + "description": "The URL to the Heartbeat-Server", + "env_variable": "HEARTBEAT_URL", + "default_value": "none", + "user_viewable": true, + "user_editable": true, + "rules": "string", + "field_type": "text" + }, + { + "name": "Heartbeat Interval", + "description": "The interval between the heartbeats.", + "env_variable": "HEARTBEAT_INTERVAL", + "default_value": "60", + "user_viewable": true, + "user_editable": true, + "rules": "integer", + "field_type": "text" + }, + { + "name": "Amari Token", + "description": "Your Amari API-Token, for Amari Level imports!", + "env_variable": "AMARI_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitch Client Id", + "description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.", + "env_variable": "TWITCH_CLIENT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitch Client Secret", + "description": "Twitch Application Configuration, used for the StreamTools and Twitch Notifications.", + "env_variable": "TWITCH_CLIENT_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitter Consumer Key", + "description": "Twitter Application Configuration, used for the Twitter Notifications.", + "env_variable": "TWITTER_CONSUMER_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitter Consumer Secret", + "description": "Twitter Application Configuration, used for the Twitter Notifications.", + "env_variable": "TWITTER_CONSUMER_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitter Access Key", + "description": "Twitter Application Configuration, used for the Twitter Notifications.", + "env_variable": "TWITTER_ACCESS_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitter Access Secret", + "description": "Twitter Application Configuration, used for the Twitter Notifications.", + "env_variable": "TWITTER_ACCESS_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Reddit Client Id", + "description": "Reddit Application Configuration, used for the Reddit Notification.", + "env_variable": "REDDIT_CLIENT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Reddit Client Secret", + "description": "Reddit Application Configuration, used for the Reddit Notification.", + "env_variable": "REDDIT_CLIENT_SECRET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Instagram Username", + "description": "Instagram Application Configuration, used for the Instagram Notification.", + "env_variable": "INSTAGRAM_USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Instagram Password", + "description": "Instagram Application Configuration, used for the Instagram Notification.", + "env_variable": "INSTAGRAM_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "SQL Username", + "description": "Username for the SQL connection.", + "env_variable": "SQL_USER", + "default_value": "root", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:32", + "field_type": "text" + }, + { + "name": "SQL Database", + "description": "Database for the SQL Connection", + "env_variable": "SQL_DB", + "default_value": "root", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:64", + "field_type": "text" + }, + { + "name": "SQL Password", + "description": "Password for the SQL connection.", + "env_variable": "SQL_PW", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "SQL Port", + "description": "Port for the SQL connection.", + "env_variable": "SQL_PORT", + "default_value": "3306", + "user_viewable": true, + "user_editable": true, + "rules": "integer", + "field_type": "text" + }, + { + "name": "Database Typ", + "description": "The Typ of the Database Ree6 should use!\r\nPossible typs:\r\n- mariadb\r\n- sqlite", + "env_variable": "DATABASE_TYP", + "default_value": "sqlite", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:mariadb,sqlite", + "field_type": "text" + }, + { + "name": "Database Storagefile", + "description": "The location of the storagefile if sqlite is being used.", + "env_variable": "DATABASE_FILE", + "default_value": "storage\/Ree6.db", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "[DEVELOPER-STUFF] Database Poolsize", + "description": "The Database connection pool size!", + "env_variable": "DATABASE_POOL", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "Database host", + "description": "The Host address of the Database connection.", + "env_variable": "DATABASE_HOST", + "default_value": "localhost", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + } + ] +} \ No newline at end of file From cf7f05afc515580c544a77f39aa9c4eb57fa6d65 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 24 Apr 2023 17:43:25 +0200 Subject: [PATCH 031/251] Update: truck sim --- ...ican-truck-simulator-dedicated-server.json | 30 ++++--------------- ...uro-truck-simulator2-dedicated-server.json | 26 ++-------------- .../truck-simulator/server_config.sii | 2 +- 3 files changed, 9 insertions(+), 49 deletions(-) diff --git a/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json b/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json index 2b3ce29d..172be105 100644 --- a/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json +++ b/game_eggs/steamcmd_servers/truck-simulator/american-truck-simulator/egg-american-truck-simulator-dedicated-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-15T18:37:30+01:00", + "exported_at": "2023-04-24T17:42:49+02:00", "name": "American Truck Simulator Dedicated Server", "author": "chase@cstmgames.com", "description": "This will set up SteamCMD and all the required files for the newly released American Truck Simulator Dedicated server. Simply placed the exported server config from your ATS instance to the .local\/share\/American Truck Simulator\/ folder and select start. Make sure that auto start is off on server creation to allow you to upload your config files.", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], "startup": ".\/bin\/linux_x64\/amtrucks_server", @@ -20,7 +20,7 @@ "files": "{\r\n \"\/.local\/share\/American Truck Simulator\/server_config.sii\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" connection_dedicated_port:\": \" connection_dedicated_port: {{server.build.default.port}}\",\r\n \" query_dedicated_port:\": \" query_dedicated_port: {{env.QUERY_PORT}}\",\r\n \" server_logon_token:\": \" server_logon_token: \\\"{{env.STEAM_TOKEN}}\\\"\",\r\n \" lobby_name:\": \" lobby_name: \\\"{{env.LOBBY_NAME}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"[MP] Session running.\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { @@ -50,26 +50,6 @@ "rules": "required|string|in:2239530", "field_type": "text" }, - { - "name": "Steam username", - "description": "", - "env_variable": "STEAM_USER", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:32", - "field_type": "text" - }, - { - "name": "Steam password", - "description": "", - "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:64", - "field_type": "text" - }, { "name": "Query port", "description": "By there readme of the game the query port must be between 27015-27020, but from our testing this port can be any port", @@ -82,12 +62,12 @@ }, { "name": "Steam Auth token", - "description": "Acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required).", + "description": "By default, whenever a dedicated server is launched it is using an anonymous account. For such an account non-persistent server id is generated (used for direct search). To avoid this you can acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required)", "env_variable": "STEAM_TOKEN", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:32", + "rules": "nullable|string|max:32", "field_type": "text" }, { diff --git a/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json b/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json index a8d52c2c..1f2356ca 100644 --- a/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json +++ b/game_eggs/steamcmd_servers/truck-simulator/euro-truck-simulator2/egg-euro-truck-simulator2-dedicated-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-14T17:26:13+01:00", + "exported_at": "2023-04-24T17:19:01+02:00", "name": "Euro Truck Simulator 2 Dedicated server", "author": "josdekurk@gmail.com", "description": "Travel across Europe as king of the road, a trucker who delivers important cargo across impressive distances! With dozens of cities to explore, your endurance, skill and speed will all be pushed to their limits.", @@ -62,12 +62,12 @@ }, { "name": "Steam Auth token", - "description": "Acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required).", + "description": "By default, whenever a dedicated server is launched it is using an anonymous account. For such an account non-persistent server id is generated (used for direct search). To avoid this you can acquire a logon token on https:\/\/steamcommunity.com\/dev\/managegameservers (game ownership is required)", "env_variable": "STEAM_TOKEN", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:32", + "rules": "nullable|string|max:32", "field_type": "text" }, { @@ -79,26 +79,6 @@ "user_editable": true, "rules": "required|string|max:64", "field_type": "text" - }, - { - "name": "Steam password", - "description": "", - "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:64", - "field_type": "text" - }, - { - "name": "Steam username", - "description": "", - "env_variable": "STEAM_USER", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:32", - "field_type": "text" } ] } \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/truck-simulator/server_config.sii b/game_eggs/steamcmd_servers/truck-simulator/server_config.sii index f6bb06b6..68e714d9 100644 --- a/game_eggs/steamcmd_servers/truck-simulator/server_config.sii +++ b/game_eggs/steamcmd_servers/truck-simulator/server_config.sii @@ -8,7 +8,7 @@ server_config : _nameless.54e.4440 { max_players: 8 max_vehicles_total: 100 max_ai_vehicles_player: 50 - max_ai_vehicles_player_spawn: 30 + max_ai_vehicles_player_spawn: 50 connection_virtual_port: 100 query_virtual_port: 101 connection_dedicated_port: 27015 From 1b1392739a2d40c6130965b544affd5f2b12d9f9 Mon Sep 17 00:00:00 2001 From: Fuggschen <64164659+Fuggschen@users.noreply.github.com> Date: Tue, 25 Apr 2023 19:33:17 +0200 Subject: [PATCH 032/251] Update egg-empyrion--galactic-survival.json Changed startup command to connect to telnet for accepting commands --- .../egg-empyrion--galactic-survival.json | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json index 78eef2b3..f9a5ec94 100644 --- a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json +++ b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-16T17:24:48+01:00", + "exported_at": "2023-04-25T19:31:11+02:00", "name": "Empyrion: Galactic Survival", "author": "info@goover.de", "description": "Empyrion: Galactic Survival dedicated server", @@ -13,10 +13,10 @@ "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" }, "file_denylist": [], - "startup": "cd empyrion; WINEDLLOVERRIDES=\"mscoree,mshtml=\" wine .\/DedicatedServer\/EmpyrionDedicated.exe -batchmode -log -logFile .\/logs\/current.log \"$@\" &> .\/logs\/wine.log | tail -f .\/logs\/current.log", + "startup": "cd empyrion; WINEDLLOVERRIDES=\"mscoree,mshtml=\" wine .\/DedicatedServer\/EmpyrionDedicated.exe -batchmode -log -logFile .\/logs\/current.log & echo -e \"Checking on telnet connection\" && until nc -z 127.0.0.1 ${TELNET_PORT}; do echo -e \"Waiting on telnet connection...\"; sleep 5; done && $( [[ -z ${TELNET_PWD} ]] && printf %s \"telnet -E 127.0.0.1 ${TELNET_PORT}\")", "config": { - "files": "{\r\n \"empyrion\/dedicated.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"ServerConfig.Srv_Port\": \"{{server.build.default.port}}\",\r\n \"ServerConfig.Srv_Name\": \"{{env.SRV_NAME}}\",\r\n \"ServerConfig.Srv_Password\": \"{{env.SRV_PWD}}\",\r\n \"ServerConfig.Srv_MaxPlayers\": \"{{env.MAX_PLAYERS}}\",\r\n \"ServerConfig.Tel_Enabled\": \"{{env.TELNET_ENABLED}}\",\r\n \"ServerConfig.Tel_Port\": \"{{env.TELNET_PORT}}\",\r\n \"ServerConfig.Tel_Pwd\": \"{{env.TELNET_PWD}}\",\r\n \"ServerConfig.Srv_Description\": \"{{env.SRV_DESC}}\",\r\n \"GameConfig.Seed\": \"{{env.SEED}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"-LOG- Start Game\"\r\n}", + "files": "{\r\n \"empyrion\/dedicated.yaml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"ServerConfig.Srv_Port\": \"{{server.build.default.port}}\",\r\n \"ServerConfig.Srv_Name\": \"{{env.SRV_NAME}}\",\r\n \"ServerConfig.Srv_Password\": \"{{env.SRV_PWD}}\",\r\n \"ServerConfig.Srv_MaxPlayers\": \"{{env.MAX_PLAYERS}}\",\r\n \"ServerConfig.Tel_Enabled\": \"{{env.TELNET_ENABLED}}\",\r\n \"ServerConfig.Tel_Port\": \"{{env.TELNET_PORT}}\",\r\n \"ServerConfig.Srv_Description\": \"{{env.SRV_DESC}}\",\r\n \"GameConfig.Seed\": \"{{env.SEED}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Connected to 127.0.0.1.\"\r\n}", "logs": "{}", "stop": "saveandexit 0" }, @@ -78,16 +78,6 @@ "rules": "required|numeric", "field_type": "text" }, - { - "name": "Telnet Password", - "description": "Telnet server password.", - "env_variable": "TELNET_PWD", - "default_value": "Abc", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:20", - "field_type": "text" - }, { "name": "Game Seed", "description": "World generation seed. Numeric between 1 and 7 characters.", @@ -169,4 +159,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 1b911a7f519e044e2dc9f5bf80ab851e01d8daf9 Mon Sep 17 00:00:00 2001 From: Tom Chilvers <66132512+tomchilvers@users.noreply.github.com> Date: Mon, 1 May 2023 00:58:51 +0100 Subject: [PATCH 033/251] Fix typo in README.md "prt" to "port" --- software/languagetool/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/languagetool/README.md b/software/languagetool/README.md index 7c5a6602..1ed45d72 100644 --- a/software/languagetool/README.md +++ b/software/languagetool/README.md @@ -4,6 +4,6 @@ LanguageTool is an Open Source proofreading software for English, French, German View https://languagetool.org for more information. -Requires one prt for comunication. +Requires one port for comunication. Try `addr:port/v2/check?language=en-US&text=this+is+a+test` to test From 4c137d7a0c9aee5001f9204a2633c5d1ca6841ab Mon Sep 17 00:00:00 2001 From: Fuggschen <64164659+Fuggschen@users.noreply.github.com> Date: Mon, 1 May 2023 09:54:44 +0200 Subject: [PATCH 034/251] added foldingathome egg (#2226) added foldingathome egg --- README.md | 4 + software/foldingathome/README.md | 35 ++++++ software/foldingathome/egg-folding--home.json | 102 ++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 software/foldingathome/README.md create mode 100644 software/foldingathome/egg-folding--home.json diff --git a/README.md b/README.md index f310dc55..6f3e353a 100644 --- a/README.md +++ b/README.md @@ -346,6 +346,10 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Elasticsearch](/software/elasticsearch) +### Folding@Home + +* [Folding@Home](/software/foldingathome) + ### Gitea * [Gitea](/software/gitea) diff --git a/software/foldingathome/README.md b/software/foldingathome/README.md new file mode 100644 index 00000000..817293ca --- /dev/null +++ b/software/foldingathome/README.md @@ -0,0 +1,35 @@ +# Folding@Home + +[Folding@Home](https://foldingathome.org/) is a distributed computing project aimed at simulating protein folding and other molecular dynamics. + +## User Account + +You can setup an User Account to track your PPD (Points per Day) and done WUs (Work Units). To get a Passkey visit the [Folding@home Passkey Site](https://apps.foldingathome.org/getpasskey) + +## Teams + +You can add your earned Points to a Team that you support. This is not nessesary as the points are just to track how much work was done (with some exeptions). Here is the [full List of the Teams](https://stats.foldingathome.org/team) + +## Remote Control + +You can connect via FAHControl to your instance. WebUI is not supported because it wouldn't be password protected. + +## CPU Usage Control + +There are three power modes: +- light +- medium +- full + +Only light and medium are useful because full enables gpu which is not supported in this egg. +Light uses half of the available **cpu cores of your system**. Full uses **all of your cpu cores.** You can still limit the cpu usage via the panel. + +## Supported Versions + +Versions < v8 are supported. v8 is still beta and wont work with this egg. Get the latest v7 version number here: [Folding@Home Downloadserver](https://download.foldingathome.org/releases/public/release/fahclient/debian-stable-64bit/) + +## Server Ports + +| Port | default | +| ---- | ------- | +| FAHControl | 36330 | diff --git a/software/foldingathome/egg-folding--home.json b/software/foldingathome/egg-folding--home.json new file mode 100644 index 00000000..fb057617 --- /dev/null +++ b/software/foldingathome/egg-folding--home.json @@ -0,0 +1,102 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-04-30T12:31:28+02:00", + "name": "Folding@Home", + "author": "fuggschen@krk-gaming.de", + "description": "Folding@home is a distributed computing project aimed to help scientists develop new therapeutics for a variety of diseases by the means of simulating protein dynamics. This includes the process of protein folding and the movements of proteins, and is reliant on simulations run on volunteers' personal computers", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/FAHClient --user={{FAH_USERNAME}} --team={{FAH_TEAM}} --passkey={{FAH_PASSKEY}} $(if {{FAH_ANON}}; then echo \"--fold-anon=true\"; fi) --command-port={{SERVER_PORT}} --password={{FAH_PASSWORD}} --power={{FAH_POWER}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Started FahCore\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n#\r\n# Folding@Home install script\r\n#\r\n# Created by Fuggschen\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"64bit\" || echo \"arm64\")\r\ncd \/tmp\r\n\r\necho \"Removing previous Version\"\r\nmv \/mnt\/server\/config.xml \/tmp\/config.xml\r\nrm -rf \/mnt\/server\/*\r\n\r\necho \"Installing dependencies\"\r\napt update && apt upgrade -y && apt install curl bzip2 -y\r\n\r\necho \"Downloading FAHClient\"\r\ncurl -sSL -o fahclient.tar.bz2 https:\/\/download.foldingathome.org\/releases\/public\/release\/fahclient\/debian-stable-${ARCH}\/${FAH_VERSION}\/latest.tar.bz2\r\n\r\necho \"Installing FAHClient\"\r\ntar -xjf fahclient.tar.bz2 -C \/mnt\/server --strip-components=1\r\n\r\necho \"Cleaning up..\"\r\nrm -f fahclient.tar.bz2\r\nrm -f \/mnt\/server\/sample-config.xml\r\nmv \/tmp\/config.xml \/mnt\/server\/config.xml\r\n\r\nFILE=\/mnt\/server\/config.xml\r\nif [[ ! -f $FILE ]]\r\nthen\r\necho \"Setting up config.xml\"\r\ncat > $FILE << EOF\r\n\r\n \r\n \r\n \r\n \r\n<\/config>\r\nEOF\r\nfi\r\n\r\necho \"Done!\"", + "container": "debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "FaH Username", + "description": "Your Folding@Home Username", + "env_variable": "FAH_USERNAME", + "default_value": "Anonymous", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "FaH Team", + "description": "Your Folding@Home Team that you are folding for. For reference look here: https:\/\/stats.foldingathome.org\/team", + "env_variable": "FAH_TEAM", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "FaH Passkey", + "description": "Your Folding@Home Passkey for your Username, if not Anonymous. Get your Passkey here: https:\/\/apps.foldingathome.org\/getpasskey", + "env_variable": "FAH_PASSKEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "FaH Anonymous Mode", + "description": "Set to true if you are folding Anonymously", + "env_variable": "FAH_ANON", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "FaH Version", + "description": "Set to wanted major Folding@Home Version. Check here: https:\/\/download.foldingathome.org\/releases\/public\/release\/fahclient\/debian-stable-64bit\/", + "env_variable": "FAH_VERSION", + "default_value": "v7.6", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "FaHControl Password", + "description": "Set a WebUI Password", + "env_variable": "FAH_PASSWORD", + "default_value": "SetPasswordHere", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "FaH Power", + "description": "The Powerlevel it should use:\r\n- light (only half the cpu power is used)\r\n- medium (full cpu power)\r\n- full (full cpu and gpu power but gpu is not supported)", + "env_variable": "FAH_POWER", + "default_value": "medium", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:light,medium,full", + "field_type": "text" + } + ] +} \ No newline at end of file From ef680ec5098e1bcb838dc7eb38197cf245847a6d Mon Sep 17 00:00:00 2001 From: Kyle Williquette Date: Mon, 1 May 2023 04:25:56 -0500 Subject: [PATCH 035/251] Rimworld open world (#1985) * Added Rimworld Open World --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 4 + game_eggs/README.md | 4 + game_eggs/rimworld/README.md | 5 + game_eggs/rimworld/open_world/README.md | 13 ++ .../open_world/egg-rimworld-open-world.json | 113 ++++++++++++++++++ 5 files changed, 139 insertions(+) create mode 100644 game_eggs/rimworld/README.md create mode 100644 game_eggs/rimworld/open_world/README.md create mode 100644 game_eggs/rimworld/open_world/egg-rimworld-open-world.json diff --git a/README.md b/README.md index 6f3e353a..a5914b11 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,10 @@ If you are reading this it looks like you are looking to add an egg to your serv * [RedM](game_eggs/rdr/redm) +[Rimworld](game_eggs/rimworld) + +* [Open World](game_eggs/rimworld/open_world) + [SteamCMD Servers](game_eggs/steamcmd_servers) These eggs use SteamCMD to install * [7 Days to Die](game_eggs/steamcmd_servers/7_days_to_die) diff --git a/game_eggs/README.md b/game_eggs/README.md index f1a566b2..4f7a8eaf 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -104,6 +104,10 @@ * [RedM](rdr/redm) +[Rimworld](rimworld) + +* [Open World](rimworld/open_world) + [Starmade](starmade) [SteamCMD Servers](steamcmd_servers) These eggs use SteamCMD to install diff --git a/game_eggs/rimworld/README.md b/game_eggs/rimworld/README.md new file mode 100644 index 00000000..440cfb94 --- /dev/null +++ b/game_eggs/rimworld/README.md @@ -0,0 +1,5 @@ +# Rimworld + +RimWorld follows three survivors from a crashed space liner as they build a colony on a frontier world at the rim of known space. Inspired by the space western vibe of Firefly, the deep simulation of Dwarf Fortress, and the epic scale of Dune and Warhammer 40,000. + +Manage colonists' moods, needs, individual wounds, and illnesses. Engage in small-team tactical gunplay. Fashion structures, weapons, and apparel from metal, wood, stone, cloth, or futuristic materials. Fight pirate raiders, hostile tribes, rampaging animals, giant tunnelling insects and ancient killing machines. Tame and train cute pets, productive farm animals, and deadly attack beasts. Watch colonists develop relationships with family members, lovers, and spouses. Discover a new generated world each time you play. Build colonies in the desert, jungle, tundra, and more. Manage quirky colonists with unique backstories, traits, and skills. Learn to play easily with the help of an intelligent and unobtrusive AI tutor. \ No newline at end of file diff --git a/game_eggs/rimworld/open_world/README.md b/game_eggs/rimworld/open_world/README.md new file mode 100644 index 00000000..00d1ab5c --- /dev/null +++ b/game_eggs/rimworld/open_world/README.md @@ -0,0 +1,13 @@ +# Open World + +## From their [site](https://openworldhelp.fandom.com/wiki/Open_World_Wiki) + +The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more! + +## Server Ports + +| Port | default | +|---------|---------| +| Game | 25555 | + +### Mods/Plugins may require ports to be added to the server. See [here](https://openworldhelp.fandom.com/wiki/Creating_a_server) for help diff --git a/game_eggs/rimworld/open_world/egg-rimworld-open-world.json b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json new file mode 100644 index 00000000..b882a7da --- /dev/null +++ b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json @@ -0,0 +1,113 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-01T11:19:44+02:00", + "name": "Rimworld: Open World", + "author": "kyle@williquette.us", + "description": "The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!\r\n\r\nhttps:\/\/github.com\/mypassowordisntweak\/OpenWorld", + "features": null, + "docker_images": { + "Dotnet 3.1": "ghcr.io\/parkervcp\/yolks:dotnet_3.1", + "Dotnet 6": "ghcr.io\/parkervcp\/yolks:dotnet_6" + }, + "file_denylist": [], + "startup": ".\/OpenWorldServer", + "config": { + "files": "{\r\n \"Data\/Config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": \"{{server.build.default.port}}\",\r\n \"MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"EnforceMods\": \"{{server.build.env.ENFORCE_MODS}}\",\r\n \"UseModBlacklist\": \"{{server.build.env.USE_MOD_BLACKLIST}}\",\r\n \"UseCustomDifficulty\": \"{{server.build.env.USE_CUSTOM_DIFF}}\",\r\n \"UseWhitelist\": \"{{server.build.env.WHITELIST}}\",\r\n \"AllowCustomScenarios\": \"{{server.build.env.CUSTOM_SCEN}}\",\r\n \"PlayerVersion\": \"{{server.build.env.PLAYER_VERSION}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \" Server Launched\"\r\n}", + "logs": "{}", + "stop": "shutdown" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\napt update\r\napt -y install curl jq unzip git\r\n\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/mypassowordisntweak\/OpenWorld\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/mypassowordisntweak\/OpenWorld\/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH} | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${ARCH} | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH}| head -1)\r\n fi\r\nfi\r\n\r\n\r\n#Download the Rimworld Open World server\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\"\r\ncurl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\r\necho -e \"Unzipping ${ARCH}.zip\"\r\nunzip -o ${ARCH}.zip\r\nmv ${ARCH}\/* \/mnt\/server\r\nchmod +x \"OpenWorldServer\"\r\nrm -rf ${ARCH}.zip ${ARCH}\/\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nFILE=\/mnt\/server\/Data\/Config.json\r\nif [ -f \"$FILE\" ]; then\r\n echo \"config already exists.\"\r\nelse \r\n echo \"Config does not exist, making one\"\r\n mkdir -p \/mnt\/server\/Data\r\n cd \/mnt\/server\/Data\r\ncat << EOF > \"Config.json\"\r\n{\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": 25555,\r\n \"MaxPlayers\": 10,\r\n \"PlayerVersion\": \"1.2\",\r\n \"EnforceMods\": false,\r\n \"UseModBlacklist\": false,\r\n \"UseCustomDifficulty\": false,\r\n \"UseWhitelist\": false,\r\n \"AllowCustomScenarios\": false\r\n}\r\nEOF\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Open World Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:8", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "sets the maximum number of players allowed to connect at once.", + "env_variable": "MAX_PLAYERS", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|int", + "field_type": "text" + }, + { + "name": "Enforce Mods", + "description": "This forces players to use the mods listed in the the \"Mods Enforced\" folder, with this disabled it will allow players to join with any mods they would like", + "env_variable": "ENFORCE_MODS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Mod Blacklist", + "description": "enabled you to blacklist mods from being used, usually used when enforced mods are disabled.", + "env_variable": "USE_MOD_BLACKLIST", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Custom Difficulty", + "description": "forces all players to use the difficulty setting set in the \"Difficulty\" file. MAKE SURE YOU GIVE A VALUE TO EVERYTHING OR IT WILL BE AT 0%", + "env_variable": "USE_CUSTOM_DIFF", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Use Whitelist", + "description": "allows only the usernames listed in the \"Whitelist\" file to join the server.", + "env_variable": "WHITELIST", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Allow Custom Scenarios", + "description": "allows people to create custom scenarios when creating their save on the server.", + "env_variable": "CUSTOM_SCEN", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Player Version", + "description": "version the server will accept clients joining in with.\r\n\r\nTO see the latest:\r\nhttps:\/\/discord.com\/channels\/992806266109964319\/992881103071354890\r\n\r\nfor example for v1.12 you would write 1.12", + "env_variable": "PLAYER_VERSION", + "default_value": "1.2", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10", + "field_type": "text" + } + ] +} \ No newline at end of file From 15830c362564a539d7749917b5aa369c6d737361 Mon Sep 17 00:00:00 2001 From: MrRazamataz <56600481+MrRazamataz@users.noreply.github.com> Date: Mon, 1 May 2023 17:24:51 +0100 Subject: [PATCH 036/251] Add more languages to the Start Configuration for PMMP and Nukkit (#2241) PMMP & Nukkit: simplify Start Configuration for other languages --- .../minecraft/bedrock/nukkit/egg-nukkit.json | 29 ++++++++++--------- .../pocketmine_mp/egg-pocketmine-m-p.json | 4 +-- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json b/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json index afb85499..91910950 100644 --- a/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json +++ b/game_eggs/minecraft/bedrock/nukkit/egg-nukkit.json @@ -1,26 +1,26 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-16T13:31:45-05:00", + "exported_at": "2023-05-01T16:48:52+01:00", "name": "Nukkit", "author": "parker@parkervcp.com", "description": "Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition\r\n\r\nhttps:\/\/cloudburstmc.org", "features": null, - "images": [ - "quay.io\/pterodactyl\/core:java-glibc", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_17" - ], + "docker_images": { + "quay.io\/pterodactyl\/core:java-glibc": "quay.io\/pterodactyl\/core:java-glibc", + "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", + "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8", + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "startup": "{\r\n \"done\": \")! \"\r\n}", "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", "stop": "stop" }, @@ -39,7 +39,8 @@ "default_value": "server.jar", "user_viewable": true, "user_editable": true, - "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" }, { "name": "Download Path", @@ -48,7 +49,8 @@ "default_value": "", "user_viewable": false, "user_editable": false, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "nukkit version", @@ -57,7 +59,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] } diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index 609ee1e3..b1228d0d 100644 --- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-12T02:53:07-05:00", + "exported_at": "2023-05-01T16:49:09+01:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", @@ -16,7 +16,7 @@ "startup": ".\/bin\/php7\/bin\/php .\/PocketMine-MP.phar --no-wizard --disable-ansi", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "startup": "{\r\n \"done\": \")! \"\r\n}", "logs": "{}", "stop": "stop" }, From c534a487b61774b937b6e4873de803cfd37f405f Mon Sep 17 00:00:00 2001 From: Loki <59907407+Loki-101@users.noreply.github.com> Date: Thu, 4 May 2023 16:09:02 -0700 Subject: [PATCH 037/251] Update egg-red.json Update python from 3.8 to 3.11, goes with https://github.com/parkervcp/yolks/pull/150 --- bots/discord/redbot/egg-red.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bots/discord/redbot/egg-red.json b/bots/discord/redbot/egg-red.json index 953a179b..9a8c1052 100644 --- a/bots/discord/redbot/egg-red.json +++ b/bots/discord/redbot/egg-red.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-06T11:14:23+01:00", + "exported_at": "2023-05-04T15:34:30-07:00", "name": "Red", "author": "parker@parkervcp.com", "description": "A multifunction Discord bot \r\n\r\nhttps:\/\/github.com\/Cog-Creators\/Red-DiscordBot", @@ -22,8 +22,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-11-jre\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\n\r\necho -e \"install finished\"", - "container": "python:3.8-slim", + "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-11-jre\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\ncurl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\necho -e \"install finished\"", + "container": "python:3.11-slim", "entrypoint": "bash" } }, @@ -49,4 +49,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From e10762c1bc3ac702c5f6bcc73b25efaf62a850fb Mon Sep 17 00:00:00 2001 From: David Katz Date: Fri, 5 May 2023 18:14:31 -0700 Subject: [PATCH 038/251] Update Modrinth Egg with better error handling --- .../java/modrinth/egg-modrinth-generic.json | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json index f1192228..2859e9ff 100644 --- a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json +++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-04-20T19:34:09-07:00", + "exported_at": "2023-05-05T18:13:15-07:00", "name": "Modrinth Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a Modrinth modpack.", @@ -29,22 +29,12 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: ${SERVER_DIR:=\/mnt\/server}\r\n: ${PROJECT_ID:=}\r\n: ${VERSION_ID:=}\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p $SERVER_DIR\r\nfi\r\n\r\ncd $SERVER_DIR\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n PROJECT_TITLE=$(echo $PROJECT_DATA | jq -r '.title \/\/ empty')\r\n PROJECT_SUPPORTED=$(echo $PROJECT_DATA | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ ! -n \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo $PROJECT_DATA | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo $PROJECT_DATA | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ ! -n \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n DOWNLOAD_URL=$(echo $JSON_DATA | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ ! -n \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q ${DOWNLOAD_URL} -O server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' ${MANIFEST} | while read -r mod; do\r\n FILE_URL=$(echo ${mod} | jq -r '.url \/\/ empty')\r\n\r\n if [[ ! -n \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n FORGE_VERSION=$(jq -r '.dependencies.forge \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${FORGE_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Forge version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n wget -q -O forge-installer.jar ${FORGE_INSTALLER}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n java -jar forge-installer.jar --installServer > \/dev\/null 2>&1 || { echo \"Forge installer failed!\"; exit 1; }\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv $FORGE_JAR forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version \/\/ empty')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ ! -n \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O fabric-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar fabric-installer.jar server -mcversion ${MC_VERSION} -loader ${FABRIC_VERSION} -downloadMinecraft || { echo \"Fabric installer failed!\"; exit 4; }\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' ${MANIFEST})\r\n QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' ${MANIFEST})\r\n\r\n if [[ ! -n \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest\"\r\n exit 1\r\n fi\r\n\r\n INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n INSTALLER_VERSION=$(echo $INSTALLER_JSON | jq -r '.[0].version \/\/ empty')\r\n INSTALLER_URL=$(echo $INSTALLER_JSON | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ ! -n \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ ! -n \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n wget -q -O quilt-installer.jar ${INSTALLER_URL}\r\n\r\n if [[ $? != 0 ]]; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n java -jar quilt-installer.jar install server ${MC_VERSION} ${QUILT_VERSION} --download-server --install-dir=.\/ || { echo \"Quilt installer failed!\"; exit 4; }\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ ! -n \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' ${MANIFEST}) != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n\r\n echo -e \"\\tRunning apt update\"\r\n if ! apt update > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt update failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRunning apt install\"\r\n if ! apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt install failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n local PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.title \/\/ empty')\r\n local PROJECT_SUPPORTED=$(echo \"$PROJECT_DATA\" | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo \"$JSON_DATA\" | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"\\tERROR: Failed to download modpack files!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' \"${MANIFEST}\" | while read -r mod; do\r\n local FILE_URL=$(echo \"${mod}\" | jq -r '.url \/\/ empty')\r\n local FILE_NAME=$(echo \"${mod}\" | jq -r '.name \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n \r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod '${FILE_NAME}'\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying shared overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FORGE_VERSION=$(jq -r '.dependencies.forge \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FORGE_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Forge version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_JSON}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve Quilt installer information from manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } }, "variables": [ - { - "name": "Modpack Version ID", - "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", - "env_variable": "VERSION_ID", - "default_value": "latest", - "user_viewable": true, - "user_editable": true, - "rules": "string|max:8", - "field_type": "text" - }, { "name": "Modpack Project ID", "description": "This is the modpack project ID from the Modrinth site.\r\n\r\nFor example, the project ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/' is 1KVo5zza", @@ -54,6 +44,16 @@ "user_editable": true, "rules": "required|string|max:8", "field_type": "text" + }, + { + "name": "Modpack Version ID", + "description": "This is the modpack version ID from the Modrinth site.\r\n\r\nFor example, the version ID of 'https:\/\/modrinth.com\/modpack\/fabulously-optimized\/version\/4.7.4' is P9wA6exe", + "env_variable": "VERSION_ID", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:8", + "field_type": "text" } ] } \ No newline at end of file From 2e233179e6b71f9d1a048a144d9e92ca48a7c236 Mon Sep 17 00:00:00 2001 From: David Katz Date: Fri, 5 May 2023 19:06:27 -0700 Subject: [PATCH 039/251] Add new and improved CurseForge generic egg --- game_eggs/minecraft/java/curseforge/README.md | 23 +++++++ .../curseforge/egg-curse-forge-generic.json | 69 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 game_eggs/minecraft/java/curseforge/README.md create mode 100644 game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json diff --git a/game_eggs/minecraft/java/curseforge/README.md b/game_eggs/minecraft/java/curseforge/README.md new file mode 100644 index 00000000..d74cba0f --- /dev/null +++ b/game_eggs/minecraft/java/curseforge/README.md @@ -0,0 +1,23 @@ +# CurseForge Generic + +## This is a generic egg for CurseForge modpacks + +You will need to give it a modpack project ID. The project ID for [All the Mods 8 - ATM8](https://www.curseforge.com/minecraft/modpacks/all-the-mods-8) is `520914` for example. +This can be found on the modpack page in the `About Project` section in the right sidebar. + +You can also optionally specify a file ID. If you do not specify a file ID, the latest version will be used. +The file ID for the server pack for [All the Mods 8 - ATM8](https://www.curseforge.com/minecraft/modpacks/all-the-mods-8) version `1.0.17` is `4504876` for example. +This can be found on the modpack page by clicking the wanted file and copying the id at the end of the URL (the number after `/files/`). + +The script will automatically setup of Forge, Fabric, or Quilt depending on the modpack. + +You *must* specify a CurseForge API key. +You can find out how to get an API key [here](https://support.curseforge.com/en/support/solutions/articles/9000208346-about-the-curseforge-api-and-how-to-apply-for-a-key) + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | \ No newline at end of file diff --git a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json new file mode 100644 index 00000000..05b1b87b --- /dev/null +++ b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json @@ -0,0 +1,69 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-05T19:03:39-07:00", + "name": "CurseForge Generic", + "author": "contact@chromozone.dev", + "description": "A generic egg for a CurseForge modpack.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# CurseForge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n: \"${API_KEY:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nCURSEFORGE_API_URL=\"https:\/\/api.curseforge.com\/v1\/mods\/\"\r\nCURSEFORGE_API_HEADERS=(\"--header=Accept: application\/json\" \"--header=x-api-key: ${API_KEY}\")\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving CurseForge project information...\"\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=false\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.data.mainFileId \/\/ empty')\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n local VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack version id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.serverPackFileId|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n local VERSION_SERVER_ID;\r\n if [[ -n \"${VERSION_SERVER_PACK}\" ]]; then\r\n VERSION_ID=$VERSION_SERVER_PACK\r\n IS_SERVER_PACK=true\r\n elif [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.id|tostring == $VERSION_ID) | .id') == \"${VERSION_ID}\" ]]; then\r\n VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack version id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n # Check if version id is unset or empty string\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n echo -e \"\\tWARNING: Version id '${VERSION_ID}' is not a server pack, attempting to use client files\"\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\/download-url\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction get_loader {\r\n echo -e \"Retrieving loader information...\"\r\n\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local CLIENT_VERSION_ID;\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.id|tostring == $VERSION_ID) | .id') != \"${VERSION_ID}\" ]]; then\r\n # Check if the provided version id is a server pack\r\n VERSION_CLIENT_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.serverPackFileId|tostring==$VERSION_ID) | .id')\"\r\n\r\n if [[ -n \"${VERSION_CLIENT_PACK}\" ]]; then\r\n CLIENT_VERSION_ID=$VERSION_CLIENT_PACK\r\n else\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n else\r\n CLIENT_VERSION_ID=$VERSION_ID\r\n fi\r\n\r\n echo -e \"\\tRetrieving version information for '${CLIENT_VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${CLIENT_VERSION_ID}\/download-url\" -O -)\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${CLIENT_VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q \"${DOWNLOAD_URL}\" -O client.zip\r\n\r\n echo -e \"\\tUnpacking client manifest\"\r\n unzip -jo client.zip manifest.json -d \"${SERVER_DIR}\"\r\n mv \"${SERVER_DIR}\/manifest.json\" \"${SERVER_DIR}\/client.manifest.json\" # rename to avoid conflicts with main manifest\r\n rm -rf client.zip\r\n\r\n echo -e \"\\tParsing client manifest\"\r\n local MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n LOADER_ID=$(jq -r '.minecraft.modLoaders[]? | select(.primary == true) | .id' \"${MANIFEST}\")\r\n LOADER_NAME=$(echo \"${LOADER_ID}\" | cut -d'-' -f1)\r\n LOADER_VERSION=$(echo \"${LOADER_ID}\" | cut -d'-' -f2)\r\n\r\n if [[ -z \"${LOADER_NAME}\" || -z \"${LOADER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No loader found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n MINECRAFT_VERSION=$(jq -r '.minecraft.version \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MINECRAFT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No minecraft version found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tFound loader ${LOADER_NAME} ${LOADER_VERSION} for Minecraft ${MINECRAFT_VERSION}\"\r\n}\r\n\r\nfunction unzip-strip() (\r\n set -u\r\n\r\n local archive=$1\r\n local destdir=${2:-}\r\n shift; shift || :\r\n echo -e \"\\tUnpacking ${archive} to ${destdir}\"\r\n\r\n echo -e \"\\tCreating temporary directory\"\r\n local tmpdir=\/mnt\/server\/tmp\r\n if ! mkdir -p \"${tmpdir}\"; then\r\n echo -e \"\\tERROR: mkdir failed to create temporary directory\"\r\n return 1\r\n fi\r\n\r\n trap 'rm -rf -- \"$tmpdir\"' EXIT\r\n\r\n echo -e \"\\tUnpacking archive\"\r\n\r\n if ! unzip -q \"$archive\" -d \"$tmpdir\"; then\r\n echo -e \"\\tERROR: unzip failed to unpack archive\"\r\n return 1\r\n fi\r\n\r\n echo -e \"\\tSetting glob settings\"\r\n\r\n shopt -s dotglob\r\n\r\n echo -e \"\\tCleaning up directory structure\"\r\n\r\n local files=(\"$tmpdir\"\/*) name i=1\r\n\r\n if (( ${#files[@]} == 1 )) && [[ -d \"${files[0]}\" ]]; then\r\n name=$(basename \"${files[0]}\")\r\n files=(\"$tmpdir\"\/*\/*)\r\n else\r\n name=$(basename \"$archive\"); name=${archive%.*}\r\n files=(\"$tmpdir\"\/*)\r\n fi\r\n\r\n if [[ -z \"$destdir\" ]]; then\r\n destdir=.\/\"$name\"\r\n fi\r\n\r\n while [[ -f \"$destdir\" ]]; do\r\n destdir=${destdir}-$((i++));\r\n done\r\n\r\n echo -e \"\\tCopying files to ${destdir}\"\r\n\r\n mkdir -p \"$destdir\"\r\n cp -ar \"$@\" -t \"$destdir\" -- \"${files[@]}\"\r\n rm -rf \"$tmpdir\"\r\n)\r\n\r\nfunction unpack_zip {\r\n echo -e \"Unpacking server files...\"\r\n unzip-strip server.zip \"${SERVER_DIR}\"\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/manifest.json\"\r\n jq -c '.files[]? | select(.required == true) | {project: .projectID, file: .fileID}' \"${MANIFEST}\" | while read -r mod; do\r\n local MOD_PROJECT_ID=$(echo \"${mod}\" | jq -r '.project \/\/ empty')\r\n local MOD_FILE_ID=$(echo \"${mod}\" | jq -r '.file \/\/ empty')\r\n\r\n if [[ -z \"${MOD_PROJECT_ID}\" || -z \"${MOD_FILE_ID}\" ]]; then\r\n echo -e \"\\tERROR: Failed to parse project id or file id for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_URL=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${MOD_PROJECT_ID}\/files\/${MOD_FILE_ID}\/download-url\" -O - | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n\r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FORGE_VERSION=$LOADER_VERSION\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old Forge files so we can safely update\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FABRIC_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local QUILT_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\nfi\r\n\r\nget_loader\r\nunpack_zip\r\n\r\nif [[ -f \"${SERVER_DIR}\/manifest.json\" ]]; then\r\n echo \"Found manifest.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/client.manifest.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n if [[ $LOADER_NAME == \"forge\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"fabric\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"quilt\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "container": "openjdk:8-jdk-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Modpack Project ID", + "description": "The modpack project ID from the CurseForge site on the pack page, or 'zip' if installing from an uploaded server.zip file.\r\n\r\nFor example, the project Id of https:\/\/www.curseforge.com\/minecraft\/modpacks\/bofa-mods ID is 375152", + "env_variable": "PROJECT_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Modpack File ID", + "description": "The file ID belonging to a specific version of a modpack. Can either be the main file or the file ID associated with the server pack.\r\n\r\nIf not provided the script will attempt to retrieve the latest server pack or client pack available.", + "env_variable": "VERSION_ID", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "numeric", + "field_type": "text" + }, + { + "name": "CurseForge API Key", + "description": "A CurseForge API key is required to use this egg. You can learn how to get an API key here: https:\/\/support.curseforge.com\/en\/support\/solutions\/articles\/9000208346-about-the-curseforge-api-and-how-to-apply-for-a-key", + "env_variable": "API_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60", + "field_type": "text" + } + ] +} \ No newline at end of file From 9458128cf80e4723f572010cca0444430619916e Mon Sep 17 00:00:00 2001 From: David Katz Date: Fri, 5 May 2023 19:10:36 -0700 Subject: [PATCH 040/251] Update CurseForge in READMEs and remove old egg --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/minecraft/README.md | 2 +- .../java/forge/curseforge-generic/README.md | 24 ------- .../egg-curseforge-generic.json | 69 ------------------- 5 files changed, 3 insertions(+), 94 deletions(-) delete mode 100644 game_eggs/minecraft/java/forge/curseforge-generic/README.md delete mode 100644 game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json diff --git a/README.md b/README.md index 2b07e1aa..544354ec 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [PocketMine MP](game_eggs/minecraft/bedrock/pocketmine_mp) * [Java](game_eggs/minecraft/java) Servers for Java Minecraft + * [CurseForge](game_eggs/minecraft/java/curseforge) * [Cuberite](game_eggs/minecraft/java/cuberite) * [Fabric](game_eggs/minecraft/java/fabric) * [Feather](game_eggs/minecraft/java/feather) diff --git a/game_eggs/README.md b/game_eggs/README.md index f1a566b2..005058fd 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -58,6 +58,7 @@ * [PocketMine MP](minecraft/bedrock/pocketmine_mp) * [Java](minecraft/java) Servers for Java Minecraft + * [CurseForge](minecraft/java/curseforge) * [Cuberite](minecraft/java/cuberite) * [Fabric](minecraft/java/fabric) * [Feather](minecraft/java/feather) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index d4661d98..3c7b68a2 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -15,11 +15,11 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, ## [Java](java) Servers for Java Minecraft * [Cuberite](java/cuberite) +* [CurseForge](java/curseforge) * [Fabric](java/fabric) * [Feather](java/feather) * [Forge](java/forge) * [Forge](java/forge/forge) - * [CurseForge Generic](java/forge/curseforge-generic) * [Feed The Beast](java/ftb) * [Glowstone](java/glowstone) * [Limbo](java/limbo) diff --git a/game_eggs/minecraft/java/forge/curseforge-generic/README.md b/game_eggs/minecraft/java/forge/curseforge-generic/README.md deleted file mode 100644 index 6dbb3c44..00000000 --- a/game_eggs/minecraft/java/forge/curseforge-generic/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Forge Generic - -## This is a generic egg for curseforge modpacks - -You will need to give it a modpack ID. The ID for BOFA mods is `375152` for example. -This can be found on the modpack page in the `About Project` section in the upper right corner. - -This will grab the latest release when the version is set to latest. - -It "should" grab versions of the pack based on the modpack version numbers - -## API Keys - -You will need to get an API key to run the installer now. Make an account at https://console.curseforge.com/ - -https://console.curseforge.com/#/api-keys - -## Server Ports - -The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. - -| Port | default | -|-------|---------| -| Game | 25565 | diff --git a/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json b/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json deleted file mode 100644 index f64e51eb..00000000 --- a/game_eggs/minecraft/java/forge/curseforge-generic/egg-curseforge-generic.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2022-10-18T22:00:46+02:00", - "name": "Curseforge Generic", - "author": "parker@parkervcp.com", - "description": "A generic egg for a forge modpack", - "features": [ - "eula", - "java_version", - "pid_limit" - ], - "docker_images": { - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" - }, - "file_denylist": [], - "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar server.jar", - "config": { - "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", - "logs": "{}", - "stop": "stop" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\nmkdir -p \/mnt\/server\r\n\r\nfunction install_required {\r\n apt update\r\n apt install -y curl jq unzip dos2unix\r\n}\r\n\r\nfunction get_download {\r\n # get json data to work with\r\n echo -e \"Curling the json for the modpack\"\r\n echo -e \"running: curl -sSLX GET https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID} -H 'Accept: application\/json' -H 'x-api-key: API_KEY'\"\r\n JSON_DATA=$(curl -ssLX GET https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID} -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\")\r\n\r\n # if no modpack version is set or is set to latest\r\n if [ -z ${MODPACK_VERSION} ] || [ \"${MODPACK_VERSION}\" = \"latest\" ]; then\r\n echo -e \"Getting latest download url\"\r\n # parse data to get the download url\r\n FILE_ID=$(echo -e ${JSON_DATA} | jq -r \".data.mainFileId\")\r\n echo -e \"File ID is: ${FILE_ID}\"\r\n if [ \"$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .isServerPack\")\" == \"false\" ] && [ \"$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .serverPackFileId\")\" != \"null\" ]; then\r\n FILE_ID=$(echo -e ${JSON_DATA} | jq -r --arg FILE_ID \"$FILE_ID\" \".data.latestFiles[] | select(.id==$FILE_ID) | .serverPackFileId\")\r\n DOWNLOAD_URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files\/${FILE_ID}\/download-url | jq -r \".data\")\r\n else\r\n DOWNLOAD_URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files\/${FILE_ID}\/download-url | jq -r \".data\")\r\n fi\r\n echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n else\r\n echo -e \"Looking for download url for version ${MODPACK_VERSION}\"\r\n # parse files for version match\r\n FILES_JSON_DATA=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${MODPACK_ID}\/files)\r\n # get element number to get the exact location in the json\r\n FILES_JSON_ELEMENT=$(echo -e ${FILES_JSON_DATA} | jq --arg VERSION \"${MODPACK_VERSION}\" '.[] | select(.displayName) | .displayName | contains($VERSION)' | grep -n true | cut -f1 -d: | tail -1)\r\n # if there wasn't a match default to latest\r\n if [ ! -z ${FILES_JSON_ELEMENT} ]; then\r\n echo -e \"No matching version found\"\r\n echo -e \"defaulting to latest\"\r\n DOWNLOAD_URL=$(echo -e ${FILES_JSON_DATA} | jq --arg ELEMENT \"${FILES_JSON_ELEMENT}\" '.[$ELEMENT|tonumber-1] | .downloadUrl')\r\n else\r\n echo -e \"Version match found\"\r\n DOWNLOAD_URL=$(echo -e ${JSON_DATA} | jq -r .latestFiles[0].downloadUrl)\r\n echo -e \"Download url set to ${DOWNLOAD_URL}\"\r\n fi\r\n fi\r\n ## download modpack files\r\n cd \/mnt\/server\r\n echo \"Executing curl -L ${DOWNLOAD_URL} -o server.zip\"\r\n curl -L -g \"${DOWNLOAD_URL}\" -o server.zip\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction unpack_zip {\r\n cd \/mnt\/server\r\n unzip -o server.zip\r\n}\r\n\r\nfunction forge_install {\r\n echo -e \"\\nInstalling forge server using the installer jar file.\\n\"\r\n if [ -f \/mnt\/server\/*installer.jar ]; then\r\n\t\tmv *installer.jar installer.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n else\r\n echo \"No forge installer found moving on.\"\r\n fi\r\n mv FTBServer.jar server.jar\r\n}\r\n\r\nfunction forge_cleanup {\r\n echo -e \"\\nDeleting installer jar file and cleaning up.\\n\"\r\n rm -rf *installer.jar\r\n if [ ! -f \/mnt\/server\/forge*universal.jar ]; then\r\n mv -v \/mnt\/server\/*\/* \/mnt\/server\/\r\n if [ ! -f \/mnt\/server\/*universal.jar ]; then\r\n mv forge*.jar server.jar\r\n else\r\n mv forge*universal.jar server.jar \r\n fi\r\n else\r\n mv forge*universal.jar server.jar\r\n fi\r\n}\r\n\r\nfunction json_download_prework {\r\n mkdir -p \/mnt\/server\/mods\r\n cd \/mnt\/server\/mods\r\n}\r\n\r\nfunction json_download_mods {\r\n MANIFEST=\/mnt\/server\/manifest.json\r\n for mod in $(jq -c '.files[]' ${MANIFEST} ); do\r\n projID=$(echo $mod | jq -r \".projectID\")\r\n fileID=$(echo $mod | jq -r \".fileID\")\r\n URL=$(curl -sSL -H 'Accept: application\/json' -H \"x-api-key: ${API_KEY}\" https:\/\/api.curseforge.com\/v1\/mods\/${projID}\/files\/${fileID}\/download-url | jq -r \".data\")\r\n # this is saving everything as \/mnt\/server\/mods\/download\r\n echo \"Mod direct url: ${URL}\"\r\n curl -JLO \"${URL}\"\r\n done\r\n}\r\n\r\nfunction json_download_forge {\r\n cd \/mnt\/server\r\n FORGE=$(jq -r '.minecraft.modLoaders[0].id' \/mnt\/server\/manifest.json | cut -d '-' -f2)\r\n MCVER=$(jq -r '.minecraft.version' \/mnt\/server\/manifest.json)\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n FORGE_DOWNLOAD=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\r\n \r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -e \"Download link is $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION\"\r\n curl -sS $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION-installer.jar -o installer.jar\r\n curl -sS $FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION-universal.jar -o universal.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n mv *universal.jar server.jar\r\n rm installer.jar\r\n}\r\n\r\nfunction json_download_overrides {\r\n if [ -d \/mnt\/server\/overrides ]; then\r\n mv \/mnt\/server\/overrides\/mods\/* \/mnt\/server\/mods\/\r\n rmdir \/mnt\/server\/overrides\/mods\r\n mv \/mnt\/server\/overrides\/* \/mnt\/server\r\n rmdir \/mnt\/server\/overrides\r\n fi\r\n}\r\n\r\nfunction cfg_download_forge {\r\n dos2unix settings.cfg # In case the pack was distributed with Windows-style line endings in the cfg file\r\n MCVER=`grep 'MCVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n FORGE=`grep 'FORGEVER' settings.cfg | sed 's\/;\/\/g' | cut -d '=' -f 2-`\r\n\r\n\tif [ ${MCVER} == \"1.7.10\" ] || [ ${MCVER} == \"1.8.9\" ]; then\r\n\t\tFORGE=\"${FORGE}-${MCVER}\"\r\n\tfi\r\n \r\n FORGE_VERSION=\"${MCVER}-${FORGE}\"\r\n echo -e ${FORGE_VERSION}\r\n FORGE_DOWNLOAD=https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\r\n PARSED_LINK=$(echo -e \"$FORGE_DOWNLOAD\/$FORGE_VERSION\/forge-$FORGE_VERSION\" | sed 's\/ \/\/g')\r\n\r\n echo -e \"\\nDownloading Forge Version $FORGE_VERSION\\n\"\r\n echo -e \"Download link is $PARSED_LINK\"\r\n curl -sSL $PARSED_LINK-installer.jar -o installer.jar\r\n curl -sSL $PARSED_LINK-universal.jar -o universal.jar\r\n java -jar installer.jar --installServer || { echo -e \"install failed\"; exit 4; }\r\n mv *universal.jar server.jar\r\n rm installer.jar\r\n}\r\n\r\nfunction ftb_install {\r\n chmod +x \/mnt\/server\/settings.sh \r\n . \/mnt\/server\/settings.sh \r\n curl https:\/\/s3.amazonaws.com\/Minecraft.Download\/versions\/${MCVER}\/minecraft_server.${MCVER}.jar -o ${JARFILE} \r\n curl https:\/\/libraries.minecraft.net\/${LAUNCHWRAPPER} -o \/mnt\/server\/libraries\/${LAUNCHWRAPPER}\r\n}\r\n\r\ninstall_required\r\nif [ ! -z ${MODPACK_ID} ] && [ ! \"${MODPACK_ID}\" = \"zip\" ]; then\r\n\tget_download\r\n\tunpack_zip\r\n rm -rf server.zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [ -f \/mnt\/server\/manifest.json ]; then\r\n json_download_prework\r\n json_download_mods\r\n json_download_overrides\r\n json_download_forge\r\nelif [ -f \/mnt\/server\/settings.cfg ]; then\r\n cfg_download_forge\r\nelif [ -f \/mnt\/server\/version.json ]; then\r\n if [ \"$(cat \/mnt\/server\/version.json | jq -r '.packID | contains(\"FTB\")')\" == \"true\" ]; then\r\n ftb_install\r\n fi\r\nelse\r\n forge_install\r\n forge_cleanup\r\nfi\r\n\r\necho -e \"\\n\\nInstall completed succesfully, enjoy!\"", - "container": "openjdk:8-jdk-slim", - "entrypoint": "bash" - } - }, - "variables": [ - { - "name": "Modpack Project ID", - "description": "The modpack project ID from the curseforge site on the pack page.\r\nOr 'zip' if installing from an uploaded server.zip file.\r\n(Ex. https:\/\/www.curseforge.com\/minecraft\/modpacks\/bofa-mods ID is 375152)", - "env_variable": "MODPACK_ID", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Modpack Version", - "description": "Version of the modpack to use.", - "env_variable": "MODPACK_VERSION", - "default_value": "latest", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "API Key", - "description": "This is a new requirement and will be needed to pull mods packs\r\n\r\nYou need and account to generate an api-key here\r\nhttps:\/\/console.curseforge.com\/#\/api-keys", - "env_variable": "API_KEY", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - } - ] -} From 3de410cdffb599b0c80fb23e4e881295b5d32e6e Mon Sep 17 00:00:00 2001 From: David Katz Date: Fri, 5 May 2023 19:10:51 -0700 Subject: [PATCH 041/251] Update minecraft/java README --- game_eggs/minecraft/java/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index 2990a645..91e0aca3 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -32,7 +32,7 @@ This is a direct fork of the default forge service - Has a version detection fix for "latest" -### [CurseForge Generic](forge/curseforge-generic) +### [CurseForge Generic](curseforge) [CurseForge Generic Website](https://www.curseforge.com) A generic service to pull forge mod packs from the curseforge site. From 785adcd16ef608f82274dfcd6aa331806ce4caf6 Mon Sep 17 00:00:00 2001 From: David Katz Date: Fri, 5 May 2023 19:35:11 -0700 Subject: [PATCH 042/251] PROJECT_ID / VERSION_ID strings for convenience --- .../minecraft/java/curseforge/egg-curse-forge-generic.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json index 05b1b87b..e9726824 100644 --- a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json +++ b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-05T19:03:39-07:00", + "exported_at": "2023-05-05T19:34:12-07:00", "name": "CurseForge Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a CurseForge modpack.", @@ -42,7 +42,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|numeric", + "rules": "required|string", "field_type": "text" }, { @@ -52,7 +52,7 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "numeric", + "rules": "string", "field_type": "text" }, { From 6ab9ce9bb2b17c5308244332e12df484496da9dd Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 6 May 2023 10:36:37 +0200 Subject: [PATCH 043/251] add Swords 'n Magic and Stuff --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 + .../Swords_'n_Magic_and_Stuff/README.md | 16 +++ .../Swords_'n_Magic_and_Stuff/wrapper | Bin 0 -> 17736 bytes .../Swords_'n_Magic_and_Stuff/wrapper.c | 118 ++++++++++++++++++ 6 files changed, 140 insertions(+) create mode 100644 game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md create mode 100644 game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper create mode 100644 game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c diff --git a/README.md b/README.md index a5914b11..1015b438 100644 --- a/README.md +++ b/README.md @@ -275,6 +275,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Stormworks: Build and Rescue](game_eggs/steamcmd_servers/stormworks) * [Subnautica: Nitrox Mod](game_eggs/steamcmd_servers/subnautica_nitrox_mod) * [Sven Co-op](game_eggs/steamcmd_servers/svencoop) +* [Swords 'n Magic and Stuff](game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff) * [The Forest](game_eggs/steamcmd_servers/the_forest) * [The Isle](game_eggs/steamcmd_servers/the_isle) * [Evrima](game_eggs/steamcmd_servers/the_isle/evrima) diff --git a/game_eggs/README.md b/game_eggs/README.md index 4f7a8eaf..b2a0a890 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -176,6 +176,7 @@ * [Stormworks: Build and Rescue](steamcmd_servers/stormworks) * [Subnautica: Nitrox Mod](steamcmd_servers/subnautica_nitrox_mod) * [Sven Co-op](steamcmd_servers/svencoop) +* [Swords 'n Magic and Stuff](steamcmd_servers/Swords_'n_Magic_and_Stuff) * [Team Fortress 2 Classic](steamcmd_servers/team_fortress_2_classic) * [The Forest](steamcmd_servers/the_forest) * [The Isle](steamcmd_servers/the_isle) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index db8fada8..a2514941 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -215,6 +215,10 @@ This is a collection of servers that use SteamCMD to install. [Sven Co-op](svencoop) +## Swords 'n Magic and Stuff + +[Swords 'n Magic and Stuff](Swords_'n_Magic_and_Stuff) + ## Team Fortress 2 Classic [Team Fortress 2 Classic](team_fortress_2_classic) diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md b/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md new file mode 100644 index 00000000..71a8f2bd --- /dev/null +++ b/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md @@ -0,0 +1,16 @@ +# Swords 'n Magic and Stuff + +Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG. + +## Console +Because there is not yet a real console this egg uses a wrapper that prints the log file to the console but it is a continue loop so it will keep sending the contents of the latest log file to the console. The console does not accept any input. + +## Server Ports + + +| Port | default | +|-----------|---------| +| Game | 7777 | +| Query | 27015 | + + diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper b/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper new file mode 100644 index 0000000000000000000000000000000000000000..0bce0609817198ef56276ff48409e3c9a3626013 GIT binary patch literal 17736 zcmeHPe{fvYb-t@bwh(wFupth=yfHQr0j*?%T^lf7$y)n~%Es}p(ggEZ?>w?tMNq0zf1R5)Xxs}*df(CI<@7o&$CN!JN_y3jzfqMi z70rq#y?V-OzMS4XSIIHu@=|?%RW8ctbJ~BVPCbfEzE$bvb^J&06jMkgc zdQ7LtAta_8Pl^fsUe@-?X%{IWF(p|_n}2RcDSzvyBs+`tC|EFMz0X3A{QO-Lhkc8# zuUcFdYX6z)=8Cp>Y}d-$+v3sIcr1|_Y8_g&vUTO{fpjvkT()}w9HBn7VbgYT;KISg z^Xt$4`uw817cTqg#T&oBd-=D>Z}Nfckqjl0=kOD~20toS?fN2^W{Ck3E!Q8o?ltQt z1C+0nz6S8h3I(@U!A}DBSCFUkS;@|4s^B}T;5Sym<5lo=Rqz8<@H}uoe&y+20G0gz zW)+;yTP67&Rd6~#mE==Z@WoZ|rYg8q1^-Xre*DVQ9srg6p>eAc-c|*_s|s!aze0Rc zOazfZ;_H0`d1~9N)Y}`+r29qMPDKWXg*6njMal|Cqp=hiE3#Xp2UD?x-75w&c3Si% zQx8)v(jQKd4*pAVPo^yiigetv28C%x zhQelVED?^!_F7}AwagELb`xgiVZ#8o$Jiyfn~RsvdaT2 zgxS4qqZzeQR$nY_Td8du*Ts_wYg>3%oQ(7hBoo@UsYELZB0zQWDyQSce{}U<c zGO8l$fz)@A?t~;MY2E?q_tbr16l`!l260ZIZ4*PX3_E z5l&+$roh(9AO+gLN*8KsO;m! zl+t}cl_mMhOQ;YJI`DZ8yx)QQ9QdFEr!j=nP*CN_KKB(u_66yv{Lzn8lK)ar5*ddp zRaPDkI`H`p{E!2uF_Y8bpvqCbS2GCuouFa}|AflQxdth{EvyJN0`F1lK&y`^hi)REcxe&r$>RpLCJrgczOgV z?34U6#M5o5Fev$N5Kp)K!h@3k3*zZkU)U`9uMpozd{FX#Mm#+d71|~LC&beuK*2Bh zy~NY4ztAlC6!CP+F9^v$M0^wR(-#0N-9}wAg*>{Z5cc(XR>lv&69AaaP%{z;b8Dnb> zBa+3dZi3FarbS&6x)cVDvHCh9t7q)1a5^vG?E#(6ON&!Yi}sP>W17OmKSS9VTXBlW z%@>U9v~l$PwZ_pIui-gvymrA}00XaU0}aKgURe+8?_2YA=!s0*c4KtS5l9Im`*Ztp zBe!NR@O&#Gl<&vkc>OSV&ra53TKFRrZikNX#WNF#l9B!URqqvx#);4jxoPC~OE!BV zf9hkv*-+jX9m$KP{gckp<7mb`IA_n1PX0Ma7WSjd8M)AuF*-gUtus(+z{&x{*vM@M z{KNUi>WQZP6lsUtEm|&0a)_8M%f^iPM(!!;$=Lo0@^5U#93`o$e4U&ddnzc4ltlIo zs_zAyA2i|+6|4@;j4WX$8=8TFvbCRjilG$#;XJZAG!x2eRg>ZD$P}8~icldtBQpL{ zT&U$=Lhn^>ya?q&4i}#RH>FJ~KTs}qa$yLVZTe+Dk+D_ zcmT#vgw9Fjv9XEwi^W{%t>@_x*U0_^F5eHKY-nq-2s z#>{dfH!pgtEHWY!R2%RYX~>{PKSMs|>eoSl*w2GK{RmkZhZRCrlR!2!0Zgh(FN|Dh z0v=F#;lIc!Sw^5|;<#u;jUV2koPilsijq=|t5l7zL4fs@xfA*8m94TCG(9=qbYwgm zIwza?#92gobmW}KG`>XROn&CqGAeN8Zm7R{Om^?lGr{c0Nh6yXA00XA`NGvWFD)2_ z@~0sz&q3h^I&ZnqxRDDspncQ%320|SXGTZP;N*W-#`2`}#5g+TB~RNR0Le*c;kSL- z$Tpt{ou{$(^liD&d4y|h!H>Wxv!03E_VY&MlyUSOuQ7Jd3^XPU&yS59T3t69I`4tX zouQMD{3sVX3010NY%`=_+cRODAUiMwom>bt$=-bfIWV^75SpD|jE1~KCow;X963Eq zjr?;en^P)#fpRyH)G6dJOnnvQXu}k&PEnhtVN#j-9tmjlO`xaquO2(t@drI)Yu0{R zh>jiI**7}2cV|E9*w&Ffzug#XZ3n!y=jM;;9+toDSI|ECvDdzK*}pU`5MX2eS=acl}e`k^noXq==0+vj}@_# zsbT-pbfegs*w|%7x2ATtiaQV?Yb(G7`* zGl@t)HH9qr2UE$2mF7bF=tV`0Qk8A}$pNb^l1$k6PGzOqwr<+EynT6l+t%=IE85nR zgk|Bm)_bP`S$g?!4pW#XLAOm8i!XpiL8GAE9~6r}1#LN3EYhsW{-{`7fT!f2g5D4M zE~pK<0A-Xsd$$PBP_yUS%jY&6^vrE0oW32-{712f`AI2NmKS0PBuM@~`12q=jr*F{ z`xf5QblIMUePZo3cYfx!C5y=j>ErQM9E4r+pA+fckKX|N{~2|K4qx+Qb?fHM@xECH zm!$1S0N;AHSp0pmUn*bkp>neMm-yX>_U;4~oxbKL>biXkANPiQ{;^9!zLo>^UB33m z<`}+JqjNX-f)Dvtb@Y7zMD5#V)byzY#jvFS4dC4BW!Nk3%cW0y>Ry?BV%1o8Sd zUNgpXiEFexuXDRj^IZPXg<_JR2Ko|=#B0AMbcWY_wd->FutMny?I=E-$h1&X=UO&` zw3-k>C7@=tm`7=So|x>D2in(olFSJT~^vfr-+Rc^z&b$9q%x~yHXaKgW=J%B}} ztt)TVIX|ZK%i5PMYiF&>)Qc64ydS|SK`TaiUA-Ikiad8XM}ZeBAGyCfVD!~`!TsEg z&k=k*xbeAy`;8lK5ZvF~_@#pTu^Vp`+~3_et}cB(-1z0fUlE@t_Laq-^t{4X+Bf31 z(SKz&&F2`F&Z-^Zkpf{wJB4-QRv8?aV&!eYno+ zu={D&^#VVygr9t4;W#%FUN_tSPe^(8;v#LSg5L$)e^IQIyAOD!{Q>Vu`Pu#RVc@hl zsXYC075oX{&FJS7LAS=!Rpc89ubX|npFrFy)%#2pJ1*-#1ufK@~r5B6&LL+SnypVMP`B?kf0BiTlK1y;xhmGli{zD)RfP;76d- zjO%(Ts2$Pd1GJa=A@AS2MdM$E9g;6UkAE%g`$R^c9Qh6yI?rl+n|{!e?|y;*K;qh{ zgB-7dzgY!8T?M}YoX$(RpN)7>@;mC|>=NLW`qfI{i&@A)KU+mUQU$lG;3AT;({`q} zHxLmQx2Tx*fQel(2`h~aD$%6b7fx+$D0C4j^ofGed^9V03K}=7yeoJ3D&Jd)Keu8ro)V>*(wWkyW|3Cz8%ckHO15 zJ+#3m$lG~n50BnkE3r_M$<{NKb(kSPm&Zb`vu6j)C=ge#Z2$ zE}-c<#fkO#eZUT2xK)(&c^=1<-(x^TCbHp74}hU}23$YS_n5BI!t6iGF?|^2^bUe~ zo)hGNS4Jbz@$??Jf!^7cQf^*gmeo@X-U_b{YSkMiaEj{~Ea@OvP7 z)RIY4{rImz_ntxmv-mmn{aTOdgJl6PGcTSj)8D7(S4`Pos*4iyO#cd)vwnX5Dp3xc z)TU=Kclu_TKF^n#^7|*&D)0Y)qxJdx3BQ)q^p>*rv)@`ud=D8CVSS!|GwoqPP0QgfL9uGm6L|C8SBTTjdL~2o_bYy*|YQA|-*W$>j#QL9RKvNw~sY4L)-1oGI zBs1DzP&btBLjnA_-8}x%^})VNMSWPcT4nyUtdQ$xS-RZIL}bxRcPWXvWeR1i_;0k1 B4oLt2 literal 0 HcmV?d00001 diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c b/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c new file mode 100644 index 00000000..21d247d3 --- /dev/null +++ b/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c @@ -0,0 +1,118 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +void print_latest_log(const char* log_directory) { + DIR *dir; + struct dirent *entry; + time_t latest_time = 0; + char latest_file[256]; + + dir = opendir(log_directory); + if (dir == NULL) { + printf("Error opening directory %s\n", log_directory); + return; + } + + while ((entry = readdir(dir)) != NULL) { + if (strstr(entry->d_name, "SnMDedSrv-") == entry->d_name && + strstr(entry->d_name, ".log") != NULL) { + char filename[256]; + sprintf(filename, "%s/%s", log_directory, entry->d_name); + struct stat file_stat; + stat(filename, &file_stat); + if (file_stat.st_mtime > latest_time) { + latest_time = file_stat.st_mtime; + strcpy(latest_file, filename); + } + } + } + + if (latest_time == 0) { + printf("No log files found in directory %s\n", log_directory); + return; + } + + printf("\nLatest log file: %s\n", latest_file); + + int fd = open(latest_file, O_RDONLY); + if (fd < 0) { + printf("Error opening file %s\n", latest_file); + return; + } + + char buffer[4096]; + int bytes_read; + int last_line_printed = 0; // Flag to check whether we have printed the last line + do { + bytes_read = read(fd, buffer, sizeof(buffer)); + if (bytes_read > 0) { + // Check if the last character is a newline + if (buffer[bytes_read - 1] == '\n') { + fwrite(buffer, 1, bytes_read, stdout); + fflush(stdout); + } else { + // If the last character is not a newline, add one + char* temp = (char*) malloc(bytes_read + 1); + memcpy(temp, buffer, bytes_read); + temp[bytes_read] = '\n'; + fwrite(temp, 1, bytes_read + 1, stdout); + fflush(stdout); + free(temp); + } + last_line_printed = (buffer[bytes_read - 1] == '\n'); + } + } while (bytes_read > 0); + + // If the last line was not printed, print it now + if (!last_line_printed) { + printf("\n"); + } + + close(fd); +} + +int main(int argc, char** argv) { + if (argc < 2) { + printf("Usage: winewrapper wine_path wine_args exe_path exe_args\n"); + return 0; + } + + char* wine_path = argv[1]; + + pid_t pid = fork(); + if (pid == 0) { + char** wine_argv = (char**) malloc(sizeof(char*) * (argc - 1)); + wine_argv[0] = wine_path; + for (int i = 2; i < argc; i++) { + wine_argv[i - 1] = argv[i]; + } + wine_argv[argc - 1] = NULL; + execv(wine_path, wine_argv); + printf("Error launching wine process\n"); + exit(1); + } else if (pid < 0) { + printf("Error forking process\n"); + exit(1); + } + + sleep(30); + + char* log_directory = "/home/container/SNM2020/Saved/Logs"; + print_latest_log(log_directory); + + while (1) { + sleep(1); + print_latest_log(log_directory); + } + + kill(pid, SIGTERM); + + return 0; +} From ab61df9b64952f15f5b9d612ddd694051db22aea Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 6 May 2023 10:37:49 +0200 Subject: [PATCH 044/251] lowercase s --- README.md | 2 +- game_eggs/README.md | 2 +- game_eggs/steamcmd_servers/README.md | 2 +- .../README.md | 0 .../wrapper | Bin .../wrapper.c | 0 6 files changed, 3 insertions(+), 3 deletions(-) rename game_eggs/steamcmd_servers/{Swords_'n_Magic_and_Stuff => swords_'n_Magic_and_Stuff}/README.md (100%) rename game_eggs/steamcmd_servers/{Swords_'n_Magic_and_Stuff => swords_'n_Magic_and_Stuff}/wrapper (100%) rename game_eggs/steamcmd_servers/{Swords_'n_Magic_and_Stuff => swords_'n_Magic_and_Stuff}/wrapper.c (100%) diff --git a/README.md b/README.md index 1015b438..209110a7 100644 --- a/README.md +++ b/README.md @@ -275,7 +275,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Stormworks: Build and Rescue](game_eggs/steamcmd_servers/stormworks) * [Subnautica: Nitrox Mod](game_eggs/steamcmd_servers/subnautica_nitrox_mod) * [Sven Co-op](game_eggs/steamcmd_servers/svencoop) -* [Swords 'n Magic and Stuff](game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff) +* [Swords 'n Magic and Stuff](game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff) * [The Forest](game_eggs/steamcmd_servers/the_forest) * [The Isle](game_eggs/steamcmd_servers/the_isle) * [Evrima](game_eggs/steamcmd_servers/the_isle/evrima) diff --git a/game_eggs/README.md b/game_eggs/README.md index b2a0a890..73f78da4 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -176,7 +176,7 @@ * [Stormworks: Build and Rescue](steamcmd_servers/stormworks) * [Subnautica: Nitrox Mod](steamcmd_servers/subnautica_nitrox_mod) * [Sven Co-op](steamcmd_servers/svencoop) -* [Swords 'n Magic and Stuff](steamcmd_servers/Swords_'n_Magic_and_Stuff) +* [Swords 'n Magic and Stuff](steamcmd_servers/swords_'n_Magic_and_Stuff) * [Team Fortress 2 Classic](steamcmd_servers/team_fortress_2_classic) * [The Forest](steamcmd_servers/the_forest) * [The Isle](steamcmd_servers/the_isle) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index a2514941..3bd93bda 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -217,7 +217,7 @@ This is a collection of servers that use SteamCMD to install. ## Swords 'n Magic and Stuff -[Swords 'n Magic and Stuff](Swords_'n_Magic_and_Stuff) +[Swords 'n Magic and Stuff](swords_'n_Magic_and_Stuff) ## Team Fortress 2 Classic diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md similarity index 100% rename from game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/README.md rename to game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper similarity index 100% rename from game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper rename to game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper diff --git a/game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c similarity index 100% rename from game_eggs/steamcmd_servers/Swords_'n_Magic_and_Stuff/wrapper.c rename to game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c From 51439f3e5ac1f6e5c302456e9fff58b664cba85c Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 6 May 2023 10:42:36 +0200 Subject: [PATCH 045/251] add egg + readme first start + wrapper timeout. --- .../swords_'n_Magic_and_Stuff/README.md | 7 +- .../egg-swords-n-magic-and-stuff.json | 172 ++++++++++++++++++ 2 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md index 71a8f2bd..e40fd1cc 100644 --- a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md +++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/README.md @@ -3,7 +3,12 @@ Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG. ## Console -Because there is not yet a real console this egg uses a wrapper that prints the log file to the console but it is a continue loop so it will keep sending the contents of the latest log file to the console. The console does not accept any input. +Because there is not yet a real console this egg uses a wrapper that prints the log file to the console but it is a continue loop so it will keep sending the contents of the latest log file to the console. The console does not accept any input. + +There is a 30 seconds timeout before the wrapper will try to start the server as it needs to wait until the log file is written and the first lines are writen to that file. + +## first start +Because of the wrapper the first start of the console will show no logs. On first start wait for vcrun2019 to install. Then hit restart. ## Server Ports diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json new file mode 100644 index 00000000..f731ae45 --- /dev/null +++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json @@ -0,0 +1,172 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-06T10:38:52+02:00", + "name": "Swords 'n Magic and Stuff", + "author": "josdekurk@gmail.com", + "description": "Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + }, + "file_denylist": [], + "startup": ".\/wrapper \/usr\/bin\/wine \/home\/container\/SNM2020\/Binaries\/Win64\/SNMASServer-Win64-Shipping.exe -port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Succeeded to create Steam session with ID\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/\r\n\r\nif [ ! -f \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini ]\r\nthen\r\n echo \"The config file does not yet exists, making a new one\"\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nelse\r\n echo \"Old config file found. Replacing it with a up to date one but a backup will be made\"\r\n mv \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game-$(date \"+%Y.%m.%d-%H.%M.%S\").ini.old\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nfi\r\n\r\nif [ ! -f \/mnt\/server\/wrapper ]\r\nthen\r\n echo \"The wrapper does not yet exists, download a new one\"\r\n curl -sSL -o \/mnt\/server\/wrapper \"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/swords_'n_Magic_and_Stuff\/wrapper\"\r\n chmod +x wrapper\r\nelse\r\n echo \"wrapper found. skipping\"\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "WINDOWS_INSTALL", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "App id", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "2058450", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update the server on startup", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:win32,win64", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2019", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Query port", + "description": "The port that Steam uses for clients to query the server (ping, etc)", + "env_variable": "QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Server name", + "description": "This is the server name used for your server.\r\n\r\nYou must pick between 2 and 5 UNIQUE words (no duplicate words).\r\nThe words are case insensitive \r\nThe list of approved words changes can be found: `SNM2020\/Saved\/Logs\/Allowed-Words.txt`", + "env_variable": "SNM_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Admin steam id", + "description": "This the Steam ID of the owner\/admin of this server.", + "env_variable": "SNM_OWNER_STEAM_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server password", + "description": "This is the server password; it is disabled by default.", + "env_variable": "SNM_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Max players", + "description": "You can specify the maximum number of players", + "env_variable": "SNM_MAX_PLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:16", + "field_type": "text" + }, + { + "name": "Reset time", + "description": "This is the number of days between resets.", + "env_variable": "SNM_DAYS_UNTIL_RESET", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Reset time", + "description": "This is the local time of day when the server will\r\nreset. The format is HH:MM, and it is 24 hour format.\r\nMidnight => 00:00, 10:30AM => 10:30, 4:30PM => 16:30", + "env_variable": "SNM_RESET_TIME_OF_DAY", + "default_value": "00:00", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "logs dir", + "description": "", + "env_variable": "LOGS_DIR", + "default_value": "\/home\/container\/SNM2020\/Saved\/Logs", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + } + ] +} \ No newline at end of file From bf1217839dbbcb4c344072de1c68763b37e7914a Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 6 May 2023 11:31:33 +0200 Subject: [PATCH 046/251] Improve wrapper --- .../swords_'n_Magic_and_Stuff/wrapper | Bin 17736 -> 17784 bytes .../swords_'n_Magic_and_Stuff/wrapper.c | 74 +++++++++++------- 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper index 0bce0609817198ef56276ff48409e3c9a3626013..29909ad1d2164be05bc25be8c4b4a78a59e5e7e9 100644 GIT binary patch delta 3064 zcmZWr4Qx}_6~5Pw6Wb-&j^j9n(AcyiNegit8cd>@*bpy|iM62CU8Md%R>}(P*3gn| znUXrx4eG0FN;uH96lsaHu0qpPm{*3{v^Yh@$<|h8+8D4@O{YzIS%D=Qpo}JaJLkUl zvaWm5d*|MBzVmy}yZ4U0z-M3J2P$1dE+(F+M%e6N-5a(JyEf|>yco2NmuQo5aPgpR z$fV7NU?UIOr}Y^#!?S#!t303y7by5l@080euXVAxKet~x)zNx!*VfV^_p*6VOt*WM zBAVk{EVTCG#L1RIz+A(B2AyUvY%^Dye$OD;=z*8aA^r%AnuD;ps1nBTwH8(Kg9I~O z6%Z3k(2O4ws{JT^P>hb_=tp8SS=7KEr;%x1*XVQQ@CiHNsLzmqW}{4(BX) zTb_9O(MKPLTZ=EjjpF*q36wc?+@ZmjF>*6|N9T1f*=b|U#Lnt+C87-syZz8v;`K$# zG;SgKztRE>mfXp2fp-zJNE3jIiKapmLOw~d5|}C;NPmMe(gK;jO{p}K^Y5O*(jfTSd#xDrT#j- z`MymV%iqzulqpRK5>d^Jsh$edx#p;DBT0m#K`CRoi9D%!c8^C&TduCc@jz~mO`UX9 z_mk~2I+g61$T>o0ntlskxT@Md(4kg!a)+>JAp0Y)B93(j6H+Sjb3`#o{@b2KQabV! z@|9H>yYd)*&RTZE17(5aH1@J2zgv4%RVDc?zaWPziR9z66oQl<(1dyA*YgC5D^jXY zVUB?dUzVQ5lvb89c8YYABZ!m1nSiQaXX`_uUd)DRU=F zb;=6K|Cl6yjK)YV$3INuFCV(8zAy4RwFtCI< z41we)zo4jujF`M|mf6weZ|>BhK{MzTB?~Ssn#Y$BfcimUK(m)uF5MKyzLJCEP|k5O zC&#a0q7d@9lWz&w#M_jGQL7o`VH^3W7i5!B-gKfM$xf^qM*1lt#?K`1H<418H_Lq^ zlH7ef)i=VE6}Wc8xUDO_2oWtX)rPh)s^d~RYQ^-YmED-99KW3EyUZ#b1HTZ(9ua{` zqmyQ;MByg9>A8a+hfAKC;*s7D((w@}si;YwrpPi87dgoOOI1%(*h&v_$yg6LFC*Dc z7Gw{h?DVaKdYW|e@dAz+(lJ3ZmO0!@F{()^lNggS-=YFf>g(|Xj8pRv7Jd`=d=-&E z#OI%kpV?9GsD6$N;{F!<_NGkarz;qX-M>*jA4_bMugC6-$#V%Qv+4k{@7+{4k5#iO zFblt{*utIJW!??egZ}OCV}BLA;vZ^R^bb`%gtmI8RdodEi%7R4-94kKe?a=?HC3ff zUU@@R%drA4B7G3)(HrnoV1>y)4Mzg?mM&brF8C;L8$Sgz0q^?5Xk{JlsVuhGxzDtr zwAkEiUQ}Xbw9WV8oBgM%?xuP!$e-XO$E}wg#n*WqzPbDxRkhbul~Be*r_>z2e&j=- z(VfjLue}8t>^@(=egYXMk)d@0czrd`L7;vsS70xWy)azg8glA~e7SB~zYj34K9}?Z z&fs@}E7;1Tuq9aSWI7Yq{YipDXUL5~eD7dG&b3d!dgx|Y0md8h=y@>YGGog0a+*n~=%!Xh~qZgyy*%;*IaH7#;E@Rt}zQo5Mw%W@t;MW7+U){(H zFudC9V|vzxw*U@IY%zK`hv-R|S{>y5;Ja%pKMFl}1+mAE;kX=ZO*Om+LQT~iJvMof zzq4tp&p3CDvz6oOz9E9O; zbyA7yOr4l@9pf^H`<8fKN4}H!n31i{W+!y~fL>G4z9@WO=bxd=1wNu}k>&+ou;>HT zVH?(nV!kZC^YmTf#Gk-rs{B81Rc5UcYhZM(*CHW`Zf9<=Hdpd);_-diK=UZqu4>so zwuH=C>pDNj|EsPw=u+rzgpWbJuoJmPV;ZytjJmxf$oDbv!5PT5uwOKPq7h|ReS-N zzlZ)JKYav7iu_ELq_H6gKSf+S$datOl3GvKk-h2KD{ zQ%6n@{T7QelXJSQcl8q-AtsX5aXG9Fj7Z(kZ*_Yc$~5alqNW zbfHDV+5BBlYIA$Pr5V(xQKbd7)eyFQL`%TMeMBqaCin2@tUGUc%XyL}e^yV(p+Unh zaI;;S`mrc|DyBYL=-9P0W7&iLVy5(V5fkBIGa-s=J^Cy2UJxWm#=+= zW+^6%sf0`%1JhqeuVQ82D<$Lt^N}wgb8Y~eQ%uM5Vk%pX1&fG^808cwW!1@zy4Jab zF>$IrDl;RNi|Lote3^k9t0L1_tTDB~AFvWKFGW;HV@Myes26czvD7mRXpR*U>kLJT z70^M8HIQT3n1f?n{`)-~r*Ssu-2#6uUz614$!7Aa5@RNpkTsXaT_R#ZsyD+=E#t4T zC>nH$O&z0Ym0GY;DK?u*%#!26H=Mhcoe#3$^%#6Swn#{lCCTLettjc(?AvS)h|+sl z++Ji!vFTJ|nmB&_G3H34B2)2<&w zRz#LlHfbrRkYM<0;l}0rwOA{r;5ePkI?iXM*rGbo-`vKVtCDKRNZz1dV^k|rzh)oi#A$@557U&CA#dv)npR!m21*t-jI4!xz= zja1?WwlMqFq+^q6DIzzPH?vy(UqV&ow`msID{G1;Py7uD@N{KOvI;#h!5J(^UW*AX zv*neiam0chXUSh?Sn)D;k&UVt>l%)5lLO*dMII~4vs4QhQVTP}2)gw;TIc0=uM9?i zurm{GsUal#NV`<^VRU!9bSJtiD&5;HW;QjT{o$RpU*RIyOO;56SyxfkVUcVLfiy{Ygyob=UO9>pjJ;GFM)J%gVsit!CbH?jur zy?7tNxc_8lRCJZ|In(yiV)J!ViPfg!C(vAXTT#BxmT?*1K^cx;M)E4&k1j%R?T$6w zSPo+u7dsyA;r%$;fe)6CzPYycK5w`F**8A_hQ}K~>#L~%zWV(%2mLta;cR_Npr8{f z^sxFlOWeA?L7$Of?*QK4f^p*hYUiignMv*{%2SLE{ef~^_9HJgWbuH~t_hfG7!Tyw z`LW_M6Du(yd>u05kto1Oz-8u02YeE6(+zMp&_??p8gxS>SZQ`3el+N(b#ON5rpNH< zg7<>YV6z4`yUbpagM*vf+Ozskg%Nud4oqYfSy*BB>2_nq41Nd)lz7QB+}iA?-Qat0 zKm7~zKj^1U7{PHJ@QpR}F=%eA_8QA&thN&eWu{fc2}c|EdyPZXXpWnR3dBRQFxS|I zZzHh9&kM$a>*>eg=$1D659n`nd*_kwWc-Lxn(_ALG{zKXK{>7|V&P zX3SYPlh^eey?TGD8v?;Mb^9)t##A=~4$rA}!<#^I3rDZ2^;}n<^Xz&560+FbS7x*0 zK`21fR8H5yCrxh1Hx=QVD>sq2sydrJv}ZKhJVr+=zO&9ex@GHHN{8WxEq>nUR73Lc zGFpv3HDnXawD>te-xLDykr3CRYaI}egvyM4W5@!9S0c~a4&bt}3&tXD2t|3WPw&P) zh(|*pMxCZX3%nAo=ZuCBU@F>1H-dMYpZotWZG2mZJLc139UC3m)<&`W`_1KWWBVE| t8_|F)@U0=vSeqQgTU)T(hFV*=LW9PLzzi~)nl #include -void print_latest_log(const char* log_directory) { +void print_latest_log(const char* log_directory, off_t* last_pos, off_t* last_size) { DIR *dir; struct dirent *entry; time_t latest_time = 0; @@ -39,45 +39,58 @@ void print_latest_log(const char* log_directory) { return; } - printf("\nLatest log file: %s\n", latest_file); - int fd = open(latest_file, O_RDONLY); if (fd < 0) { printf("Error opening file %s\n", latest_file); return; } - char buffer[4096]; - int bytes_read; - int last_line_printed = 0; // Flag to check whether we have printed the last line - do { - bytes_read = read(fd, buffer, sizeof(buffer)); - if (bytes_read > 0) { - // Check if the last character is a newline - if (buffer[bytes_read - 1] == '\n') { - fwrite(buffer, 1, bytes_read, stdout); - fflush(stdout); - } else { - // If the last character is not a newline, add one - char* temp = (char*) malloc(bytes_read + 1); - memcpy(temp, buffer, bytes_read); - temp[bytes_read] = '\n'; - fwrite(temp, 1, bytes_read + 1, stdout); - fflush(stdout); - free(temp); + // Get the size of the file + off_t size = lseek(fd, 0, SEEK_END); + + // Check if the file size has increased since the last read + if (size > *last_size) { + // Move the file pointer to the beginning of the file + lseek(fd, 0, SEEK_SET); + + char buffer[4096]; + int bytes_read; + int last_line_printed = 0; // Flag to check whether we have printed the last line + do { + bytes_read = read(fd, buffer, sizeof(buffer)); + if (bytes_read > 0) { + // Check if the last character is a newline + if (buffer[bytes_read - 1] == '\n') { + fwrite(buffer, 1, bytes_read, stdout); + fflush(stdout); + } else { + // If the last character is not a newline, add one + char* temp = (char*) malloc(bytes_read + 1); + memcpy(temp, buffer, bytes_read); + temp[bytes_read] = '\n'; + fwrite(temp, 1, bytes_read + 1, stdout); + fflush(stdout); + free(temp); + } + last_line_printed = (buffer[bytes_read - 1] == '\n'); } - last_line_printed = (buffer[bytes_read - 1] == '\n'); + } while (bytes_read > 0); + + // If the last line was not printed, print it now + if (!last_line_printed) { + printf("\n"); } - } while (bytes_read > 0); - // If the last line was not printed, print it now - if (!last_line_printed) { - printf("\n"); + // Remember the last position and size that was read + *last_pos = lseek(fd, 0, SEEK_CUR); + *last_size = size; } - close(fd); + } + + int main(int argc, char** argv) { if (argc < 2) { printf("Usage: winewrapper wine_path wine_args exe_path exe_args\n"); @@ -104,12 +117,15 @@ int main(int argc, char** argv) { sleep(30); + off_t last_pos = 0; + off_t last_size = 0; char* log_directory = "/home/container/SNM2020/Saved/Logs"; - print_latest_log(log_directory); + print_latest_log(log_directory, &last_pos, &last_size); + while (1) { sleep(1); - print_latest_log(log_directory); + print_latest_log(log_directory, &last_pos, &last_size); } kill(pid, SIGTERM); From 9c08f3fd5ef42c32765c732da43ce08cbc9eddbd Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 6 May 2023 11:38:55 +0200 Subject: [PATCH 047/251] wrapper use time and not size --- .../swords_'n_Magic_and_Stuff/wrapper | Bin 17784 -> 17784 bytes .../swords_'n_Magic_and_Stuff/wrapper.c | 79 +++++++++--------- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper index 29909ad1d2164be05bc25be8c4b4a78a59e5e7e9..dc959e19edd2d38aa7e0fd37c49ba270a18afaac 100644 GIT binary patch delta 1199 zcmZ8fTS!z<6g_7~ZM1Y|%t!X}K}1oRy%mxg>eA^&Wla&)M+JTO6Bd35P9sbfx7+P? z8Y&`?3j2w&rX&R)DLGnEx1Sio0sFgUCX~ixqo=*kb^P$cWuLRx+H0?~&xu{4u}iec zK~r015c#!)+_al!or&xlstR;OD<0oCd9UU0ykq5E)gjaNHpBTPnGmL@pOvBf7k}-3 zw{;*Ba%x-YkPu9LSt3Jl35Ku|Ls_QPTVU9HF^(j~WC5Q^ob{0e%8kri+Q-eziX)P$ z*BdCHuQO+%c=#3Sm|?8egPSE}G1Sk1n#D=7%WVY8l$dW3w3HiFi9vy-Rd4X%>@|MN zN)OY^D?!^5ZioxU(z!-Z$9bg{b6{pdh<3CvWn}^?RHZ-Q>nAk@lMJS!YUz~f z4pgnNROMJSho<=ZTP>jv;JXYMVP!-nblvzVgr)%Q!bS;PRU!djggCE6fu_O6r0lk{ z`Ft|cH>OpuW?FjLatX1M23mo9J9I^}=0)hhwB$KJz-?*VFT`Li%5;JZrgD&>DhA|a zy|lqJ#Q+P4_xwXw62l}ldPo|y3@@|XfDCj6WU6Jh)v^%?iF!*eYdC3VhiMKl-P_Cb-8h+n$w3CdvejX$?Cae*opAyf zgVDb3Q_lSJs7E}9cIo9$7sKMz-#liR5T+a(O)4cm5Lg3q)|3`={I9e^lqYy9i!-aPjtg>T+4A%wQmh=?+a{H_q z4l*B7weUA`cTqkid{xo5yg8#n;9L?PJWdja-xa!Ebaf_e3KbUbNrF(ddXtSd@Mmiu z=eWRT{Nr}R)Nb@4l%m8ngW LI!&QZo=5ioph^Kt;1!}3>#DW3Qd)fQ$xxyMvaGO1 zypH1!W3<+S`s9;z>u4&XW@^AS8f5ztY}`;^gt1Ds7-idT9KUlXn+FGmGxwbDeBXD@ z-Yp#Fg~L1(;uZZ9nR@!|DDUG_eqqZBkR~`N<$e1vz z(ke82)^E}KYhFf?lQ--C_BIF3T zTwRXUJ>}DsZ{?0Kn|FiTCq7^Fyr+2%5(vNbyjvtUE*pca)br_No^`~>5JD0|>o~*L z#PA~+3_X86fNn(rYY7xEaSo2uPErPg#a#I4cVl3ZDuEjS&gvtS5~fMEiH=3c%ma{7 zUFrkrqL!&B*Z*yc9`CAa9f!uv5@?!);K+w4! z$7h{H{lb)N4AG*CrlTr%h@o&o^< zDMjG(W!<6w6xn+-giku*9!KgUYS3e^@Qb9ABdoo$w-RHxS5;H~I?Ytt+&{<(qdQJF zKn6<7HWE1@BiJE){|Q8YUt+0{Pel6pMwz@JWP2u^yunk`@Kas@wc81dx)D#;fE*?> z!e|L$8!z29>%|9gp0gs;_NRJD%xsQQi~XS4A^etf1}akA<1IE6nw@!N+3@-;0I&3QbBkvEhA00*GhB{e8RUhi4ri zLbmI;wzbu4J~x*!ZOb}2s3q3P*V<-H78An!=s41!w>FGo4d@tQ z3$Oio#PjG1Hooz^shI2t;ts^0tS@Gtow>3MC9OJgFtEC6LfNvi$rD3t22!1PZ7W(g zi$|;lb!%(uUwa;{rS#wqvm)NOeWLEzB<|R==YLj?(6(?@fM={<7G118U*m&IZ4rFL z0@W;IwJm-D=r>E6IB&7eG@Xtr7eL>}UoFO}S)Z*f-CDup)*0>N3TKSRv47Vtmc0W+ CyC%~B diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c index 7c94477b..c38eadb5 100644 --- a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c +++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c @@ -8,7 +8,7 @@ #include #include -void print_latest_log(const char* log_directory, off_t* last_pos, off_t* last_size) { +void print_latest_log(const char* log_directory, off_t* last_pos, time_t* last_time) { DIR *dir; struct dirent *entry; time_t latest_time = 0; @@ -39,58 +39,57 @@ void print_latest_log(const char* log_directory, off_t* last_pos, off_t* last_si return; } + if (latest_time <= *last_time) { + return; + } + int fd = open(latest_file, O_RDONLY); if (fd < 0) { printf("Error opening file %s\n", latest_file); return; } - // Get the size of the file - off_t size = lseek(fd, 0, SEEK_END); + // Move the file pointer to the last printed position + lseek(fd, *last_pos, SEEK_SET); - // Check if the file size has increased since the last read - if (size > *last_size) { - // Move the file pointer to the beginning of the file - lseek(fd, 0, SEEK_SET); - - char buffer[4096]; - int bytes_read; - int last_line_printed = 0; // Flag to check whether we have printed the last line - do { - bytes_read = read(fd, buffer, sizeof(buffer)); - if (bytes_read > 0) { - // Check if the last character is a newline - if (buffer[bytes_read - 1] == '\n') { - fwrite(buffer, 1, bytes_read, stdout); - fflush(stdout); - } else { - // If the last character is not a newline, add one - char* temp = (char*) malloc(bytes_read + 1); - memcpy(temp, buffer, bytes_read); - temp[bytes_read] = '\n'; - fwrite(temp, 1, bytes_read + 1, stdout); - fflush(stdout); - free(temp); - } - last_line_printed = (buffer[bytes_read - 1] == '\n'); + char buffer[4096]; + int bytes_read; + int last_line_printed = 0; // Flag to check whether we have printed the last line + do { + bytes_read = read(fd, buffer, sizeof(buffer)); + if (bytes_read > 0) { + // Check if the last character is a newline + if (buffer[bytes_read - 1] == '\n') { + fwrite(buffer, 1, bytes_read, stdout); + fflush(stdout); + } else { + // If the last character is not a newline, add one + char* temp = (char*) malloc(bytes_read + 1); + memcpy(temp, buffer, bytes_read); + temp[bytes_read] = '\n'; + fwrite(temp, 1, bytes_read + 1, stdout); + fflush(stdout); + free(temp); } - } while (bytes_read > 0); - - // If the last line was not printed, print it now - if (!last_line_printed) { - printf("\n"); + last_line_printed = (buffer[bytes_read - 1] == '\n'); } + } while (bytes_read > 0); - // Remember the last position and size that was read - *last_pos = lseek(fd, 0, SEEK_CUR); - *last_size = size; + // If the last line was not printed, print it now + if (!last_line_printed) { + printf("\n"); } - close(fd); + // Remember the last position and time that was read + *last_pos = lseek(fd, 0, SEEK_CUR); + *last_time = latest_time; + + close(fd); } + int main(int argc, char** argv) { if (argc < 2) { printf("Usage: winewrapper wine_path wine_args exe_path exe_args\n"); @@ -116,13 +115,13 @@ int main(int argc, char** argv) { } sleep(30); - + off_t last_pos = 0; off_t last_size = 0; char* log_directory = "/home/container/SNM2020/Saved/Logs"; print_latest_log(log_directory, &last_pos, &last_size); - + while (1) { sleep(1); print_latest_log(log_directory, &last_pos, &last_size); @@ -131,4 +130,4 @@ int main(int argc, char** argv) { kill(pid, SIGTERM); return 0; -} +} \ No newline at end of file From e367c1d4e77bac714ccd204a194e47c48c78c5b7 Mon Sep 17 00:00:00 2001 From: Vadym Date: Sat, 6 May 2023 20:12:49 +0300 Subject: [PATCH 048/251] Update egg-lavalink.json - update egg - fix servers not stopping --- voice_servers/lavalink/egg-lavalink.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index d846af2e..6d0c93d0 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -1,24 +1,24 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-04-11T13:56:42+02:00", + "exported_at": "2023-05-06T17:07:59+00:00", "name": "Lavalink", "author": "damuffin36@gmail.com", "description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/freyacodes\/Lavalink", "features": null, - "images": [ - "ghcr.io/parkervcp/yolks:java_11" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:java_11": "ghcr.io\/parkervcp\/yolks:java_11" + }, "file_denylist": [], "startup": "java -jar Lavalink.jar", "config": { "files": "{\r\n \"application.yml\": {\r\n \"parser\": \"yml\",\r\n \"find\": {\r\n \"server.address\": \"0.0.0.0\",\r\n \"server.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Started Launcher in \"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { From dfda23bcf8d88e372c157434929e9efe87f52d47 Mon Sep 17 00:00:00 2001 From: David Katz Date: Sat, 6 May 2023 12:15:13 -0700 Subject: [PATCH 049/251] Use '@user_jvm_args.txt' if available --- .../minecraft/java/curseforge/egg-curse-forge-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json index e9726824..22cb0625 100644 --- a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json +++ b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-05T19:34:12-07:00", + "exported_at": "2023-05-06T12:13:41-07:00", "name": "CurseForge Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a CurseForge modpack.", @@ -20,7 +20,7 @@ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" }, "file_denylist": [], - "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", + "startup": "java $([[ -f user_jvm_args.txt ]] && printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", From a68f8e752990dd341708056c6090b2e0245b3eb4 Mon Sep 17 00:00:00 2001 From: David Katz Date: Sat, 6 May 2023 12:31:30 -0700 Subject: [PATCH 050/251] Use '@user_jvm_args.txt' if available --- game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json index 2859e9ff..2938c759 100644 --- a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json +++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-05T18:13:15-07:00", + "exported_at": "2023-05-06T12:29:46-07:00", "name": "Modrinth Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a Modrinth modpack.", @@ -20,7 +20,7 @@ "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" }, "file_denylist": [], - "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", + "startup": "java $([[ -f user_jvm_args.txt ]] && printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", From 516ee4778d279e107b65814d25c5c2ec38621c22 Mon Sep 17 00:00:00 2001 From: David Katz Date: Sat, 6 May 2023 14:06:30 -0700 Subject: [PATCH 051/251] Improve file detection when looking up older pack versions --- .../minecraft/java/curseforge/egg-curse-forge-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json index 22cb0625..85d44a74 100644 --- a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json +++ b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-06T12:13:41-07:00", + "exported_at": "2023-05-06T14:04:53-07:00", "name": "CurseForge Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a CurseForge modpack.", @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# CurseForge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n: \"${API_KEY:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nCURSEFORGE_API_URL=\"https:\/\/api.curseforge.com\/v1\/mods\/\"\r\nCURSEFORGE_API_HEADERS=(\"--header=Accept: application\/json\" \"--header=x-api-key: ${API_KEY}\")\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving CurseForge project information...\"\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=false\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.data.mainFileId \/\/ empty')\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n local VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack version id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.serverPackFileId|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n local VERSION_SERVER_ID;\r\n if [[ -n \"${VERSION_SERVER_PACK}\" ]]; then\r\n VERSION_ID=$VERSION_SERVER_PACK\r\n IS_SERVER_PACK=true\r\n elif [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.id|tostring == $VERSION_ID) | .id') == \"${VERSION_ID}\" ]]; then\r\n VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack version id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n # Check if version id is unset or empty string\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n echo -e \"\\tWARNING: Version id '${VERSION_ID}' is not a server pack, attempting to use client files\"\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\/download-url\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction get_loader {\r\n echo -e \"Retrieving loader information...\"\r\n\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local CLIENT_VERSION_ID;\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.id|tostring == $VERSION_ID) | .id') != \"${VERSION_ID}\" ]]; then\r\n # Check if the provided version id is a server pack\r\n VERSION_CLIENT_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[]? | select(.serverPackFileId|tostring==$VERSION_ID) | .id')\"\r\n\r\n if [[ -n \"${VERSION_CLIENT_PACK}\" ]]; then\r\n CLIENT_VERSION_ID=$VERSION_CLIENT_PACK\r\n else\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n else\r\n CLIENT_VERSION_ID=$VERSION_ID\r\n fi\r\n\r\n echo -e \"\\tRetrieving version information for '${CLIENT_VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${CLIENT_VERSION_ID}\/download-url\" -O -)\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${CLIENT_VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q \"${DOWNLOAD_URL}\" -O client.zip\r\n\r\n echo -e \"\\tUnpacking client manifest\"\r\n unzip -jo client.zip manifest.json -d \"${SERVER_DIR}\"\r\n mv \"${SERVER_DIR}\/manifest.json\" \"${SERVER_DIR}\/client.manifest.json\" # rename to avoid conflicts with main manifest\r\n rm -rf client.zip\r\n\r\n echo -e \"\\tParsing client manifest\"\r\n local MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n LOADER_ID=$(jq -r '.minecraft.modLoaders[]? | select(.primary == true) | .id' \"${MANIFEST}\")\r\n LOADER_NAME=$(echo \"${LOADER_ID}\" | cut -d'-' -f1)\r\n LOADER_VERSION=$(echo \"${LOADER_ID}\" | cut -d'-' -f2)\r\n\r\n if [[ -z \"${LOADER_NAME}\" || -z \"${LOADER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No loader found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n MINECRAFT_VERSION=$(jq -r '.minecraft.version \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MINECRAFT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No minecraft version found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tFound loader ${LOADER_NAME} ${LOADER_VERSION} for Minecraft ${MINECRAFT_VERSION}\"\r\n}\r\n\r\nfunction unzip-strip() (\r\n set -u\r\n\r\n local archive=$1\r\n local destdir=${2:-}\r\n shift; shift || :\r\n echo -e \"\\tUnpacking ${archive} to ${destdir}\"\r\n\r\n echo -e \"\\tCreating temporary directory\"\r\n local tmpdir=\/mnt\/server\/tmp\r\n if ! mkdir -p \"${tmpdir}\"; then\r\n echo -e \"\\tERROR: mkdir failed to create temporary directory\"\r\n return 1\r\n fi\r\n\r\n trap 'rm -rf -- \"$tmpdir\"' EXIT\r\n\r\n echo -e \"\\tUnpacking archive\"\r\n\r\n if ! unzip -q \"$archive\" -d \"$tmpdir\"; then\r\n echo -e \"\\tERROR: unzip failed to unpack archive\"\r\n return 1\r\n fi\r\n\r\n echo -e \"\\tSetting glob settings\"\r\n\r\n shopt -s dotglob\r\n\r\n echo -e \"\\tCleaning up directory structure\"\r\n\r\n local files=(\"$tmpdir\"\/*) name i=1\r\n\r\n if (( ${#files[@]} == 1 )) && [[ -d \"${files[0]}\" ]]; then\r\n name=$(basename \"${files[0]}\")\r\n files=(\"$tmpdir\"\/*\/*)\r\n else\r\n name=$(basename \"$archive\"); name=${archive%.*}\r\n files=(\"$tmpdir\"\/*)\r\n fi\r\n\r\n if [[ -z \"$destdir\" ]]; then\r\n destdir=.\/\"$name\"\r\n fi\r\n\r\n while [[ -f \"$destdir\" ]]; do\r\n destdir=${destdir}-$((i++));\r\n done\r\n\r\n echo -e \"\\tCopying files to ${destdir}\"\r\n\r\n mkdir -p \"$destdir\"\r\n cp -ar \"$@\" -t \"$destdir\" -- \"${files[@]}\"\r\n rm -rf \"$tmpdir\"\r\n)\r\n\r\nfunction unpack_zip {\r\n echo -e \"Unpacking server files...\"\r\n unzip-strip server.zip \"${SERVER_DIR}\"\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/manifest.json\"\r\n jq -c '.files[]? | select(.required == true) | {project: .projectID, file: .fileID}' \"${MANIFEST}\" | while read -r mod; do\r\n local MOD_PROJECT_ID=$(echo \"${mod}\" | jq -r '.project \/\/ empty')\r\n local MOD_FILE_ID=$(echo \"${mod}\" | jq -r '.file \/\/ empty')\r\n\r\n if [[ -z \"${MOD_PROJECT_ID}\" || -z \"${MOD_FILE_ID}\" ]]; then\r\n echo -e \"\\tERROR: Failed to parse project id or file id for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_URL=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${MOD_PROJECT_ID}\/files\/${MOD_FILE_ID}\/download-url\" -O - | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n\r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FORGE_VERSION=$LOADER_VERSION\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old Forge files so we can safely update\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FABRIC_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local QUILT_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\nfi\r\n\r\nget_loader\r\nunpack_zip\r\n\r\nif [[ -f \"${SERVER_DIR}\/manifest.json\" ]]; then\r\n echo \"Found manifest.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/client.manifest.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n if [[ $LOADER_NAME == \"forge\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"fabric\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"quilt\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", + "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# CurseForge Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n: \"${API_KEY:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n echo -e \"\\tRunning apt update\"\r\n apt update > \/dev\/null 2>&1 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip > \/dev\/null 2>&1 || { echo \"apt install failed!\"; exit 1; }\r\n}\r\n\r\nCURSEFORGE_API_URL=\"https:\/\/api.curseforge.com\/v1\/mods\/\"\r\nCURSEFORGE_API_HEADERS=(\"--header=Accept: application\/json\" \"--header=x-api-key: ${API_KEY}\")\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving CurseForge project information...\"\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=false\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo file ID specified, using latest file\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.data.mainFileId \/\/ empty')\r\n\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .isServerPack')\"\r\n local VERSION_SERVER_ID=\"$(echo -e \"${PROJECT_DATA}\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.data.latestFiles[] | select(.id|tostring==$VERSION_ID) | .serverPackFileId')\"\r\n\r\n if [[ \"${VERSION_SERVER_PACK}\" == \"false\" && -n \"${VERSION_SERVER_ID}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_ID}'\"\r\n VERSION_ID=$VERSION_SERVER_ID\r\n IS_SERVER_PACK=true\r\n elif [[ \"${VERSION_SERVER_PACK}\" == \"true\" ]]; then\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n echo -e \"\\tChecking if provided file id '${VERSION_ID}' exists\"\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n local VERSION_SERVER_PACK=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.serverPackFileId \/\/ empty')\"\r\n if [[ -n \"${VERSION_SERVER_PACK}\" ]]; then\r\n echo -e \"\\tFound server pack file id '${VERSION_SERVER_PACK}'\"\r\n VERSION_ID=$VERSION_SERVER_PACK\r\n IS_SERVER_PACK=true\r\n fi\r\n else\r\n IS_SERVER_PACK=true\r\n fi\r\n fi\r\n\r\n # Check if version id is unset or empty string\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No file id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"false\" ]]; then\r\n echo -e \"\\tWARNING: File id '${VERSION_ID}' is not a server pack, attempting to use client files\"\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\/download-url\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve file data for file id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"Download failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction get_loader {\r\n echo -e \"Retrieving loader information...\"\r\n\r\n local PROJECT_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.data.name \/\/ empty')\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${FILE_DATA}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n local IS_SERVER_PACK=$(echo -e \"${FILE_DATA}\" | jq -r '.data.isServerPack \/\/ \"false\"')\r\n local CLIENT_VERSION_ID;\r\n\r\n if [[ \"${IS_SERVER_PACK}\" == \"true\" ]]; then\r\n CLIENT_VERSION_ID=\"$(echo -e \"${FILE_DATA}\" | jq -r '.data.parentProjectFileId \/\/ empty')\"\r\n else\r\n CLIENT_VERSION_ID=$VERSION_ID\r\n fi\r\n\r\n if [[ -z \"${CLIENT_VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: File id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRetrieving file information for '${CLIENT_VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${PROJECT_ID}\/files\/${CLIENT_VERSION_ID}\/download-url\" -O -)\r\n\r\n echo -e \"\\tParsing CurseForge pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo -e \"$JSON_DATA\" | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for file id ${CLIENT_VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n # download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n wget -q \"${DOWNLOAD_URL}\" -O client.zip\r\n\r\n echo -e \"\\tUnpacking client manifest\"\r\n unzip -jo client.zip manifest.json -d \"${SERVER_DIR}\"\r\n mv \"${SERVER_DIR}\/manifest.json\" \"${SERVER_DIR}\/client.manifest.json\" # rename to avoid conflicts with main manifest\r\n rm -rf client.zip\r\n\r\n echo -e \"\\tParsing client manifest\"\r\n local MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n LOADER_ID=$(jq -r '.minecraft.modLoaders[]? | select(.primary == true) | .id' \"${MANIFEST}\")\r\n LOADER_NAME=$(echo \"${LOADER_ID}\" | cut -d'-' -f1)\r\n LOADER_VERSION=$(echo \"${LOADER_ID}\" | cut -d'-' -f2)\r\n\r\n if [[ -z \"${LOADER_NAME}\" || -z \"${LOADER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No loader found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n MINECRAFT_VERSION=$(jq -r '.minecraft.version \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MINECRAFT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No minecraft version found in client manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tFound loader ${LOADER_NAME} ${LOADER_VERSION} for Minecraft ${MINECRAFT_VERSION}\"\r\n}\r\n\r\nfunction unzip-strip() (\r\n set -u\r\n\r\n local archive=$1\r\n local destdir=${2:-}\r\n shift; shift || :\r\n echo -e \"\\tUnpacking ${archive} to ${destdir}\"\r\n\r\n echo -e \"\\tCreating temporary directory\"\r\n local tmpdir=\/mnt\/server\/tmp\r\n if ! mkdir -p \"${tmpdir}\"; then\r\n echo -e \"\\tERROR: mkdir failed to create temporary directory\"\r\n return 1\r\n fi\r\n\r\n trap 'rm -rf -- \"$tmpdir\"' EXIT\r\n\r\n echo -e \"\\tUnpacking archive\"\r\n\r\n if ! unzip -q \"$archive\" -d \"$tmpdir\"; then\r\n echo -e \"\\tERROR: unzip failed to unpack archive\"\r\n return 1\r\n fi\r\n\r\n echo -e \"\\tSetting glob settings\"\r\n\r\n shopt -s dotglob\r\n\r\n echo -e \"\\tCleaning up directory structure\"\r\n\r\n local files=(\"$tmpdir\"\/*) name i=1\r\n\r\n if (( ${#files[@]} == 1 )) && [[ -d \"${files[0]}\" ]]; then\r\n name=$(basename \"${files[0]}\")\r\n files=(\"$tmpdir\"\/*\/*)\r\n else\r\n name=$(basename \"$archive\"); name=${archive%.*}\r\n files=(\"$tmpdir\"\/*)\r\n fi\r\n\r\n if [[ -z \"$destdir\" ]]; then\r\n destdir=.\/\"$name\"\r\n fi\r\n\r\n while [[ -f \"$destdir\" ]]; do\r\n destdir=${destdir}-$((i++));\r\n done\r\n\r\n echo -e \"\\tCopying files to ${destdir}\"\r\n\r\n mkdir -p \"$destdir\"\r\n cp -ar \"$@\" -t \"$destdir\" -- \"${files[@]}\"\r\n rm -rf \"$tmpdir\"\r\n)\r\n\r\nfunction unpack_zip {\r\n echo -e \"Unpacking server files...\"\r\n unzip-strip server.zip \"${SERVER_DIR}\"\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/manifest.json\"\r\n jq -c '.files[]? | select(.required == true) | {project: .projectID, file: .fileID}' \"${MANIFEST}\" | while read -r mod; do\r\n local MOD_PROJECT_ID=$(echo \"${mod}\" | jq -r '.project \/\/ empty')\r\n local MOD_FILE_ID=$(echo \"${mod}\" | jq -r '.file \/\/ empty')\r\n\r\n if [[ -z \"${MOD_PROJECT_ID}\" || -z \"${MOD_FILE_ID}\" ]]; then\r\n echo -e \"\\tERROR: Failed to parse project id or file id for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n local FILE_URL=$(wget -q \"${CURSEFORGE_API_HEADERS[@]}\" \"${CURSEFORGE_API_URL}${MOD_PROJECT_ID}\/files\/${MOD_FILE_ID}\/download-url\" -O - | jq -r '.data \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n\r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod ${MOD_PROJECT_ID} ${MOD_FILE_ID}\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FORGE_VERSION=$LOADER_VERSION\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n # Remove old Forge files so we can safely update\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local FABRIC_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MC_VERSION=$MINECRAFT_VERSION\r\n local QUILT_VERSION=$LOADER_VERSION\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\nfi\r\n\r\nget_loader\r\nunpack_zip\r\n\r\nif [[ -f \"${SERVER_DIR}\/manifest.json\" ]]; then\r\n echo \"Found manifest.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/client.manifest.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/client.manifest.json\"\r\n\r\n if [[ $LOADER_NAME == \"forge\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"fabric\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $LOADER_NAME == \"quilt\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", "container": "openjdk:8-jdk-slim", "entrypoint": "bash" } From 6d80a4ca2bcc574bf3dff14b1744b52874357492 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 7 May 2023 12:11:50 +0200 Subject: [PATCH 052/251] Update frozen-flame --- .../frozen_flame/egg-frozen-flame.json | 42 ++++++++++++------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json index f76ca3ff..30d87c00 100644 --- a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json +++ b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json @@ -4,25 +4,25 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-03T14:32:26+08:00", + "exported_at": "2023-05-07T12:10:34+02:00", "name": "Frozen Flame", "author": "theblitzbat@gmail.com", "description": "Frozen Flame Dedicated Server", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer -log -MetaGameServerName={{SERVER_NAME}} -port {{SERVER_PORT}} -queryPort {{QUERY_PORT}}", + "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer-Linux-Shipping -log -MetaGameServerName={{SERVER_NAME}} -port {{SERVER_PORT}} -queryPort {{QUERY_PORT}} -RconPort={{RCON_PORT}} -RconPassword={{RCON_PASSWORD}}", "config": { "files": "{\r\n \"FrozenFlame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerPassword\": \"ServerPassword=\\\"{{server.build.env.SERVER_PASSWORD}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"LogWorld: Bringing up level for play took\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n\r\n## just in case someone removed the defaults.\r\n\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nmkdir -p \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\n\r\n[\/Script\/FrozenFlame.FGameSession]\r\nServerPassword=\"${SERVER_PASSWORD}\"\r\n\r\n[\/Script\/FrozenFlame.GameBalance]\r\n\r\n# Enable PVP for non-friends\r\nbFreePVP=True\r\n\r\n# How long a day lasts\r\nDurationOfDay=3600\r\n\r\n\r\n# Health after death\r\nHealthAfterRespawn=0.5\r\n\r\n# Restore health on level up\r\nbRestoreHealthOnLevelUp=True\r\n\r\n# Stamina cost at jumping\r\nJumpStaminaCost=6\r\n\r\n# Stamina cost at sprinting\r\nSprintStaminaCost=1\r\n\r\n# Loss of armor durability after death\r\nArmorDurabilityReducementAfterDeath=25\r\n\r\n# Weapon durability loss speed\r\nDefaultWeaponDurabilityCost=0.5\r\n\r\n\r\n# Allow to teleport with overweight\r\nbIsAllowedToTeleportWithOverweight=False\r\n\r\n# Allow to fly with overweight\r\nbIsAllowedToGlideWithOverweight=False\r\n\r\n\r\n# Drop of items after level X\r\nMinimalLevelToDropItemAfterDeath=2147483647\r\n\r\n# Drop equipped items after death\r\nbDropEquippedItems=False\r\n\r\n# Drop equipable items after death\r\nbDropEquipableItems=False\r\n\r\n# Drop food on death\r\nbDropFoodItems=False\r\n\r\n\r\n#Flame rate from everything\r\nFlameRate=1\r\n\r\n#Player damage multiplier\r\nPlayerDamageMultiplier=1\r\n\r\n#Monsters health multiplier\r\nMonstersHealthMultiplier=1\r\n\r\n#Monsters damage multiplier\r\nMonstersDamageMultiplier=1\r\n\r\n\r\n\r\n#Bulding without material costs\r\nbNoModuleCost=False\r\n\r\n#Building without restrictions\r\nbLimitlessSupport=False\r\n\r\n#Bulding without decay\r\nbInvulnerableModules=False\r\n\r\n\r\n[\/Script\/FrozenFlame.DecaySubsystemSettings]\r\n#A minimum durability that keeps after weather decay system damage\r\nMinDurability=0.300000\r\nEOF\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\r\n\r\nFILE=\/mnt\/server\/FrozenFlame\/Saved\/Config\/LinuxServer\/Game.ini\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file already exits. updating.\"\r\n mv Game.ini Game.ini.back\r\n curl -sSL o Game.ini https:\/\/raw.githubusercontent.com\/DreamsideInteractive\/FrozenFlameServer\/main\/Game.ini\r\nelse \r\n echo \"Downloading a config file\"\r\n curl -sSL -o Game.ini https:\/\/raw.githubusercontent.com\/DreamsideInteractive\/FrozenFlameServer\/main\/Game.ini\r\nfi\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -58,16 +58,6 @@ "rules": "required|integer|between:1024,65536", "field_type": "text" }, - { - "name": "Additional Arguments", - "description": "Specify additional launch parameters such as -crossplay. You must include a dash - and separate each parameter with space: -crossplay -exclusivejoin", - "env_variable": "ARGS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, { "name": "Server Name", "description": "The server name", @@ -97,6 +87,26 @@ "user_editable": true, "rules": "boolean", "field_type": "text" + }, + { + "name": "Rcon Port", + "description": "", + "env_variable": "RCON_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Rcon password", + "description": "", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" } ] -} \ No newline at end of file +} From 7c4544698e197ae18adfcd78c640be726c6332bf Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 7 May 2023 18:55:32 +0200 Subject: [PATCH 053/251] Update README.md --- game_eggs/steamcmd_servers/frozen_flame/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/frozen_flame/README.md b/game_eggs/steamcmd_servers/frozen_flame/README.md index a936b98b..d177dafc 100644 --- a/game_eggs/steamcmd_servers/frozen_flame/README.md +++ b/game_eggs/steamcmd_servers/frozen_flame/README.md @@ -8,8 +8,8 @@ Frozen Flame is a Survival RPG set in the vast world of Arсana, an ancient land | Port | default | |-----------|---------| | Game | 7777 | -| Query | 27015 | -| RCON | 25575 | +| Query | 25575 | +| RCON | 27015 | ## Server configuration The documentation can be found here: [Dedicated server documentation](https://github.com/DreamsideInteractive/FrozenFlameServer) From 3c11c3a40bc00a22a8d51a38b52ab8441cf90a6c Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 7 May 2023 19:05:47 +0200 Subject: [PATCH 054/251] Fix ports --- .../steamcmd_servers/frozen_flame/egg-frozen-flame.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json index 30d87c00..300fe7d0 100644 --- a/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json +++ b/game_eggs/steamcmd_servers/frozen_flame/egg-frozen-flame.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-07T12:10:34+02:00", + "exported_at": "2023-05-07T19:05:11+02:00", "name": "Frozen Flame", "author": "theblitzbat@gmail.com", "description": "Frozen Flame Dedicated Server", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer-Linux-Shipping -log -MetaGameServerName={{SERVER_NAME}} -port {{SERVER_PORT}} -queryPort {{QUERY_PORT}} -RconPort={{RCON_PORT}} -RconPassword={{RCON_PASSWORD}}", + "startup": ".\/FrozenFlame\/Binaries\/Linux\/FrozenFlameServer-Linux-Shipping -log -MetaGameServerName=\"{{SERVER_NAME}}\" -port={{SERVER_PORT}} -queryPort={{QUERY_PORT}} -RconPort={{RCON_PORT}} -RconPassword=\"{{RCON_PASSWORD}}\"", "config": { "files": "{\r\n \"FrozenFlame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerPassword\": \"ServerPassword=\\\"{{server.build.env.SERVER_PASSWORD}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"LogWorld: Bringing up level for play took\"\r\n}", @@ -52,7 +52,7 @@ "name": "Query Port", "description": "The query port.", "env_variable": "QUERY_PORT", - "default_value": "27015", + "default_value": "25575", "user_viewable": true, "user_editable": true, "rules": "required|integer|between:1024,65536", From 62cec86e0277f52b6b71f490a317eb7427857c6d Mon Sep 17 00:00:00 2001 From: Piotr Krawiecki <152773+krawiec@users.noreply.github.com> Date: Wed, 10 May 2023 03:24:22 +0200 Subject: [PATCH 055/251] Updated Project Zomboid Egg Updated ports according to PZ's Network changes. Updated Readme Replaced old not recognized -steamport1 with new -udpport parameter --- .../project_zomboid/README.md | 19 +++++++------------ .../project_zomboid/egg-project-zomboid.json | 8 ++++---- 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/game_eggs/steamcmd_servers/project_zomboid/README.md b/game_eggs/steamcmd_servers/project_zomboid/README.md index 6f6f9c32..e2fbf6fc 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/README.md +++ b/game_eggs/steamcmd_servers/project_zomboid/README.md @@ -4,21 +4,16 @@ Project Zomboid is the ultimate in zombie survival. Alone or in MP: you loot, bu ## Server Ports -Project Zomboid requires one port for Steam and an additional **one port per player**. Additional ports are allocated as they connect. - -For example, when configured with a base allocation of 27016: +Project Zomboid requires one port for game data and one port for Steam. ```log -Zomboid Steam Server started, ports 27016 and 27016 must be open on the router -Connected new client kubi ID # 0 and assigned DL port 27017 -Connected new client kubi2 ID # 1 and assigned DL port 27018 +> *** SERVER STARTED ****. +> *** Steam is enabled. +> Server is listening on port 16261 (for Steam connection) and port 16262 (for UDPRakNet connection). +> Clients should use 16261 port for connections. ``` -If you're experiencing issues with players connecting it's likely because you have not allocated enough ports. These ports **must be in order** following the Steam port. - | Port | default | |-------------|---------| -| Game | 8766 | -| Player1 | 8767 | -| Player2 | 8768 | -| ... | 8769 | +| DefaultPort | 16261 | +| UDPPort | 16262 | diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json index 5012b832..d3d3499f 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json +++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/games:source" ], "file_denylist": [], - "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -steamport1 {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", + "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -udpport {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"SERVER STARTED\"\r\n}", @@ -59,11 +59,11 @@ }, { "name": "SteamPort", - "description": "Sets the SteamPort1 option", + "description": "Sets the UFPPort option", "env_variable": "STEAM_PORT", - "default_value": "8766", + "default_value": "16262", "user_viewable": true, - "user_editable": false, + "user_editable": true, "rules": "required|string|max:20" }, { From 2f1747a8160b1adc9cbc234cdabfad39b6bd1af5 Mon Sep 17 00:00:00 2001 From: Piotr Krawiecki <152773+krawiec@users.noreply.github.com> Date: Wed, 10 May 2023 03:33:49 +0200 Subject: [PATCH 056/251] Exported from Panel Exported from Panel --- .../project_zomboid/egg-project-zomboid.json | 40 +++++++++++-------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json index d3d3499f..81d294a9 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json +++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-05-06T10:50:50+02:00", + "exported_at": "2023-05-10T03:31:04+02:00", "name": "Project Zomboid", - "author": "iamkubi@gmail.com", + "author": "pkrawiecki@gmail.com", "description": "Project Zomboid is an open world survival horror video game in alpha stage development by British and Canadian independent developer, The Indie Stone. The game is set in a post apocalyptic, zombie infested world where the player is challenged to survive for as long as possible before inevitably dying.", "features": [ "steam_disk_space" ], - "images": [ - "ghcr.io\/parkervcp\/games:source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + }, "file_denylist": [], "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -udpport {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", "config": { @@ -37,7 +37,8 @@ "default_value": "Pterodactyl", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_num|max:64" + "rules": "required|alpha_num|max:64", + "field_type": "text" }, { "name": "Admin Username", @@ -46,7 +47,8 @@ "default_value": "admin", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Admin Password", @@ -55,16 +57,18 @@ "default_value": "password", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:32" + "rules": "required|string|max:32", + "field_type": "text" }, { "name": "SteamPort", - "description": "Sets the UFPPort option", + "description": "Sets the UDPPort option", "env_variable": "STEAM_PORT", "default_value": "16262", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Max Players", @@ -73,7 +77,8 @@ "default_value": "10", "user_viewable": true, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "PZ Steam App ID", @@ -82,7 +87,8 @@ "default_value": "380870", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Steam Beta Branch [requires reinstall]", @@ -91,7 +97,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:64" + "rules": "nullable|string|max:64", + "field_type": "text" }, { "name": "Steam Auto Update", @@ -100,7 +107,8 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] -} +} \ No newline at end of file From bb75e0adbfdc13b8361bf9d8bf4f19e3177d8793 Mon Sep 17 00:00:00 2001 From: Piotr Krawiecki <152773+krawiec@users.noreply.github.com> Date: Wed, 10 May 2023 09:59:00 +0200 Subject: [PATCH 057/251] Author fix --- .../steamcmd_servers/project_zomboid/egg-project-zomboid.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json index 81d294a9..88fb636c 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json +++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-05-10T03:31:04+02:00", "name": "Project Zomboid", - "author": "pkrawiecki@gmail.com", + "author": "iamkubi@gmail.com", "description": "Project Zomboid is an open world survival horror video game in alpha stage development by British and Canadian independent developer, The Indie Stone. The game is set in a post apocalyptic, zombie infested world where the player is challenged to survive for as long as possible before inevitably dying.", "features": [ "steam_disk_space" From 44a3fe5c61339df4bb3f23ed8b11992b275b82d5 Mon Sep 17 00:00:00 2001 From: Aaronstar-McClure Date: Thu, 11 May 2023 08:23:30 -0400 Subject: [PATCH 058/251] update fabric modify the fabric egg to use server.jar on startup to align with the standard from other minecraft eggs --- .../minecraft/java/fabric/egg-fabric.json | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/game_eggs/minecraft/java/fabric/egg-fabric.json b/game_eggs/minecraft/java/fabric/egg-fabric.json index 8aaa9342..8df0ac46 100644 --- a/game_eggs/minecraft/java/fabric/egg-fabric.json +++ b/game_eggs/minecraft/java/fabric/egg-fabric.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:31:08-05:00", + "exported_at": "2023-05-11T08:13:07-04:00", "name": "Fabric", "author": "accounts@bofanodes.io", "description": "Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.", @@ -13,12 +13,12 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17", + "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", + "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Fabric MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq unzip dos2unix wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Enable snapshots\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$MC_VERSION\" == \"snapshot\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nif [ -z \"$FABRIC_VERSION\" ] || [ \"$FABRIC_VERSION\" == \"latest\" ]; then\r\n FABRIC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/installer | jq -r '.[0].version')\r\nfi\r\n\r\nif [ -z \"$LOADER_VERSION\" ] || [ \"$LOADER_VERSION\" == \"latest\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$LOADER_VERSION\" == \"snapshot\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nwget -O fabric-installer.jar https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\njava -jar fabric-installer.jar server -mcversion $MC_VERSION -loader $LOADER_VERSION -downloadMinecraft\r\necho -e \"Install Complete\"", + "script": "#!\/bin\/bash\r\n# Fabric MC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl jq unzip dos2unix wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n# Enable snapshots\r\nif [ -z \"$MC_VERSION\" ] || [ \"$MC_VERSION\" == \"latest\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$MC_VERSION\" == \"snapshot\" ]; then\r\n MC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nif [ -z \"$FABRIC_VERSION\" ] || [ \"$FABRIC_VERSION\" == \"latest\" ]; then\r\n FABRIC_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/installer | jq -r '.[0].version')\r\nfi\r\n\r\nif [ -z \"$LOADER_VERSION\" ] || [ \"$LOADER_VERSION\" == \"latest\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== true )|.version' | head -n1)\r\nelif [ \"$LOADER_VERSION\" == \"snapshot\" ]; then\r\n LOADER_VERSION=$(curl -sSL https:\/\/meta.fabricmc.net\/v2\/versions\/loader | jq -r '.[] | select(.stable== false )|.version' | head -n1)\r\nfi\r\n\r\nwget -O fabric-installer.jar https:\/\/maven.fabricmc.net\/net\/fabricmc\/fabric-installer\/$FABRIC_VERSION\/fabric-installer-$FABRIC_VERSION.jar\r\njava -jar fabric-installer.jar server -mcversion $MC_VERSION -loader $LOADER_VERSION -downloadMinecraft\r\nmv server.jar minecraft-server.jar\r\nmv fabric-server-launch.jar server.jar\r\necho \"serverJar=minecraft-server.jar\" > fabric-server-launcher.properties\r\necho -e \"Install Complete\"", "container": "openjdk:11-jdk-slim", "entrypoint": "bash" } @@ -39,10 +39,11 @@ "name": "Server Jar File", "description": "The name of the server jarfile to run the server with.", "env_variable": "SERVER_JARFILE", - "default_value": "fabric-server-launch.jar", + "default_value": "server.jar", "user_viewable": true, "user_editable": true, - "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" }, { "name": "Minecraft Version", @@ -51,7 +52,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|between:3,15" + "rules": "required|string|between:3,15", + "field_type": "text" }, { "name": "Fabric Version", @@ -60,7 +62,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|between:3,15" + "rules": "required|string|between:3,15", + "field_type": "text" }, { "name": "Fabric Loader Version", @@ -69,7 +72,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|between:3,15" + "rules": "required|string|between:3,15", + "field_type": "text" } ] -} +} \ No newline at end of file From db00e862d61fde5da6c494fd7d59cb6a136eb82e Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Wed, 17 May 2023 20:12:09 +0200 Subject: [PATCH 059/251] Update LiteLoader --- .../LiteLoader-bedrock/egg-LiteLoader-bedrock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json b/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json index 7c6a2e0d..1a26eabd 100644 --- a/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json +++ b/game_eggs/minecraft/bedrock/LiteLoader-bedrock/egg-LiteLoader-bedrock.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-11T19:37:36+08:00", + "exported_at": "2023-05-17T20:11:37+02:00", "name": "Liteloader Bedrock Dedicated Server", "author": "frizth_tatierra@informatics.edu.ph", "description": "LiteLoaderBDS - Epoch-making & Cross-language Bedrock Dedicated Servers Plugin Loader\r\n\r\nLiteLoaderBDS is an unofficial plugin loader that provides basic API support for Bedrock Dedicated Server, with a massive API, lots of packed utility interfaces, a rich event system and powerful basic interface support.", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" }, "file_denylist": [], - "startup": ".\/lae-ll-launcher", + "startup": ".\/lae-ll-launcher bedrock_server_mod.exe", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"server-name\": \"{{server.build.env.SERVERNAME}}\",\r\n \"gamemode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"difficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"max-players\": \"{{server.build.env.MAXPLAYERS}}\",\r\n \"level-name\": \"{{server.build.env.WORLDNAME}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"IPv4 supported\"\r\n}", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Liteloader First-time Install Script\r\n\r\napk update\r\napk add gzip\r\ncd \/mnt\/server\r\n\r\n# Download Minecraft BDS\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BDS_VERSION}\" ] || [ \"${BDS_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-win\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BDS_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-win\/bedrock-server-$BDS_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\nrm versions.html.gz\r\n\r\n# Download LiteLoaderBDS\r\nif [ -z \"${LL_VERSION}\" ] || [ \"${LL_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest LiteLoaderBDS from GitHub\"\r\n curl -s https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\/latest | grep \"browser_download_url.*LiteLoader-.*zip\" | cut -d : -f 2,3 | tr -d \\\" | wget -i - -O LiteLoader.zip\r\nelse \r\n echo -e \"\\n Downloading ${LL_VERSION} LiteLoaderBDS from GitHub\"\r\n wget https:\/\/github.com\/LiteLDev\/LiteLoaderBDS\/releases\/download\/${LL_VERSION}\/LiteLoader-${LL_VERSION}.zip -O LiteLoader.zip\r\nfi\r\n\r\n# Downlaoding Launcher and finishing touches\r\nwget https:\/\/io.ivampiresp.com\/d\/Software\/MCServer\/BDS\/LiteLoader\/lae-ll-launcher\r\nchmod +x lae-ll-launcher\r\nunzip -o LiteLoader.zip\r\nrm LiteLoader.zip\r\necho \"Finished Downloading Liteloader...\"", + "script": "#!\/bin\/bash\r\n# Liteloader First-time Install Script\r\n\r\napk update\r\napk add gzip jq curl wine\r\ncd \/mnt\/server\r\n\r\nfor file in *; do\r\n if [ \"$file\" != \"allowlist.json\" ] && [ \"$file\" != \"permissions.json\" ] && [ \"$file\" != \"server.properties\" ] && [ \"$file\" != \"plugins\" ] && [ \"$file\" != \"world\" ]; then\r\n if [ -d \"$file\" ]; then\r\n rm -rf \"$file\" # Remove directories recursively\r\n else\r\n rm \"$file\" # Remove files\r\n fi\r\n fi\r\ndone\r\n\r\n# Download Minecraft BDS\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BDS_VERSION}\" ] || [ \"${BDS_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-win\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BDS_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-win\/bedrock-server-$BDS_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\nrm versions.html.gz\r\n\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/LiteLDev\/LiteLoaderBDS\/releases\")\r\n\r\nif [ -z \"${LL_VERSION}\" ] || [ \"${LL_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${LL_VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n echo -e \"\\n Downloading ${LL_VERSION} LiteLoaderBDS from GitHub\"\r\n DOWNLOAD_GIT_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${LL_VERSION}\" '.[] | select(.tag_name==$LL_VERSION) | .assets[].browser_download_url' | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_GIT_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\n fi\r\nfi\r\n\r\ncurl -sSL -o LiteLoader.zip ${DOWNLOAD_GIT_URL}\r\nunzip -o LiteLoader.zip\r\nmv -f LiteLoaderBDS\/* \/mnt\/server\r\nrm LiteLoader.zip\r\ntimeout 30s wine PeEditor.exe\r\nrm -rf '\/root\/.wine' \/mnt\/server\/LiteLoaderBDS\/\r\n\r\n# Downloading Launcher and finishing touches\r\nwget https:\/\/io.ivampiresp.com\/d\/Software\/MCServer\/BDS\/LiteLoader\/lae-ll-launcher\r\nchmod +x lae-ll-launcher\r\necho \"Finished Downloading Liteloader...\"", "container": "ghcr.io\/parkervcp\/installers:alpine", "entrypoint": "ash" } @@ -109,4 +109,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From b4c32c5dce08c65ed1369129a89d381115a46172 Mon Sep 17 00:00:00 2001 From: DedBash <79027536+DedBash@users.noreply.github.com> Date: Thu, 18 May 2023 00:25:59 +0200 Subject: [PATCH 060/251] Add Java 18 and Edit Names Java 18 was added to each egg where it could be relevant and changed to "PTDL_v2". --- .../curseforge/egg-curse-forge-generic.json | 5 +++-- .../minecraft/java/fabric/egg-fabric.json | 17 +++++++++-------- .../minecraft/java/feather/egg-feather.json | 4 ++-- .../java/forge/forge/egg-forge-enhanced.json | 9 +++++---- .../java/ftb/egg-ftb-modpacksch-server.json | 9 +++++---- .../java/glowstone/egg-glowstone.json | 17 +++++++++-------- .../minecraft/java/krypton/egg-krypton.json | 19 ++++++++++--------- game_eggs/minecraft/java/limbo/egg-limbo.json | 2 +- game_eggs/minecraft/java/magma/egg-magma.json | 9 +++++---- .../minecraft/java/mohist/egg-mohist.json | 17 +++++++++-------- game_eggs/minecraft/java/paper/egg-paper.json | 17 +++++++++-------- .../minecraft/java/purpur/egg-purpur.json | 11 ++++++----- .../minecraft/java/spigot/egg-spigot.json | 17 +++++++++-------- .../java/spongeforge/egg-sponge-forge.json | 11 ++++++----- .../spongevanilla/egg-sponge-vanilla.json | 4 ++-- .../java/vanillacord/egg-vanilla-cord.json | 17 +++++++++-------- 16 files changed, 99 insertions(+), 86 deletions(-) diff --git a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json index 85d44a74..6ea81de7 100644 --- a/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json +++ b/game_eggs/minecraft/java/curseforge/egg-curse-forge-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-06T14:04:53-07:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "CurseForge Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a CurseForge modpack.", @@ -17,7 +17,8 @@ "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17" + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java $([[ -f user_jvm_args.txt ]] && printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] && printf %s \"-jar `cat .serverjar`\" || printf %s \"@unix_args.txt\")", diff --git a/game_eggs/minecraft/java/fabric/egg-fabric.json b/game_eggs/minecraft/java/fabric/egg-fabric.json index 8aaa9342..a18c7355 100644 --- a/game_eggs/minecraft/java/fabric/egg-fabric.json +++ b/game_eggs/minecraft/java/fabric/egg-fabric.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:31:08-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Fabric", "author": "accounts@bofanodes.io", "description": "Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { diff --git a/game_eggs/minecraft/java/feather/egg-feather.json b/game_eggs/minecraft/java/feather/egg-feather.json index d1181ec8..a7f06812 100644 --- a/game_eggs/minecraft/java/feather/egg-feather.json +++ b/game_eggs/minecraft/java/feather/egg-feather.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-11-26T00:03:20+00:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Feather", "author": "parker@parkervcp.com", "description": "An experimental Minecraft server implementation written in Rust.", diff --git a/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json b/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json index 14bcf0d0..d51493b7 100644 --- a/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json +++ b/game_eggs/minecraft/java/forge/forge/egg-forge-enhanced.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-31T16:27:58+01:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Forge Enhanced", "author": "parker@parkervcp.com", "description": "Minecraft Forge Server. Minecraft Forge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other.", @@ -14,10 +14,11 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar {{SERVER_JARFILE}}\" || printf %s \"@unix_args.txt\" )", diff --git a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json index 76b1adeb..d752ca4f 100644 --- a/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json +++ b/game_eggs/minecraft/java/ftb/egg-ftb-modpacksch-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-05T13:37:42-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "FTB-modpacks.ch Server", "author": "runemaster580@gmail.com", "description": "Since the release of the FTB APP, FTB modpacks are now distributed through modpacks.ch. This egg was developed for support for modpacks that are distributed through this.", @@ -14,10 +14,11 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java -javaagent:log4jfix\/Log4jPatcher-1.0.0.jar -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] && printf %s \"-jar start-server.jar\" || printf %s \"@unix_args.txt\" )", diff --git a/game_eggs/minecraft/java/glowstone/egg-glowstone.json b/game_eggs/minecraft/java/glowstone/egg-glowstone.json index 18b66715..808639ab 100644 --- a/game_eggs/minecraft/java/glowstone/egg-glowstone.json +++ b/game_eggs/minecraft/java/glowstone/egg-glowstone.json @@ -1,20 +1,21 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-07T15:15:07-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Glowstone", "author": "support@pterodactyl.io", "description": "Glowstone is an open-source server implementation for Minecraft: Java Edition 1.12.2 and up.", "features": null, - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xms768M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -jar {{SERVER_JARFILE}}", "config": { diff --git a/game_eggs/minecraft/java/krypton/egg-krypton.json b/game_eggs/minecraft/java/krypton/egg-krypton.json index eed82973..24c0f6b5 100644 --- a/game_eggs/minecraft/java/krypton/egg-krypton.json +++ b/game_eggs/minecraft/java/krypton/egg-krypton.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null - }, - "exported_at": "2021-05-09T06:18:25-04:00", +}, +"exported_at": "2023-05-17T23:20:29+01:00", "name": "Krypton", "author": "callum.seabrook@prevarinite.com", "description": "A fast, lightweight Minecraft server written in Kotlin", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17" -], +"docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" +}, "file_denylist": "", "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JAR}}", "config": { diff --git a/game_eggs/minecraft/java/limbo/egg-limbo.json b/game_eggs/minecraft/java/limbo/egg-limbo.json index a00c6580..6468d22d 100644 --- a/game_eggs/minecraft/java/limbo/egg-limbo.json +++ b/game_eggs/minecraft/java/limbo/egg-limbo.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-21T04:56:57+08:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Limbo", "author": "xEfinax@protonmail.com", "description": "Standalone server program Limbo.", diff --git a/game_eggs/minecraft/java/magma/egg-magma.json b/game_eggs/minecraft/java/magma/egg-magma.json index 38b994c0..f9c7276a 100644 --- a/game_eggs/minecraft/java/magma/egg-magma.json +++ b/game_eggs/minecraft/java/magma/egg-magma.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-09-28T18:19:11+00:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Magma", "author": "support@pterodactyl.io", "description": "Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability.", @@ -14,10 +14,11 @@ "pid_limit" ], "docker_images": { - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", diff --git a/game_eggs/minecraft/java/mohist/egg-mohist.json b/game_eggs/minecraft/java/mohist/egg-mohist.json index 1dd2339b..3ffe1a49 100644 --- a/game_eggs/minecraft/java/mohist/egg-mohist.json +++ b/game_eggs/minecraft/java/mohist/egg-mohist.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-14T09:54:36+01:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Mohist", "author": "alex.chang-lam@protonmail.com", "description": "Spigot fork with performance optimizations.", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} pause", "config": { diff --git a/game_eggs/minecraft/java/paper/egg-paper.json b/game_eggs/minecraft/java/paper/egg-paper.json index 98d3195e..0d8de321 100644 --- a/game_eggs/minecraft/java/paper/egg-paper.json +++ b/game_eggs/minecraft/java/paper/egg-paper.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-05-21T10:48:18-04:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Paper", "author": "parker@pterodactyl.io", "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { diff --git a/game_eggs/minecraft/java/purpur/egg-purpur.json b/game_eggs/minecraft/java/purpur/egg-purpur.json index 81b9fa1f..ea06fe6a 100644 --- a/game_eggs/minecraft/java/purpur/egg-purpur.json +++ b/game_eggs/minecraft/java/purpur/egg-purpur.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-04-11T10:05:13+02:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Purpur", "author": "purpur@birdflop.com", "description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features.", @@ -14,10 +14,11 @@ "pid_limit" ], "docker_images": { - "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8" + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java --add-modules=jdk.incubator.vector -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", diff --git a/game_eggs/minecraft/java/spigot/egg-spigot.json b/game_eggs/minecraft/java/spigot/egg-spigot.json index ac81e7a3..1873d46c 100644 --- a/game_eggs/minecraft/java/spigot/egg-spigot.json +++ b/game_eggs/minecraft/java/spigot/egg-spigot.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:30:38-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "Spigot", "author": "support@pterodactyl.io", "description": "Spigot is the most widely-used modded Minecraft server software in the world. It powers many of the top Minecraft server networks around to ensure they can cope with their huge player base and ensure the satisfaction of their players. Spigot works by reducing and eliminating many causes of lag, as well as adding in handy features and settings that help make your job of server administration easier.", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { diff --git a/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json b/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json index 7f3326be..c5e216dc 100644 --- a/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json +++ b/game_eggs/minecraft/java/spongeforge/egg-sponge-forge.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-04T16:44:53+08:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "SpongeForge", "author": "parker@parkervcp.com", "description": "A community-driven open source Minecraft: Java Edition modding platform.", @@ -14,10 +14,11 @@ "pid_limit" ], "docker_images": { - "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8", - "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17" + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", diff --git a/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json b/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json index c6d9449b..16c0804c 100644 --- a/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json +++ b/game_eggs/minecraft/java/spongevanilla/egg-sponge-vanilla.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:30:32-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "SpongeVanilla", "author": "parker@parkervcp.com", "description": "SpongeVanilla is the implementation of the Sponge API on top of Vanilla Minecraft.", diff --git a/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json b/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json index 8cd9f85c..02526f29 100644 --- a/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json +++ b/game_eggs/minecraft/java/vanillacord/egg-vanilla-cord.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:30:15-05:00", + "exported_at": "2023-05-17T23:20:29+01:00", "name": "VanillaCord", "author": "support@pterodactyl.io", "description": "Minecraft is a game about placing blocks and going on adventures. Explore randomly generated worlds and build amazing things from the simplest of homes to the grandest of castles. Play in Creative Mode with unlimited resources or mine deep in Survival Mode, crafting weapons and armor to fend off dangerous mobs. Do all this alone or with friends.\r\n\r\nVanillaCord adds support for BungeeCord's ip_forward setting.", @@ -13,12 +13,13 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", "config": { From 26aa954708d621b795eabb003fc3375bea031bee Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 18 May 2023 11:05:41 +0200 Subject: [PATCH 061/251] Update pocketmine --- .../minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index b1228d0d..29b3ef00 100644 --- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-01T16:49:09+01:00", + "exported_at": "2023-05-18T11:04:52+02:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"amd64\" || printf \"arm64\")\r\n\r\n# Shouldn't be possible to be empty, but default to PM4 if it is and convert to uppercase\r\nVERSION=\"${VERSION:-PM4}\"\r\nVERSION=\"${VERSION^^}\"\r\n\r\n# Helper functions\r\n\r\ndownload_php_binary() {\r\n printf \"Downloading latest PHP %s binary for %s\\n\" \"$REQUIRED_PHP_VERSION\" \"$VERSION\"\r\n curl --location --progress-bar https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/php-\"$REQUIRED_PHP_VERSION\"-latest\/PHP-Linux-x86_64-\"$VERSION\".tar.gz | tar -xzv\r\n}\r\n\r\nset_php_extension_dir() {\r\n printf \"Configuring php.ini\\n\"\r\n EXTENSION_DIR=$(find \"bin\" -name '*debug-zts*')\r\n grep -q '^extension_dir' bin\/php7\/bin\/php.ini && sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y libtool-bin libtool make autoconf automake m4 gzip bzip2 bison g++ git cmake pkg-config re2c\r\n\r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat <>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cach\/balls\r\n mkdir -p \/mnt\/server\/build_cach\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < Date: Thu, 18 May 2023 11:08:47 +0200 Subject: [PATCH 062/251] pocketmine fix typo in dir --- .../minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index 29b3ef00..9b39b2a5 100644 --- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-18T11:04:52+02:00", + "exported_at": "2023-05-18T11:08:07+02:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"amd64\" || printf \"arm64\")\r\n\r\n# Shouldn't be possible to be empty, but default to PM4 if it is and convert to uppercase\r\nVERSION=\"${VERSION:-PM4}\"\r\nVERSION=\"${VERSION^^}\"\r\n\r\n# Helper functions\r\n\r\ndownload_php_binary() {\r\n printf \"Downloading latest PHP %s binary for %s\\n\" \"$REQUIRED_PHP_VERSION\" \"$VERSION\"\r\n curl --location --progress-bar https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/php-\"$REQUIRED_PHP_VERSION\"-latest\/PHP-Linux-x86_64-\"$VERSION\".tar.gz | tar -xzv\r\n}\r\n\r\nset_php_extension_dir() {\r\n printf \"Configuring php.ini\\n\"\r\n EXTENSION_DIR=$(find \"bin\" -name '*debug-zts*')\r\n grep -q '^extension_dir' bin\/php7\/bin\/php.ini && sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cach\/balls\r\n mkdir -p \/mnt\/server\/build_cach\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat <>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < Date: Thu, 18 May 2023 02:49:13 -0700 Subject: [PATCH 063/251] Secrets of Gloomrot Update - Adds support for new settings in ServerHostSettings.json, including: ListOnSteam, ListOnEOS, CompressSaveFiles, and API Enabled. - Changes stop command to accommodate latest Wings version by force-stopping the server. This is not ideal, but utilizing the current image with `eval` OR `exec` (I tested it) still does not seem to pass the SIGINT correctly (or maybe it does and WINE just doesn't listen; I don't know). - Improved [SYSTEM] startup parameters. - Updated the install script to check for successful installation and use the default ServerHostSettings.json that ships with the server. --- .../v_rising_vanilla/egg-v-rising.json | 56 ++++++++++++++----- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json b/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json index e06cdbbc..2c45be00 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_vanilla/egg-v-rising.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-13T12:18:05+01:00", + "exported_at": "2023-05-18T09:31:34+00:00", "name": "V Rising", "author": "rehlmgaming@gmail.com", "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", @@ -17,14 +17,14 @@ "file_denylist": [], "startup": "wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", "config": { - "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnMasterServer\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.LIST_STEAM}}\",\r\n \"ListOnEOS\": \"{{server.build.env.LIST_EOS}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"CompressSaveFiles\": \"{{server.build.env.COMPRESS_SAVES}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"API.Enabled\": \"{{server.build.env.ENABLE_API}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2023\/05\/18\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Install required packages.\r\napt -y update && apt -y --no-install-recommends install dos2unix\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings\r\n# Check for successful installation.\r\ncd $HOME\/VRisingServer_Data\/StreamingAssets\/Settings\r\nif [[ -f ServerHostSettings.json ]]; then\r\n # Copies default ServerHostSettings file to save-data directory.\r\n # Also converts the contents to use Unix newlines so Ptero's JSON parser does not fail.\r\n dos2unix -n ServerHostSettings.json $HOME\/save-data\/Settings\/ServerHostSettings.json\r\nelse\r\n echo -e \"\\n\\nSteamCMD failed to install the V Rising Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\necho -e \"\\nV Rising Dedicated Server successfully installed!\\n\"", "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "\/bin\/bash" } @@ -141,9 +141,19 @@ "field_type": "text" }, { - "name": "List On Master Server", - "description": "Set to true to list on the server list, else set to false.", - "env_variable": "SERVER_LIST", + "name": "List On Steam", + "description": "Set to true to list on the Steam server list, else set to false.", + "env_variable": "LIST_STEAM", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "List On Epic", + "description": "Set to true to list on the Epic Online Services server list, else set to false.", + "env_variable": "LIST_EOS", "default_value": "true", "user_viewable": true, "user_editable": true, @@ -170,6 +180,26 @@ "rules": "required|integer|min:1", "field_type": "text" }, + { + "name": "[Advanced] Compress Save Files", + "description": "Set to true to compress world save files, else set to false.", + "env_variable": "COMPRESS_SAVES", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] Enable API", + "description": "Set to true to allow responses to public API requests to the server, else set to false.", + "env_variable": "ENABLE_API", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "[Advanced] Enable RCON", "description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon", @@ -252,32 +282,32 @@ }, { "name": "[SYSTEM] WINEDEBUG", - "description": "don't change", + "description": "Used to suppress WINE FIXME messages. Rarely needs to be changed.", "env_variable": "WINEDEBUG", "default_value": "-all", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20", + "rules": "required|string", "field_type": "text" }, { "name": "[SYSTEM] WINEARCH", - "description": "don't change", + "description": "Used for compatibility. Cannot be changed.", "env_variable": "WINEARCH", "default_value": "win64", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20", + "rules": "required|string|in:win64", "field_type": "text" }, { "name": "[SYSTEM] WINEPATH", - "description": "don't change", + "description": "Used for compatibility. Cannot be changed.", "env_variable": "WINEPATH", "default_value": "\/home\/container", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20", + "rules": "required|string|in:\/home\/container", "field_type": "text" } ] From 05608e2d6a230c58b1f667dbc6ac515a09f4d40c Mon Sep 17 00:00:00 2001 From: Dancebunny98 <37336183+Dancbeunny98@users.noreply.github.com> Date: Fri, 19 May 2023 18:45:01 +0300 Subject: [PATCH 064/251] Update egg-node-js-generic.json (#2256) Generic nodejs: add nodejs 19 docker image --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- generic/nodejs/egg-node-js-generic.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index 5b5dc27e..fab9c874 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,12 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-27T20:19:13+01:00", + "exported_at": "2023-05-19T17:43:09+02:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", "features": null, "docker_images": { + "ghcr.io\/parkervcp\/yolks:nodejs_19": "ghcr.io\/parkervcp\/yolks:nodejs_19", "ghcr.io\/parkervcp\/yolks:nodejs_18": "ghcr.io\/parkervcp\/yolks:nodejs_18", "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17", "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16", From ff993f5fcb553f8d24dafe119f55f1eb6d5325f2 Mon Sep 17 00:00:00 2001 From: O1LER <44237025+O1LER@users.noreply.github.com> Date: Fri, 19 May 2023 17:51:40 +0200 Subject: [PATCH 065/251] Update beamMP server egg (#2255) * Update beamMP server egg Added variables for server description and chat toggle Updated variable "private" to accept only "true" or "false" string Updated variable "max cars" to accept numbers up to 10 Updated the install script section Corrected a typo, renamed chat logging Used same default description as beamMP --- .../beamng/beammp/egg-beam-m-p-server.json | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/game_eggs/beamng/beammp/egg-beam-m-p-server.json b/game_eggs/beamng/beammp/egg-beam-m-p-server.json index f6e282e3..4d61e0ec 100644 --- a/game_eggs/beamng/beammp/egg-beam-m-p-server.json +++ b/game_eggs/beamng/beammp/egg-beam-m-p-server.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-24T22:19:45+01:00", + "exported_at": "2023-05-14T18:49:02+02:00", "name": "BeamMP Servers", "author": "noah@noahserver.online", "description": "This is the server for the multiplayer mod BeamMP for the game BeamNG.drive. The server is the point through which all clients communicate. You can write lua mods for the server, detailed instructions on the BeamMP Wiki.", @@ -15,14 +15,14 @@ "file_denylist": [], "startup": ".\/BeamMP-Server", "config": { - "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.NAME}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"ServerConfig.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Name =\": \"Name = \\\"{{env.NAME}}\\\"\",\r\n \"Port =\": \"Port = {{server.build.default.port}}\",\r\n \"AuthKey =\": \"AuthKey = \\\"{{env.AUTHKEY}}\\\"\",\r\n \"Private =\": \"Private = {{env.PRIVATE}}\",\r\n \"MaxPlayers =\": \"MaxPlayers = {{server.build.env.MAX_PLAYERS}}\",\r\n \"Description =\": \"Description = \\\"{{env.DESCRIPTION}}\\\"\",\r\n \"MaxCars =\": \"MaxCars = {{env.MAX_CARS}}\",\r\n \"Map =\": \"Map = \\\"{{env.MAP}}\\\"\",\r\n \"LogChat =\": \"LogChat = \\\"{{env.LOGCHAT}}\\\"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"[INFO] Vehicle data network online\"\r\n}", "logs": "{}", "stop": "exit" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux | head -1)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"[HTTP]\r\n# Recommended to keep enabled. With SSL the server will serve https and requires valid key and cert files\r\nUseSSL = true\r\n# Enables the internal HTTP server\r\nHTTPServerEnabled = false\r\nSSLKeyPath = \\\".\/.ssl\/HttpServer\/key.pem\\\"\r\nHTTPServerPort = 8080\r\nSSLCertPath = \\\".\/.ssl\/HttpServer\/cert.pem\\\"\r\n\r\n[General]\r\n# If SendErrors is `true`, the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to `false`\r\nSendErrorsShowMessage = true\r\nName = \\\"BeamMP Server\\\"\r\nPort = 30814\r\nResourceFolder = \\\"Resources\\\"\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = \\\"\\\"\r\nPrivate = true\r\nMaxPlayers = 10\r\nDebug = false\r\nDescription = \\\"BeamMP Default Description\\\"\r\nMaxCars = 1\r\nMap = \\\"\/levels\/gridmap_v2\/info.json\\\"\r\n# You can turn on\/off the SendErrors message you get on startup here\r\nSendErrors = true\" > ServerConfig.toml\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n#Remove any old versions\r\nrm -f BeamMP-Server\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/BeamMP\/BeamMP-Server\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n echo -e \"Using latest BeamMP server version\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i \"${MATCH}\" | head -1)\r\nelse\r\n echo -e \"Chosen version :${VERSION}. Verifying version from releases\"\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i \"${MATCH}\" | head -1)\r\n else\r\n echo -e \"No valid versions found. Defaulting to the latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i Server-linux | head -1)\r\n fi\r\nfi\r\n\r\n#Download the BeamMP server binary\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\"\r\ncurl -sSL ${DOWNLOAD_URL} -o BeamMP-Server\r\nchmod +x BeamMP-Server\r\n\r\n#Create a default configuration file\r\necho \"[HTTP]\r\n# Recommended to keep enabled. With SSL the server will serve https and requires valid key and cert files\r\nUseSSL = true\r\n# Enables the internal HTTP server\r\nHTTPServerEnabled = false\r\nSSLKeyPath = \\\".\/.ssl\/HttpServer\/key.pem\\\"\r\nHTTPServerPort = 8080\r\nSSLCertPath = \\\".\/.ssl\/HttpServer\/cert.pem\\\"\r\n\r\n[General]\r\n# If SendErrors is `true`, the server will send helpful info about crashes and other issues back to the BeamMP developers. This info may include your config, who is on your server at the time of the error, and similar general information. This kind of data is vital in helping us diagnose and fix issues faster. This has no impact on server performance. You can opt-out of this system by setting this to `false`\r\nSendErrorsShowMessage = true\r\nName = \\\"BeamMP Server\\\"\r\nPort = 30814\r\nResourceFolder = \\\"Resources\\\"\r\n# AuthKey has to be filled out in order to run the server\r\nAuthKey = \\\"\\\"\r\nPrivate = true\r\nMaxPlayers = 10\r\nDebug = false\r\nLogChat = true\r\nDescription = \\\"BeamMP Default Description\\\"\r\nMaxCars = 1\r\nMap = \\\"\/levels\/gridmap_v2\/info.json\\\"\r\n# You can turn on\/off the SendErrors message you get on startup here\r\nSendErrors = true\" > ServerConfig.toml\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -35,7 +35,17 @@ "default_value": "BeamMP Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64", + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Sets the server description", + "env_variable": "DESCRIPTION", + "default_value": "BeamMP Default Description", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", "field_type": "text" }, { @@ -75,7 +85,7 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|in:true,false", "field_type": "text" }, { @@ -85,7 +95,7 @@ "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "required|integer|max:4", + "rules": "required|integer|max:10", "field_type": "text" }, { @@ -98,6 +108,16 @@ "rules": "required|string|max:64", "field_type": "text" }, + { + "name": "Chat logging", + "description": "Enable chat logging by the server", + "env_variable": "LOGCHAT", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "Match", "description": "The match we have to do on there github package.\r\n\r\nCurrently, they have a special build for debian 11, what is the docker image we use.\r\nGo to https:\/\/github.com\/BeamMP\/BeamMP-Server\/releases if the version you want has an asset \"debian\" then select \"Server-debian\" if not then \"Server-linux\"", @@ -109,4 +129,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 564d9ca80ab0c5a472d698d27b2e9826938c3b1a Mon Sep 17 00:00:00 2001 From: oliver408i <75344601+oliver408i@users.noreply.github.com> Date: Sat, 20 May 2023 20:18:07 -0700 Subject: [PATCH 066/251] Update egg-subnautica.json Fixes issue with Subnautica 2.0 that downloads latest instead of legacy branch that Nitrox needs --- .../subnautica_nitrox_mod/egg-subnautica.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json index 6ff877ef..cf2663ca 100644 --- a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json +++ b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n#latest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\n#if [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n# DL_VERSION=$latest_NitroxMod\r\n#else\r\n# DL_VERSION=${NITROX_VERSION}\r\n#fi\r\n\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL $DOWNLOAD_URL -o Nitrox.zip\r\nunzip $HOME\/nitrox\/Nitrox.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n## Create mono registry entry for Subnautica Install-Dir. Needed for versions since 1.6.0\r\nmkdir -p $HOME\/.mono\/registry\/CurrentUser\r\n cat < $HOME\/.mono\/registry\/CurrentUser\/values.xml\r\n \r\n \/home\/container\/subnautica<\/value>\r\n <\/values>\r\nEOT\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n#latest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\n#if [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n# DL_VERSION=$latest_NitroxMod\r\n#else\r\n# DL_VERSION=${NITROX_VERSION}\r\n#fi\r\n\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} -beta legacy ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL $DOWNLOAD_URL -o Nitrox.zip\r\nunzip $HOME\/nitrox\/Nitrox.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n## Create mono registry entry for Subnautica Install-Dir. Needed for versions since 1.6.0\r\nmkdir -p $HOME\/.mono\/registry\/CurrentUser\r\n cat < $HOME\/.mono\/registry\/CurrentUser\/values.xml\r\n \r\n \/home\/container\/subnautica<\/value>\r\n <\/values>\r\nEOT\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -148,4 +148,4 @@ "rules": "required|string|in:PROTOBUF,JSON" } ] -} \ No newline at end of file +} From 1112cc845043c8564633618cabcc12359fcec2bf Mon Sep 17 00:00:00 2001 From: oliver408i <75344601+oliver408i@users.noreply.github.com> Date: Sun, 21 May 2023 10:02:07 -0700 Subject: [PATCH 067/251] Update egg-subnautica.json --- .../subnautica_nitrox_mod/egg-subnautica.json | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json index cf2663ca..037eb5ab 100644 --- a/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json +++ b/game_eggs/steamcmd_servers/subnautica_nitrox_mod/egg-subnautica.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-04-23T15:20:19+02:00", + "exported_at": "2023-05-21T09:59:37-07:00", "name": "Subnautica", "author": "tueye@tuworld.de", - "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.5.0.0 is required", + "description": "Subnautica is an open world survival action-adventure video game developed and published by Unknown Worlds Entertainment. In it, players are free to explore the ocean on an alien planet, known as planet 4546B, after their spaceship, the Aurora, crashes on the planet's surface.\r\n\r\nNote: NitroxMod version >=1.7.0.0 is required", "features": [ "steam_disk_space" ], - "images": [ - "ghcr.io\/parkervcp\/yolks:mono_latest" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest" + }, "file_denylist": [], "startup": "mono .\/nitrox\/NitroxServer-Subnautica.exe", "config": { @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n#latest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\n#if [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n# DL_VERSION=$latest_NitroxMod\r\n#else\r\n# DL_VERSION=${NITROX_VERSION}\r\n#fi\r\n\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} -beta legacy ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL $DOWNLOAD_URL -o Nitrox.zip\r\nunzip $HOME\/nitrox\/Nitrox.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n## Create mono registry entry for Subnautica Install-Dir. Needed for versions since 1.6.0\r\nmkdir -p $HOME\/.mono\/registry\/CurrentUser\r\n cat < $HOME\/.mono\/registry\/CurrentUser\/values.xml\r\n \r\n \/home\/container\/subnautica<\/value>\r\n <\/values>\r\nEOT\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", + "script": "#!\/bin\/bash\r\n# Installation Script\r\n#\r\n# Install dependencies\r\ndpkg --add-architecture i386\r\napt update\r\napt -y --no-install-recommends install curl jq unzip libstdc++6 ca-certificates libsdl2-2.0-0:i386\r\n\r\n## Get latest Nitrox-Mod build\r\n#latest_NitroxMod=$(curl --silent \"https:\/\/api.github.com\/repos\/SubnauticaNitrox\/Nitrox\/releases\/latest\" | grep '\"tag_name\":' | sed -E 's\/.*\"([^\"]+)\".*\/\\1\/')\r\n\r\n#if [ -z \"${NITROX_VERSION}\" ] || [ \"${NITROX_VERSION}\" == \"latest\" ]; then\r\n# DL_VERSION=$latest_NitroxMod\r\n#else\r\n# DL_VERSION=${NITROX_VERSION}\r\n#fi\r\n\r\n## get release info and download links\r\nGITHUB_PACKAGE=\"SubnauticaNitrox\/Nitrox\"\r\nVERSION=${NITROX_VERSION}\r\nMATCH=\"Nitrox\"\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## Install game using steamcmd\r\nGUARDCODE=\"${STEAM_GUARDCODE}\"\r\nif [ -z $GUARDCODE ]\r\nthen\r\n echo \"\"\r\n echo \"### You did not specify a Steam Guardcode\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n timeout 60 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n[ ! -d \"$HOME\/subnautica\" ] && mkdir $HOME\/subnautica\r\n.\/steamcmd.sh +set_steam_guard_code ${STEAM_GUARDCODE} +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +@sSteamCmdForcePlatformType windows +force_install_dir $HOME\/subnautica +app_update ${APPID} ${EXTRA_FLAGS} validate +quit\r\nstatus=$?\r\n\r\nif [ $status -ne 0 ]\r\nthen\r\n echo \"\"\r\n echo \"### The Download was not successful\"\r\n echo \"### Probably the entered Guardcode was wrong\"\r\n echo \"### A new one should be send to you shortly\"\r\n echo \"### Enter it in the startup-config after this installation is finished and reinstall the Server\"\r\n sleep 10\r\n sleep 10\r\n timeout 30 .\/steamcmd.sh +login ${STEAM_USERNAME} ${STEAM_PASSWORD} +quit\r\n exit 1\r\nfi\r\n\r\n\r\n## set up 32 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## Download and extract Nitrox\r\n[ -d \"$HOME\/nitrox\" ] && rm -r $HOME\/nitrox\r\nmkdir $HOME\/nitrox\r\ncd $HOME\/nitrox\r\ncurl -sL $DOWNLOAD_URL -o Nitrox.zip\r\nunzip $HOME\/nitrox\/Nitrox.zip\r\n\r\n\r\n## Create path files to Subnautica Install-Dir. Needed for versions pre 1.6.0\r\necho \"\/home\/container\/subnautica\" > $HOME\/path.txt\r\n\r\n## Create mono registry entry for Subnautica Install-Dir. Needed for versions since 1.6.0\r\nmkdir -p $HOME\/.mono\/registry\/CurrentUser\r\n cat < $HOME\/.mono\/registry\/CurrentUser\/values.xml\r\n \r\n \/home\/container\/subnautica<\/value>\r\n <\/values>\r\nEOT\r\n\r\n\r\n## Create config\r\nif [ -e $HOME\/server.cfg ]; then\r\n echo \"server settings exists\"\r\nelse\r\n echo \"writing server default settings\"\r\n cat < $HOME\/server.cfg\r\n # Server settings can be changed here\r\n # Set to true to Cache entities for the whole map on next run. \r\n # WARNING! Will make server load take longer on the cache run but players will gain a performance boost when entering new areas.\r\n CreateFullEntityCache=False\r\n # Leave blank for a random spawn position\r\n Seed=\r\n ServerPort=11000\r\n # Measured in milliseconds\r\n SaveInterval=120000\r\n # Command to run following a successful world save (e.g. .exe, .bat, or PowerShell script). \r\n PostSaveCommandPath=\r\n MaxConnections=100\r\n InitialSyncTimeout=300000\r\n DisableConsole=False\r\n DisableAutoSave=False\r\n SaveName=world\r\n ServerPassword=\r\n AdminPassword=PleaseChangeMe\r\n # Possible values: SURVIVAL, FREEDOM, HARDCORE, CREATIVE\r\n GameMode=SURVIVAL\r\n # Possible values: PROTOBUF, JSON\r\n SerializerMode=JSON\r\n # Possible values: NONE, PLAYER, MODERATOR, ADMIN, CONSOLE\r\n DefaultPlayerPerm=PLAYER\r\n #\r\n # Default player stats below here\r\n DefaultOxygenValue=45\r\n DefaultMaxOxygenValue=45\r\n DefaultHealthValue=80\r\n DefaultHungerValue=50.5\r\n DefaultThirstValue=90.5\r\n # Recommended to keep at 0.1f which is the default starting value. If set to 0 then new players are cured by default.\r\n DefaultInfectionValue=0.1\r\n # If set to true, the server will try to open port on your router via UPnP\r\n AutoPortForward=False\r\nEOT\r\nfi", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -37,7 +37,8 @@ "default_value": "264710", "user_viewable": false, "user_editable": false, - "rules": "required|numeric|digits_between:1,6" + "rules": "required|numeric|digits_between:1,6", + "field_type": "text" }, { "name": "Steam-Username", @@ -46,7 +47,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64" + "rules": "required|string|max:64", + "field_type": "text" }, { "name": "Steam-Password", @@ -55,7 +57,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64" + "rules": "required|string|max:64", + "field_type": "text" }, { "name": "Steam-GuardCode", @@ -64,7 +67,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:6" + "rules": "nullable|string|max:6", + "field_type": "text" }, { "name": "Nitrox Version", @@ -73,7 +77,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|between:3,12" + "rules": "required|string|between:3,12", + "field_type": "text" }, { "name": "Auto Save Interval", @@ -82,7 +87,8 @@ "default_value": "120000", "user_viewable": true, "user_editable": true, - "rules": "required|numeric|digits_between:6,7" + "rules": "required|numeric|digits_between:6,7", + "field_type": "text" }, { "name": "Disable Auto Save", @@ -91,7 +97,8 @@ "default_value": "False", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:True,False" + "rules": "required|string|in:True,False", + "field_type": "text" }, { "name": "Save Name", @@ -100,7 +107,8 @@ "default_value": "world", "user_viewable": true, "user_editable": true, - "rules": "alpha_dash|between:1,100" + "rules": "alpha_dash|between:1,100", + "field_type": "text" }, { "name": "Server Password", @@ -109,7 +117,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|between:3,12" + "rules": "nullable|string|between:3,12", + "field_type": "text" }, { "name": "Admin Password", @@ -118,7 +127,8 @@ "default_value": "PleaseChangeMe", "user_viewable": true, "user_editable": true, - "rules": "required|string|between:3,16" + "rules": "required|string|between:3,16", + "field_type": "text" }, { "name": "Game Mode", @@ -127,7 +137,8 @@ "default_value": "SURVIVAL", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE" + "rules": "required|string|in:SURVIVAL,FREEDOM,HARDCORE,CREATIVE", + "field_type": "text" }, { "name": "Auto Portforward via UPnP", @@ -136,7 +147,8 @@ "default_value": "False", "user_viewable": false, "user_editable": false, - "rules": "required|string|in:True,False" + "rules": "required|string|in:True,False", + "field_type": "text" }, { "name": "Serializer Mode", @@ -145,7 +157,18 @@ "default_value": "JSON", "user_viewable": false, "user_editable": false, - "rules": "required|string|in:PROTOBUF,JSON" + "rules": "required|string|in:PROTOBUF,JSON", + "field_type": "text" + }, + { + "name": "Extra Flags", + "description": "Extra flags for steamcmd download. Do not edit", + "env_variable": "EXTRA_FLAGS", + "default_value": "-beta legacy", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" } ] } From 3776bcb7da2001f69986810d2bda9c2ac2409134 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Wed, 24 May 2023 20:08:46 +0300 Subject: [PATCH 068/251] Added the *Installation/System Requirements* part --- example/README.md | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/example/README.md b/example/README.md index 5b9852aa..4174b9b7 100644 --- a/example/README.md +++ b/example/README.md @@ -18,17 +18,16 @@ The description of the server usually provided by the game/server maker. Due to rate limiting the console on the panel, it cannot keep up with the game console and the build will complete before the panel console may show it. Reloading the console will load it to the latest part of the log. -## Minimum RAM warning - -Minimum required memory to run the server. - - -## Minumim Sorage warning - -Minimum required storage to run the server. - - - +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | *Main info (32/64 bit or ARM support)* | *More info about egg's preferred processor* | +| RAM | *Minimum amount of RAM* | *Recommended amount of RAM* | +| Storage | *Minimum amount of Storage* | *Recommended amount of Storage* | +| Network | *Minimum network speed* | *Recommended network speed* | +| Host OS | *What will just run it?* | *Is there a kernel or a distro that will run it better?* | +| Game Ownership | *Can the server start without it?* | *Is it needed for any other features?* | ## Server Ports From a9b5e38253ec70a8ad8506bdc4e24a02763d2f16 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Wed, 24 May 2023 20:22:42 +0300 Subject: [PATCH 069/251] upd --- example/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/example/README.md b/example/README.md index 4174b9b7..c988bac2 100644 --- a/example/README.md +++ b/example/README.md @@ -23,9 +23,9 @@ Due to rate limiting the console on the panel, it cannot keep up with the game c | | Bare Minimum | Recommended | |---------|---------|---------| | Processor | *Main info (32/64 bit or ARM support)* | *More info about egg's preferred processor* | -| RAM | *Minimum amount of RAM* | *Recommended amount of RAM* | -| Storage | *Minimum amount of Storage* | *Recommended amount of Storage* | -| Network | *Minimum network speed* | *Recommended network speed* | +| RAM | *Minimum amount of RAM (in MiB/GiB)* | *Recommended amount of RAM (in MiB/GiB)* | +| Storage | *Minimum amount of Storage (in MiB/GiB)* | *Recommended amount of Storage (in MiB/GiB)* | +| Network | *Minimum network speed (in Mbit/s)* | *Recommended network speed (in Mbit/s)* | | Host OS | *What will just run it?* | *Is there a kernel or a distro that will run it better?* | | Game Ownership | *Can the server start without it?* | *Is it needed for any other features?* | From 0539efcda12ce5a6ea1331246005a2038d45d74d Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Wed, 24 May 2023 20:27:33 +0300 Subject: [PATCH 070/251] Remove Host OS --- example/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/example/README.md b/example/README.md index c988bac2..2052e637 100644 --- a/example/README.md +++ b/example/README.md @@ -26,7 +26,6 @@ Due to rate limiting the console on the panel, it cannot keep up with the game c | RAM | *Minimum amount of RAM (in MiB/GiB)* | *Recommended amount of RAM (in MiB/GiB)* | | Storage | *Minimum amount of Storage (in MiB/GiB)* | *Recommended amount of Storage (in MiB/GiB)* | | Network | *Minimum network speed (in Mbit/s)* | *Recommended network speed (in Mbit/s)* | -| Host OS | *What will just run it?* | *Is there a kernel or a distro that will run it better?* | | Game Ownership | *Can the server start without it?* | *Is it needed for any other features?* | ## Server Ports From 15e67e8fa43f5547a5a97104a40b7aaa2fbbdd94 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Wed, 24 May 2023 19:56:50 -0700 Subject: [PATCH 071/251] Add Ground Branch egg - Adds Ground Branch egg and README. - Updates all directory READMEs to include it (and even fixes some missing entries that surrounded it). --- README.md | 1 + game_eggs/README.md | 2 + game_eggs/steamcmd_servers/README.md | 8 ++ .../steamcmd_servers/ground_branch/README.md | 98 +++++++++++++ .../ground_branch/egg-ground-branch.json | 132 ++++++++++++++++++ 5 files changed, 241 insertions(+) create mode 100644 game_eggs/steamcmd_servers/ground_branch/README.md create mode 100644 game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json diff --git a/README.md b/README.md index 5e782063..b7457599 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Empyrion - Galactic Survival](game_eggs/steamcmd_servers/empyrion) * [Fistful of Frags](game_eggs/steamcmd_servers/fof) * [Frozen Flame](game_eggs/steamcmd_servers/frozen_flame) +* [Ground Branch](game_eggs/steamcmd_servers/ground_branch) * [HLDS Server](game_eggs/steamcmd_servers/hlds_server) * [HLDS Vanilla](game_eggs/steamcmd_servers/hlds_server/vanilla) * [ReHLDS](game_eggs/steamcmd_servers/hlds_server/rehlds) diff --git a/game_eggs/README.md b/game_eggs/README.md index 978c5961..36cfbd74 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -132,6 +132,8 @@ * [ECO](steamcmd_servers/eco) * [Empyrion - Galactic Survival](steamcmd_servers/empyrion) * [Fistful of Frags](steamcmd_servers/fof) +* [Frozen Flame](steamcmd_servers/frozen_flame) +* [Ground Branch](steamcmd_servers/ground_branch) * [HLDS Server](steamcmd_servers/hlds_server) * [HLDS Vanilla](steamcmd_servers/hlds_server/vanilla) * [ReHLDS](steamcmd_servers/hlds_server/rehlds) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index b338a27c..21c91f25 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -68,10 +68,18 @@ This is a collection of servers that use SteamCMD to install. [Empyrion - Galactic Survival](empyrion) +## Fistful of Frags + +[Fistful of Frags](fof) + ## Frozen Flame [Frozen Flame](frozen_flame) +## Ground Branch + +[Ground Branch](ground_branch) + ## HLDS Server [HLDS Server](hlds_server) diff --git a/game_eggs/steamcmd_servers/ground_branch/README.md b/game_eggs/steamcmd_servers/ground_branch/README.md new file mode 100644 index 00000000..0a681074 --- /dev/null +++ b/game_eggs/steamcmd_servers/ground_branch/README.md @@ -0,0 +1,98 @@ +# Ground Branch + +***NOTE: Game and server are still Early Access. Your mileage may vary as updates are released.*** +___ + +### Authors / Contributors + + + + + + + +
+ +
Red-Thirten +
+
+ + 💻 + 🔨 +
+ + + +___ + +### Game Description + +From BlackFoot Studios' [Website](https://www.groundbranch.com/): +> From one of the developers behind the original Rainbow Six® and Ghost Recon® games, comes a thinking-man's first-person shooter featuring in-depth character and weapon customization. Take your time. Think ahead. Get the job done. + +___ + +### Egg Capabilities + +- Configuration of the Server Query port. +- Configurable to automatically check for server updates on start via SteamCMD. Forcing validation is also configurable. +- Mods have not been explored at this time (see [Modding](#modding) for more info) + +___ + +### Server Ports + +- Default server ports are listed below, but both ports can be changed freely. +- ***Both ports are required to be open/allocated for normal server behavior!*** + +| Port | Default (UDP) | +|---------|---------| +| **Game (Primary Port in Pterodactyl)** | 7777 | +| Server Query | 27015 | + +___ + +### Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | No ARM support. | Recent x86/64 (AMD/Intel) processor. | +| RAM | 550 MiB | 1024-4096 MiB | +| Storage | 5632 MiB | 7168 MiB | +| Network | 3 MiB/s | 7 MiB/s | +| Game Ownership | Not required to start. | Recommended to fully configure server (see [Server Configuration](#server-configuration) below) | + +___ + +### Server Configuration + +**NOTE: Server Name and Max Players will be overwritten by your Pterodactyl Startup settings every time the server is started.** + +#### In-Game Setup (Recommended): + +Configuring all aspects of the server (MOTD, game rules, map list, admins, etc.) is, by far, the easiest (and safest) to do in-game via the built in admin menu. Perform the following steps to do so: + +1. Start the server. +2. Navigate to `/home/container/GroundBranch/ServerConfig` within Pterodactyl's file browser and open `AdminSetupPassword.txt`. +3. Copy the code and start your personal Ground Branch game client. +4. Log into your server via the server browser by searching for it by the name you set in the Startup tab of the server. +5. Open the console by pressing `` ` `` and run the following command: `admin setup `. This will add you as a SuperAdmin. +6. Running the command `admin` will open the Admin Menu where you can configure everything about the server. + +#### Manual Setup (Advanced): + +All configuration files for the server can be found here: `/home/container/GroundBranch/ServerConfig` + +Please refer to the [Unofficial Ground Branch Wiki](https://unofficialgroundbranchwiki.com/en/dedicated-servers/getting-started) for configuration info. + +___ + +### Modding + +Modding has not been adequately explored at this time. If you have information on modding you would like to share, please submit a PR to update this README. + +What is currently known about modding: + +- The server seems to automatically look at the following directory for any available mods to load: `/home/workshop/content/16900/` +- This directory is un-accessible to Pterodactyl end-users, and I am unaware of a way to point the server to look in a different directory for mods. +- However, you may be able to set up a mount to this directory with mods in SteamCMD format. diff --git a/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json new file mode 100644 index 00000000..f8534e13 --- /dev/null +++ b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json @@ -0,0 +1,132 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-05-25T02:52:19+00:00", + "name": "Ground Branch", + "author": "rehlmgaming@gmail.com", + "description": "From one of the developers behind the original Rainbow Six\u00ae and Ghost Recon\u00ae games, comes a thinking-man's first-person shooter featuring in-depth character and weapon customization. Take your time. Think ahead. Get the job done.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "wine GroundBranch\/Binaries\/Win64\/GroundBranchServer-Win64-Shipping.exe MultiHome=0.0.0.0 Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -log", + "config": { + "files": "{\r\n \"GroundBranch\/ServerConfig\/Server.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName=\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Bringing up level for play took\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Ground Branch Egg - egg-ground-branch.json\r\n## Authors: David Wolfe (Red-Thirten)\r\n## Date: 2023\/05\/24\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Ground Branch setup\r\n# Make ServerConfig directory and default Server.ini file (since they are not initially present before first server start)\r\nmkdir -p $HOME\/GroundBranch\/ServerConfig\/ && cd \"$_\"\r\n\r\nif [[ ! -f Server.ini ]]; then\r\n echo -e '\\nCreating default \"Server.ini\" configuration file...'\r\n cat > Server.ini << EOF\r\n[\/Script\/RBZooKeeper.ZKServer]\r\n; Name of the server 64 characters max)\r\nServerName=Unnamed Ground Branch Server\r\n\r\n; The message of the day (512 characters max)\r\n; e.g. ServerMOTD=This text here is displayed
with the 'admin motd' command.\r\nServerMOTD=\"Welcome!\"\r\n\r\n; Set to a jpg image to act as a server banner in-game where possible.\r\n; (recommended resolution: 788 x 386)\r\nServerWebBanner=\"\"\r\n; e.g. ServerWebPage=www.images.com\/myimage.jpeg\r\n\r\n; Password required to join the server.\r\n;ServerPassword=\r\n\r\n; Password required to join the server as a permanent spectator.\r\n;SpectatorOnlyPassword=\r\n\r\n; Maximum number of players allowed on this server.\r\nMaxPlayers=16\r\nMaxSpectators=0\r\n\r\n; Set default match types for game modes and round limits:\r\n; Match types: Continuous, BestOf, FirstTo, Play, PlayUntilWin, TimeLimit.\r\n; Round limits = number of rounds, except Time Limit match type (minutes).\r\n; PVE \/ Co-op:\r\nPVEMatchType=Continuous\r\nPVERoundLimit=2\r\n; PVP:\r\nPVPMatchType=Continuous\r\nPVPRoundLimit=3\r\n; PVP FFA (Free-for-all):\r\nPVPFFAMatchType=Continuous\r\nPVPFFARoundLimit=1\r\nGameRules=((\"AllowCheats\", False),(\"AllowDeadChat\", True),(\"AllowUnrestrictedRadio\", False),(\"AllowUnrestrictedVoice\", False),(\"SpectateEnemies\", True),(\"SpectateForceFirstPerson\", False),(\"SpectateFreeCam\", True),(\"UseTeamRestrictions\", False))\r\nEOF\r\nfi\r\n\r\necho -e \"\\nGround Branch Dedicated Server successfully installed!\\n\"", + "container": "ghcr.io\/pterodactyl\/installers:debian", + "entrypoint": "\/bin\/bash" + } + }, + "variables": [ + { + "name": "[REQUIRED] Server Query Port", + "description": "This is the port that your clients will type in and use to connect to the lobby (not the game world). Ensure this port matches your externally forwarded port, and is distanced from other running Ground Branch servers in Pterodactyl (increments of 100 are recommended). This is also true for the Primary\/Game Port!", + "env_variable": "QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "Automatic Updates", + "description": "Quickly checks for any server updates on startup, and updates if necessary. (1 ON | 0 OFF)", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name of the server that will appear in the server list.", + "env_variable": "SERVER_NAME", + "default_value": "Unnamed Ground Branch Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:255", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Maximum number of players allowed to connect to the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "[Repair] Validate Server Files", + "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.", + "env_variable": "VALIDATE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "[System] Ground Branch Dedicated Server App ID", + "description": "Steam App ID used for installation and updates. Cannot be changed.", + "env_variable": "SRCDS_APPID", + "default_value": "476400", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:476400", + "field_type": "text" + }, + { + "name": "[System] Use Windows Branch", + "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:1", + "field_type": "text" + }, + { + "name": "[System] WINEDEBUG", + "description": "Used to suppress WINE FIXME messages. Rarely needs to be changed.", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "[System] WINEARCH", + "description": "Used for compatibility. Cannot be changed.", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:win64", + "field_type": "text" + }, + { + "name": "[System] WINEPATH", + "description": "Used for compatibility. Cannot be changed.", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:\/home\/container", + "field_type": "text" + } + ] +} \ No newline at end of file From 66f418cfb6ac624b2f42d57854f9f7cdda7c5145 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Sat, 27 May 2023 13:04:59 +0300 Subject: [PATCH 072/251] fix --- game_eggs/rimworld/open_world/egg-rimworld-open-world.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/rimworld/open_world/egg-rimworld-open-world.json b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json index b882a7da..f85b65c8 100644 --- a/game_eggs/rimworld/open_world/egg-rimworld-open-world.json +++ b/game_eggs/rimworld/open_world/egg-rimworld-open-world.json @@ -4,10 +4,10 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-01T11:19:44+02:00", + "exported_at": "2023-05-27T13:03:41+03:00", "name": "Rimworld: Open World", "author": "kyle@williquette.us", - "description": "The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!\r\n\r\nhttps:\/\/github.com\/mypassowordisntweak\/OpenWorld", + "description": "The Open World mod allows you to create and join servers to play with people all around the world, it introduces plenty of new features including trading, gifting, bartering, PvP and so much more!\r\n\r\nhttps:\/\/github.com\/D12-Dev\/OpenWorld", "features": null, "docker_images": { "Dotnet 3.1": "ghcr.io\/parkervcp\/yolks:dotnet_3.1", @@ -23,7 +23,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\napt update\r\napt -y install curl jq unzip git\r\n\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/mypassowordisntweak\/OpenWorld\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/mypassowordisntweak\/OpenWorld\/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH} | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${ARCH} | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH}| head -1)\r\n fi\r\nfi\r\n\r\n\r\n#Download the Rimworld Open World server\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\"\r\ncurl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\r\necho -e \"Unzipping ${ARCH}.zip\"\r\nunzip -o ${ARCH}.zip\r\nmv ${ARCH}\/* \/mnt\/server\r\nchmod +x \"OpenWorldServer\"\r\nrm -rf ${ARCH}.zip ${ARCH}\/\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nFILE=\/mnt\/server\/Data\/Config.json\r\nif [ -f \"$FILE\" ]; then\r\n echo \"config already exists.\"\r\nelse \r\n echo \"Config does not exist, making one\"\r\n mkdir -p \/mnt\/server\/Data\r\n cd \/mnt\/server\/Data\r\ncat << EOF > \"Config.json\"\r\n{\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": 25555,\r\n \"MaxPlayers\": 10,\r\n \"PlayerVersion\": \"1.2\",\r\n \"EnforceMods\": false,\r\n \"UseModBlacklist\": false,\r\n \"UseCustomDifficulty\": false,\r\n \"UseWhitelist\": false,\r\n \"AllowCustomScenarios\": false\r\n}\r\nEOF\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n\r\n#Create the server directory\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\napt update\r\napt -y install curl jq unzip git\r\n\r\n\r\n#Check for latest release & download URLs\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/D12-Dev\/OpenWorld\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/D12-Dev\/OpenWorld\/releases\")\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH} | head -1)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${ARCH} | head -1)\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${ARCH}| head -1)\r\n fi\r\nfi\r\n\r\n\r\n#Download the Rimworld Open World server\r\necho -e \"Running curl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\"\r\ncurl -sSL ${DOWNLOAD_URL} -o ${ARCH}.zip\r\necho -e \"Unzipping ${ARCH}.zip\"\r\nunzip -o ${ARCH}.zip\r\nmv ${ARCH}\/* \/mnt\/server\r\nchmod +x \"OpenWorldServer\"\r\nrm -rf ${ARCH}.zip ${ARCH}\/\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nFILE=\/mnt\/server\/Data\/Config.json\r\nif [ -f \"$FILE\" ]; then\r\n echo \"config already exists.\"\r\nelse \r\n echo \"Config does not exist, making one\"\r\n mkdir -p \/mnt\/server\/Data\r\n cd \/mnt\/server\/Data\r\ncat << EOF > \"Config.json\"\r\n{\r\n \"LocalAddress\": \"0.0.0.0\",\r\n \"ServerPort\": 25555,\r\n \"MaxPlayers\": 10,\r\n \"PlayerVersion\": \"1.2\",\r\n \"EnforceMods\": false,\r\n \"UseModBlacklist\": false,\r\n \"UseCustomDifficulty\": false,\r\n \"UseWhitelist\": false,\r\n \"AllowCustomScenarios\": false\r\n}\r\nEOF\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "debian:bullseye-slim", "entrypoint": "bash" } From 21f4994082097883874c820cdfc9d52d149bb17b Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Fri, 2 Jun 2023 19:05:34 +0200 Subject: [PATCH 073/251] Update team fortress 2 classic --- .../egg-team-fortress-2-classic.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json index 42dd6627..f89e16f2 100644 --- a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json +++ b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-24T20:50:58+10:30", + "exported_at": "2023-06-02T19:04:54+02:00", "name": "Team Fortress 2 Classic", "author": "eggs@scattergun.io", "description": "Team Fortress 2 Classic is a free mod of the 2007 game Team Fortress 2, developed by Eminoma and utilizing the Source engine.", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/yolks:games_source": "ghcr.io\/parkervcp\/yolks:games_source" + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], "startup": ".\/srcds_run -game {{SRCDS_GAME}} -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +ip 0.0.0.0 -strictportbind -norestart -debug +maxplayers {{MAXPLAYERS}}", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n## just in case someone removed the defaults.\r\napt install -y wget\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} validate +quit \r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.zip https:\/\/tf2classic.org\/tf2c\/tf2classic-${GAMEVERSION}.zip\r\n\r\nunzip -o tf2classic.zip\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.zip https:\/\/wiki.tf2classic.com\/kachemak\/tf2classic-${GAMEVERSION}.zip\r\n\r\n\r\nunzip -o tf2classic.zip\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -81,4 +81,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 2ba047325c541ca6dd89d034dea1bd61f44d61a3 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Fri, 2 Jun 2023 19:20:03 +0200 Subject: [PATCH 074/251] add support for PM5 --- .../bedrock/pocketmine_mp/egg-pocketmine-m-p.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index 9b39b2a5..b658775c 100644 --- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-18T11:08:07+02:00", + "exported_at": "2023-06-02T19:18:56+02:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"amd64\" || printf \"arm64\")\r\n\r\n# Shouldn't be possible to be empty, but default to PM4 if it is and convert to uppercase\r\nVERSION=\"${VERSION:-PM4}\"\r\nVERSION=\"${VERSION^^}\"\r\n\r\n# Helper functions\r\n\r\ndownload_php_binary() {\r\n printf \"Downloading latest PHP %s binary for %s\\n\" \"$REQUIRED_PHP_VERSION\" \"$VERSION\"\r\n curl --location --progress-bar https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/php-\"$REQUIRED_PHP_VERSION\"-latest\/PHP-Linux-x86_64-\"$VERSION\".tar.gz | tar -xzv\r\n}\r\n\r\nset_php_extension_dir() {\r\n printf \"Configuring php.ini\\n\"\r\n EXTENSION_DIR=$(find \"bin\" -name '*debug-zts*')\r\n grep -q '^extension_dir' bin\/php7\/bin\/php.ini && sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"stable\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\n# elif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n# API_CHANNEL=\"alpha\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat <>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"4\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\nelif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n API_CHANNEL=\"stable\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < Date: Fri, 2 Jun 2023 19:35:52 +0200 Subject: [PATCH 075/251] use JQ for DOWNLOAD_LINK & REQUIRED_PHP_VERSION --- .../minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json index b658775c..085229e1 100644 --- a/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json +++ b/game_eggs/minecraft/bedrock/pocketmine_mp/egg-pocketmine-m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-02T19:18:56+02:00", + "exported_at": "2023-06-02T19:34:57+02:00", "name": "PocketmineMP", "author": "info@swisscrafting.ch", "description": "Pocketmine Egg\r\nby onekintaro from swisscrafting.ch\r\nwith the nice help from #eggs Channel on Pterodactyl-Discord :)", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip\r\n\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\n\r\ncd \/mnt\/server || exit 1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && printf \"amd64\" || printf \"arm64\")\r\n\r\n# Shouldn't be possible to be empty, but default to PM5 if it is and convert to uppercase\r\nVERSION=\"${VERSION:-PM5}\"\r\nVERSION=\"${VERSION^^}\"\r\n\r\n# Helper functions\r\n\r\ndownload_php_binary() {\r\n printf \"Downloading latest PHP %s binary for %s\\n\" \"$REQUIRED_PHP_VERSION\" \"$VERSION\"\r\n curl --location --progress-bar https:\/\/github.com\/pmmp\/PHP-Binaries\/releases\/download\/php-\"$REQUIRED_PHP_VERSION\"-latest\/PHP-Linux-x86_64-\"$VERSION\".tar.gz | tar -xzv\r\n}\r\n\r\nset_php_extension_dir() {\r\n printf \"Configuring php.ini\\n\"\r\n EXTENSION_DIR=$(find \"bin\" -name '*debug-zts*')\r\n grep -q '^extension_dir' bin\/php7\/bin\/php.ini && sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin\/php7\/bin\/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" >>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'download_url' | cut -d '\"' -f 4)\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"4\"\r\n\r\n# Disabled until PM5 is released and API channels or structure are decided for PM4\/PM5\r\nelif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n API_CHANNEL=\"stable\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | grep 'php_version' | cut -d '\"' -f 4)\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat <>bin\/php7\/bin\/php.ini\r\n}\r\n\r\ndownload_pmmp() {\r\n DOWNLOAD_LINK=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | jq -r '.download_url')\r\n printf \"Downloading %s from %s\\n\" \"$VERSION\" \"${DOWNLOAD_LINK}\"\r\n curl --location --progress-bar \"${DOWNLOAD_LINK}\" --output PocketMine-MP.phar\r\n}\r\n\r\n# We have to convert VERSION into an API channel\r\nif [[ \"${VERSION}\" == \"PM4\" ]]; then\r\n API_CHANNEL=\"4\"\r\n\r\nelif [[ \"${VERSION}\" == \"PM5\" ]]; then\r\n API_CHANNEL=\"stable\"\r\nelse\r\n printf \"Unsupported version: %s\" \"${VERSION}\"\r\n exit 1\r\nfi\r\n\r\nREQUIRED_PHP_VERSION=$(curl -sSL https:\/\/update.pmmp.io\/api?channel=\"$API_CHANNEL\" | jq -r '.php_version')\r\n\r\nif [[ \"${ARCH}\" == \"amd64\" ]]; then\r\n download_php_binary\r\n\r\n# There are no ARM64 PHP binaries yet, so we have to compile them\r\nelse\r\n apt install -y make autoconf automake m4 bzip2 bison g++ cmake pkg-config re2c libtool-bin\r\n \r\n mkdir -p \/mnt\/server\/build_cache\/archives\r\n mkdir -p \/mnt\/server\/build_cache\/compilation\r\n \r\n # Each PHP version has its own compile script, so we have to download the correct one\r\n echo \"running curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\"\r\n curl --location --progress-bar --remote-name https:\/\/raw.githubusercontent.com\/pmmp\/PHP-Binaries\/php\/\"$REQUIRED_PHP_VERSION\"\/compile.sh\r\n chmod +x compile.sh\r\n\r\n cat < Date: Fri, 2 Jun 2023 20:38:20 +0200 Subject: [PATCH 076/251] add No One Survived --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 8 + .../no_one_survived/README.md | 27 +++ .../no_one_survived/egg-no-one-survived.json | 202 ++++++++++++++++++ 5 files changed, 239 insertions(+) create mode 100644 game_eggs/steamcmd_servers/no_one_survived/README.md create mode 100644 game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json diff --git a/README.md b/README.md index 5e782063..aaf64e81 100644 --- a/README.md +++ b/README.md @@ -248,6 +248,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Modiverse](game_eggs/steamcmd_servers/modiverse) * [Mordhau](game_eggs/steamcmd_servers/mordhau) * [No More Room in Hell](game_eggs/steamcmd_servers/nmrih) +* [No One Survived](game_eggs/steamcmd_servers/no_one_survived) * [Onset](game_eggs/steamcmd_servers/onset) * [Open Fortress](game_eggs/steamcmd_servers/open_fortress) * [Operation Harsh Doorstop](game_eggs/steamcmd_servers/operation_harsh_doorstop) diff --git a/game_eggs/README.md b/game_eggs/README.md index 978c5961..35ad1b40 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -146,6 +146,7 @@ * [Modiverse](steamcmd_servers/modiverse) * [Mordhau](steamcmd_servers/mordhau) * [No More Room in Hell](steamcmd_servers/nmrih) +* [No One Survived](steamcmd_servers/no_one_survived) * [Onset](steamcmd_servers/onset) * [Open Fortress](steamcmd_servers/open_fortress) * [Operation Harsh Doorstop](steamcmd_servers/operation_harsh_doorstop) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index b338a27c..555183c8 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -118,6 +118,14 @@ This is a collection of servers that use SteamCMD to install. [Mordhau](mordhau) +## No More Room in Hell + +[No More Room in Hell](nmrih) + +## No One Survived + +[No One Survived](no_one_survived) + ## Onset [Onset](onset) diff --git a/game_eggs/steamcmd_servers/no_one_survived/README.md b/game_eggs/steamcmd_servers/no_one_survived/README.md new file mode 100644 index 00000000..ecbe3de6 --- /dev/null +++ b/game_eggs/steamcmd_servers/no_one_survived/README.md @@ -0,0 +1,27 @@ +# No One Survived + +[STEAM](https://store.steampowered.com/app/1963370/No_One_Survived/) + +This is a multiplayer cooperative open world construction survival sandbox game, where you and your friends must find supplies and build shelters in this world. You have to keep an eye on your character's needs state at all times, a bad state is likely to lead to death. + +## Minimum RAM warning + +Minimum required memory to run the server. +2GB is recommended. 4GB+ is preferred + +## Minumim Sorage warning + +Minimum required storage to run the server. +3GB is recommended. + + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 5761 | +| Query | 27015 | + +Both TCP and UDP \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json new file mode 100644 index 00000000..9f4f5b7a --- /dev/null +++ b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json @@ -0,0 +1,202 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-06-02T20:29:13+02:00", + "name": "No One Survived", + "author": "josdekurk@gmail.com", + "description": "This is a multiplayer cooperative open world construction survival sandbox game, where you and your friends must find supplies and build shelters in this world. You have to keep an eye on your character's needs state at all times, a bad state is likely to lead to death.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "wine WRSHServer.exe -server -log -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}}", + "config": { + "files": "{\r\n \"WRSH\/Saved\/Config\/WindowsServer\/Engine.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"URL.Port\": \"{{server.build.default.port}}\",\r\n \"OnlineSubsystemSteam.bUseSteamNetworking\": \"{{server.build.env.STEAM_NETWORKING}}\",\r\n \"OnlineSubsystemSteam.GameServerQueryPort\": \"{{server.build.env.QUERY_PORT}}\"\r\n }\r\n },\r\n \"WRSH\/Saved\/Config\/WindowsServer\/Game.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"ServerSetting.SaveName\": \"{{server.build.env.SERVER_SAVE_NAME}}\",\r\n \"ServerSetting.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"ServerSetting.NeedPassword\": \"{{server.build.env.SERVER_NEED_PASSWORD}}\",\r\n \"ServerSetting.Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"ServerSetting.MaxPlayers\": \"{{server.build.env.SERVER_PLAYERS}}\",\r\n \"ServerSetting.NumOfZombieSpawn\": \"{{server.build.env.SERVER_NUM_ZOMBIES}}\",\r\n \"ServerSetting.Region\": \"{{server.build.env.SERVER_REGION}}\",\r\n \"ServerSetting.AdminPassword\": \"{{server.build.env.SERVER_ADMIN_PASSWORD}}\"\r\n }\r\n } \r\n}", + "startup": "{\r\n \"done\": \"ServerCreate\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Windows", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "App id", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "2329680", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:2329680", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update the server on restart", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:win64,win32", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2022 corefonts", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "", + "env_variable": "QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Steam Networking", + "description": "Enable or disable steam networking", + "env_variable": "STEAM_NETWORKING", + "default_value": "False", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:False,True", + "field_type": "text" + }, + { + "name": "Server save name", + "description": "The name of the archive, which is also the archive loaded by default.", + "env_variable": "SERVER_SAVE_NAME", + "default_value": "MySave", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_NAME", + "default_value": "Test", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Toggle server password", + "description": "True indicates that the server needs a password and False indicates that it does not need a password.", + "env_variable": "SERVER_NEED_PASSWORD", + "default_value": "False", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:False,True", + "field_type": "text" + }, + { + "name": "Server password", + "description": "The password for the server. Only works if 'Toggle server password' is set to True", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Server players", + "description": "The maximum amount of players the server can join", + "env_variable": "SERVER_PLAYERS", + "default_value": "50", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|between:1,100", + "field_type": "text" + }, + { + "name": "Number of zombies", + "description": "Number of zombies generated by the wave of corpse tide (25-100).", + "env_variable": "SERVER_NUM_ZOMBIES", + "default_value": "50", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:25,100", + "field_type": "text" + }, + { + "name": "Server region", + "description": "All = non-registered region, AF = Africa, AS = Asia, EU = Europe, NA = North America, OC = Oceania, and SA = South America.", + "env_variable": "SERVER_REGION", + "default_value": "All", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:All,AF,AS,EU,NA,OC,SA", + "field_type": "text" + }, + { + "name": "Server admin password", + "description": "Server administrator password", + "env_variable": "SERVER_ADMIN_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + } + ] +} \ No newline at end of file From 065d88be667cee6bcd6445dd9760efd17cd24a4a Mon Sep 17 00:00:00 2001 From: Elite Espeon Date: Sat, 3 Jun 2023 11:17:34 -0400 Subject: [PATCH 077/251] Add Neos VR --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 3 + game_eggs/steamcmd_servers/neosvr/README.md | 10 +++ .../steamcmd_servers/neosvr/egg-neos-v-r.json | 82 +++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 game_eggs/steamcmd_servers/neosvr/README.md create mode 100644 game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json diff --git a/README.md b/README.md index 5e782063..d5ec3f26 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Left 4 Dead 2](game_eggs/steamcmd_servers/left4dead_2) * [Modiverse](game_eggs/steamcmd_servers/modiverse) * [Mordhau](game_eggs/steamcmd_servers/mordhau) +* [Neos VR](game_eggs/steamcmd_servers/neosvr) * [No More Room in Hell](game_eggs/steamcmd_servers/nmrih) * [Onset](game_eggs/steamcmd_servers/onset) * [Open Fortress](game_eggs/steamcmd_servers/open_fortress) diff --git a/game_eggs/README.md b/game_eggs/README.md index 978c5961..e0d5bfc1 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -145,6 +145,7 @@ * [Left 4 Dead 2](steamcmd_servers/left4dead_2) * [Modiverse](steamcmd_servers/modiverse) * [Mordhau](steamcmd_servers/mordhau) +* [Neos VR](steamcmd_servers/neosvr) * [No More Room in Hell](steamcmd_servers/nmrih) * [Onset](steamcmd_servers/onset) * [Open Fortress](steamcmd_servers/open_fortress) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index b338a27c..3e9b1780 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -118,6 +118,9 @@ This is a collection of servers that use SteamCMD to install. [Mordhau](mordhau) +## Neos VR +[Neos VR](neosvr) + ## Onset [Onset](onset) diff --git a/game_eggs/steamcmd_servers/neosvr/README.md b/game_eggs/steamcmd_servers/neosvr/README.md new file mode 100644 index 00000000..0e0a49dd --- /dev/null +++ b/game_eggs/steamcmd_servers/neosvr/README.md @@ -0,0 +1,10 @@ +# Neos VR headless client +## From https://neos.com +Developing Neos, short for neo spatium - new space, a highly collaborative virtual and augmented reality metaverse. + +# Notice + +To use this egg you will need a beta code and a steam account. The account will also need to have neos vr in its library. You can do this by running app_license_request 740250 in steamcmd if you have never installed neos on this account. +For more information related to configuration go here: https://wiki.neos.com/Headless_Client/Server + +This game does not require any port forwarding, but instead uses UDP NAT hole punching (and/or relay) on a random port. You can force a certain port in the config for direct connections, but most communcation is done via NAT hole punch using LiteNetLib (LNL). \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json new file mode 100644 index 00000000..7f32ac03 --- /dev/null +++ b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-06-03T10:59:04-04:00", + "name": "NeosVR", + "author": "espeon@espeon.dev", + "description": "Neos VR is a metaverse engineered for the unknown! It\u2019s one of the most versatile and feature rich metaverses for virtual reality, designed so everybody can find something interesting or useful to do in a social setting.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "exec mono Neos.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly .\/NeosModLoaderHeadless.dll\"; fi)", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"World running...\",\r\n \"userInteraction\": []\r\n}", + "logs": "{}", + "stop": "shutdown" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\necho -e \"steam user is not set.\\n\"\r\necho -e \"Using anonymous user.\\n\"\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nelse\r\necho -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update 740250 -beta headless-client -betapassword ${BETA_PASSWORD} validate +quit\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## create default config\r\nmkdir \/mnt\/server\/Config\r\nrm -rf \/mnt\/server\/Config\/Config.json\r\ncat >> \/mnt\/server\/Config\/Config.json << EOF\r\n{\r\n\"$schema\": \"https:\/\/raw.githubusercontent.com\/Neos-Metaverse\/JSONSchemas\/main\/schemas\/NeosHeadlessConfig.schema.json\",\r\n\"universeId\": null,\r\n\"tickRate\": 60.0,\r\n\"maxConcurrentAssetTransfers\": 4,\r\n\"usernameOverride\": null,\r\n\"loginCredential\": \"\",\r\n\"loginPassword\": \"\",\r\n\"startWorlds\": [\r\n{\r\n\"isEnabled\": true,\r\n\"saveAsOwner\": null,\r\n\"autoInviteUsernames\": null,\r\n\"parentSessionIds\": null,\r\n\"autoInviteMessage\": null,\r\n\"autoRecover\": true,\r\n\"idleRestartInterval\": -1.0,\r\n\"forcedRestartInterval\": -1.0,\r\n\"saveOnExit\": false,\r\n\"autosaveInterval\": -1.0,\r\n\"autoSleep\": true,\r\n\"sessionName\": null,\r\n\"customSessionId\": null,\r\n\"description\": null,\r\n\"maxUsers\": 32,\r\n\"accessLevel\": \"Anyone\",\r\n\"hideFromPublicListing\": null,\r\n\"tags\": null,\r\n\"mobileFriendly\": false,\r\n\"loadWorldURL\": null,\r\n\"loadWorldPresetName\": \"SpaceWorld\",\r\n\"overrideCorrespondingWorldId\": null,\r\n\"forcePort\": null,\r\n\"keepOriginalRoles\": false,\r\n\"defaultUserRoles\": null,\r\n\"roleCloudVariable\": null,\r\n\"allowUserCloudVariable\": null,\r\n\"denyUserCloudVariable\": null,\r\n\"requiredUserJoinCloudVariable\": null,\r\n\"requiredUserJoinCloudVariableDenyMessage\": null,\r\n\"awayKickMinutes\": -1.0\r\n}\r\n],\r\n\"dataFolder\": null,\r\n\"cacheFolder\": null,\r\n\"logsFolder\": null,\r\n\"allowedUrlHosts\": null,\r\n\"autoSpawnItems\": null,\r\n\"metamovieRoles\": null\r\n}\r\nEOF", + "container": "ghcr.io\/pterodactyl\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Steam Account User", + "description": "The username for your Steam account.", + "env_variable": "STEAM_USER", + "default_value": "null", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Steam Account Password", + "description": "The password for your Steam account.", + "env_variable": "STEAM_PASS", + "default_value": "null", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Steam Account Token\/Code", + "description": "The Steam Guard code or Login Token emailed to you.", + "env_variable": "STEAM_AUTH", + "default_value": "0000000", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Enable Mod Loader", + "description": "See: https:\/\/github.com\/neos-modding-group\/NeosModLoader for more information on Neos Mod Loader.", + "env_variable": "ENABLE_MODLOADER", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Beta Password", + "description": "This is the \"Beta Password\" that is only acquired by going to the Neos Patreon, subscribing to the \"Gunter\" level, and linking your Patreon to Discord. Then you will be able to see the #headless-client channel and the password will be pinned in the command after -betapassword.", + "env_variable": "BETA_PASSWORD", + "default_value": "none", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" + } + ] +} \ No newline at end of file From 6f406f45fdb8011eb05aea969535b0e0d80faf01 Mon Sep 17 00:00:00 2001 From: Elite Espeon Date: Sat, 3 Jun 2023 12:23:28 -0400 Subject: [PATCH 078/251] Remove exec from startup as its unneeded --- game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json index 7f32ac03..2a3d1268 100644 --- a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json +++ b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-03T10:59:04-04:00", + "exported_at": "2023-06-03T12:21:23-04:00", "name": "NeosVR", "author": "espeon@espeon.dev", "description": "Neos VR is a metaverse engineered for the unknown! It\u2019s one of the most versatile and feature rich metaverses for virtual reality, designed so everybody can find something interesting or useful to do in a social setting.", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest" }, "file_denylist": [], - "startup": "exec mono Neos.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly .\/NeosModLoaderHeadless.dll\"; fi)", + "startup": "mono Neos.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly .\/NeosModLoaderHeadless.dll\"; fi)", "config": { "files": "{}", "startup": "{\r\n \"done\": \"World running...\",\r\n \"userInteraction\": []\r\n}", From cf17d3eee2350e01da3038d974fca7680676bfc0 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 3 Jun 2023 18:49:20 +0200 Subject: [PATCH 079/251] add config to github --- game_eggs/steamcmd_servers/neosvr/Config.json | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 game_eggs/steamcmd_servers/neosvr/Config.json diff --git a/game_eggs/steamcmd_servers/neosvr/Config.json b/game_eggs/steamcmd_servers/neosvr/Config.json new file mode 100644 index 00000000..648a31ca --- /dev/null +++ b/game_eggs/steamcmd_servers/neosvr/Config.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://raw.githubusercontent.com/Neos-Metaverse/JSONSchemas/main/schemas/NeosHeadlessConfig.schema.json", + "universeId": null, + "tickRate": 60.0, + "maxConcurrentAssetTransfers": 4, + "usernameOverride": null, + "loginCredential": "", + "loginPassword": "", + "startWorlds": [{ + "isEnabled": true, + "saveAsOwner": null, + "autoInviteUsernames": null, + "parentSessionIds": null, + "autoInviteMessage": null, + "autoRecover": true, + "idleRestartInterval": -1.0, + "forcedRestartInterval": -1.0, + "saveOnExit": false, + "autosaveInterval": -1.0, + "autoSleep": true, + "sessionName": null, + "customSessionId": null, + "description": null, + "maxUsers": 32, + "accessLevel": "Anyone", + "hideFromPublicListing": null, + "tags": null, + "mobileFriendly": false, + "loadWorldURL": null, + "loadWorldPresetName": "SpaceWorld", + "overrideCorrespondingWorldId": null, + "forcePort": null, + "keepOriginalRoles": false, + "defaultUserRoles": null, + "roleCloudVariable": null, + "allowUserCloudVariable": null, + "denyUserCloudVariable": null, + "requiredUserJoinCloudVariable": null, + "requiredUserJoinCloudVariableDenyMessage": null, + "awayKickMinutes": -1.0 + }], + "dataFolder": null, + "cacheFolder": null, + "logsFolder": null, + "allowedUrlHosts": null, + "autoSpawnItems": null, + "metamovieRoles": null +} \ No newline at end of file From 529350f68bd3e03105e1148ca4cbe22e6cdbe3e8 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 3 Jun 2023 18:52:41 +0200 Subject: [PATCH 080/251] standardize NeosVR --- .../steamcmd_servers/neosvr/egg-neos-v-r.json | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json index 2a3d1268..3891b69b 100644 --- a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json +++ b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json @@ -4,26 +4,26 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-03T12:21:23-04:00", + "exported_at": "2023-06-03T18:51:27+02:00", "name": "NeosVR", "author": "espeon@espeon.dev", "description": "Neos VR is a metaverse engineered for the unknown! It\u2019s one of the most versatile and feature rich metaverses for virtual reality, designed so everybody can find something interesting or useful to do in a social setting.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest" + "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest" }, "file_denylist": [], "startup": "mono Neos.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly .\/NeosModLoaderHeadless.dll\"; fi)", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"World running...\",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"World running...\"\r\n}", "logs": "{}", "stop": "shutdown" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\necho -e \"steam user is not set.\\n\"\r\necho -e \"Using anonymous user.\\n\"\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nelse\r\necho -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update 740250 -beta headless-client -betapassword ${BETA_PASSWORD} validate +quit\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## create default config\r\nmkdir \/mnt\/server\/Config\r\nrm -rf \/mnt\/server\/Config\/Config.json\r\ncat >> \/mnt\/server\/Config\/Config.json << EOF\r\n{\r\n\"$schema\": \"https:\/\/raw.githubusercontent.com\/Neos-Metaverse\/JSONSchemas\/main\/schemas\/NeosHeadlessConfig.schema.json\",\r\n\"universeId\": null,\r\n\"tickRate\": 60.0,\r\n\"maxConcurrentAssetTransfers\": 4,\r\n\"usernameOverride\": null,\r\n\"loginCredential\": \"\",\r\n\"loginPassword\": \"\",\r\n\"startWorlds\": [\r\n{\r\n\"isEnabled\": true,\r\n\"saveAsOwner\": null,\r\n\"autoInviteUsernames\": null,\r\n\"parentSessionIds\": null,\r\n\"autoInviteMessage\": null,\r\n\"autoRecover\": true,\r\n\"idleRestartInterval\": -1.0,\r\n\"forcedRestartInterval\": -1.0,\r\n\"saveOnExit\": false,\r\n\"autosaveInterval\": -1.0,\r\n\"autoSleep\": true,\r\n\"sessionName\": null,\r\n\"customSessionId\": null,\r\n\"description\": null,\r\n\"maxUsers\": 32,\r\n\"accessLevel\": \"Anyone\",\r\n\"hideFromPublicListing\": null,\r\n\"tags\": null,\r\n\"mobileFriendly\": false,\r\n\"loadWorldURL\": null,\r\n\"loadWorldPresetName\": \"SpaceWorld\",\r\n\"overrideCorrespondingWorldId\": null,\r\n\"forcePort\": null,\r\n\"keepOriginalRoles\": false,\r\n\"defaultUserRoles\": null,\r\n\"roleCloudVariable\": null,\r\n\"allowUserCloudVariable\": null,\r\n\"denyUserCloudVariable\": null,\r\n\"requiredUserJoinCloudVariable\": null,\r\n\"requiredUserJoinCloudVariableDenyMessage\": null,\r\n\"awayKickMinutes\": -1.0\r\n}\r\n],\r\n\"dataFolder\": null,\r\n\"cacheFolder\": null,\r\n\"logsFolder\": null,\r\n\"allowedUrlHosts\": null,\r\n\"autoSpawnItems\": null,\r\n\"metamovieRoles\": null\r\n}\r\nEOF", - "container": "ghcr.io\/pterodactyl\/installers:debian", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## create default config\r\nmkdir -p \/mnt\/server\/Config\r\nrm -rf \/mnt\/server\/Config\/Config.json\r\ncurl -sSL -o \/mnt\/server\/Config\/Config.json https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/neosvr\/Config.json\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -32,7 +32,7 @@ "name": "Steam Account User", "description": "The username for your Steam account.", "env_variable": "STEAM_USER", - "default_value": "null", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "required|string|max:128", @@ -42,7 +42,7 @@ "name": "Steam Account Password", "description": "The password for your Steam account.", "env_variable": "STEAM_PASS", - "default_value": "null", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "required|string|max:128", @@ -52,7 +52,7 @@ "name": "Steam Account Token\/Code", "description": "The Steam Guard code or Login Token emailed to you.", "env_variable": "STEAM_AUTH", - "default_value": "0000000", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "nullable|string", @@ -71,12 +71,32 @@ { "name": "Beta Password", "description": "This is the \"Beta Password\" that is only acquired by going to the Neos Patreon, subscribing to the \"Gunter\" level, and linking your Patreon to Discord. Then you will be able to see the #headless-client channel and the password will be pinned in the command after -betapassword.", - "env_variable": "BETA_PASSWORD", - "default_value": "none", + "env_variable": "SRCDS_BETAPASS", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "required|string|max:30", "field_type": "text" + }, + { + "name": "Beta branch name", + "description": "", + "env_variable": "SRCDS_BETAID", + "default_value": "headless-client", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update the server on startup", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" } ] } \ No newline at end of file From f8ce51ab5b6ae8fe78a4b2c6fea3c0b89149d086 Mon Sep 17 00:00:00 2001 From: Elite Espeon Date: Sat, 3 Jun 2023 13:32:42 -0400 Subject: [PATCH 081/251] Update wording about Steam account --- game_eggs/steamcmd_servers/neosvr/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/neosvr/README.md b/game_eggs/steamcmd_servers/neosvr/README.md index 0e0a49dd..83007b28 100644 --- a/game_eggs/steamcmd_servers/neosvr/README.md +++ b/game_eggs/steamcmd_servers/neosvr/README.md @@ -4,7 +4,7 @@ Developing Neos, short for neo spatium - new space, a highly collaborative virtu # Notice -To use this egg you will need a beta code and a steam account. The account will also need to have neos vr in its library. You can do this by running app_license_request 740250 in steamcmd if you have never installed neos on this account. +To use this egg you will need a beta code and a Steam account. Currently the beta code can only acquired by going to the Neos Patreon, subscribing to the "Gunter" level, and linking your Patreon to Discord. Then you will be able to see the #headless-client channel and the password will be pinned in the command after -betapassword. The account will also need to have Neos VR in its library. You can do this by running `app_license_request 740250` in steamcmd if you have never installed Neos VR on this Steam account. For more information related to configuration go here: https://wiki.neos.com/Headless_Client/Server This game does not require any port forwarding, but instead uses UDP NAT hole punching (and/or relay) on a random port. You can force a certain port in the config for direct connections, but most communcation is done via NAT hole punch using LiteNetLib (LNL). \ No newline at end of file From db8b2180d451879fb671ba348e1abd9567887873 Mon Sep 17 00:00:00 2001 From: Elite Espeon Date: Sat, 3 Jun 2023 13:34:08 -0400 Subject: [PATCH 082/251] Added Steam App ID variable --- game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json index 3891b69b..a9c11cb2 100644 --- a/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json +++ b/game_eggs/steamcmd_servers/neosvr/egg-neos-v-r.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-03T18:51:27+02:00", + "exported_at": "2023-06-03T13:33:19-04:00", "name": "NeosVR", "author": "espeon@espeon.dev", "description": "Neos VR is a metaverse engineered for the unknown! It\u2019s one of the most versatile and feature rich metaverses for virtual reality, designed so everybody can find something interesting or useful to do in a social setting.", @@ -97,6 +97,16 @@ "user_editable": true, "rules": "required|boolean", "field_type": "text" + }, + { + "name": "Steam App ID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "740250", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" } ] } \ No newline at end of file From 9f0425cfe087a95722ae362454b4a85ac07a4fa9 Mon Sep 17 00:00:00 2001 From: Pete Navarra Date: Sun, 11 Jun 2023 13:58:27 -0400 Subject: [PATCH 083/251] Updating for V Rising - Secrets of Gloomrot Adjusts egg to allow proper install of updated BepInEx as well as dotnet6 in the container. --- .../v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index c87ab7fc..ac48b0dd 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -17,7 +17,7 @@ "file_denylist": [], "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", "config": { - "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnMasterServer\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", "logs": "{}", "stop": "^C" @@ -284,10 +284,10 @@ "name": "WINETRICKS_RUN", "description": "", "env_variable": "WINETRICKS_RUN", - "default_value": "vcrun2019 dotnet48", + "default_value": "vcrun2019 dotnet48 dotnet6", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20", + "rules": "required|string|max:50", "field_type": "text" }, { From 2b2b8afb9d78bd415f2eb7ce958e1363b99a5fb0 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 13 Jun 2023 17:13:46 -0700 Subject: [PATCH 084/251] [Satisfactory] Update for UE5 Fixes installation and startup errors due to the server's binary name differing between it's UE4 and UE5 versions. --- .../steamcmd_servers/satisfactory/egg-satisfactory.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json index 8e09ee53..1a1c6eb3 100644 --- a/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json +++ b/game_eggs/steamcmd_servers/satisfactory/egg-satisfactory.json @@ -1,9 +1,10 @@ { - "_comment": "Pterodactyl Satisfactory Egg ~ Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord ~ 2022-10-13", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { "version": "PTDL_v2", "update_url": null }, + "exported_at": "2023-06-13T23:59:02+00:00", "name": "Satisfactory", "author": "rehlmgaming@gmail.com", "description": "Satisfactory is a first-person open-world factory building game with a dash of exploration and combat. Play alone or with friends, explore an alien planet, create multi-story factories, and enter conveyor belt heaven!", @@ -14,7 +15,7 @@ "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" }, "file_denylist": [], - "startup": ".\/Engine\/Binaries\/Linux\/UE4Server-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo \"-DisableSeasonalEvents\"; fi)", + "startup": ".\/Engine\/Binaries\/Linux\/*-Linux-Shipping FactoryGame ?listen -Port={{SERVER_PORT}} -ServerQueryPort={{QUERY_PORT}} -BeaconPort={{BEACON_PORT}} -multihome=0.0.0.0 $(if {{DISABLE_SEASONAL}}; then echo \"-DisableSeasonalEvents\"; fi)", "config": { "files": "{\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/Engine.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mNumRotatingAutosaves\": \"mNumRotatingAutosaves={{server.build.env.NUM_AUTOSAVES}}\",\r\n \"bImplicitSend\": \"bImplicitSend={{server.build.env.UPLOAD_CRASH_REPORT}}\",\r\n \"InitialConnectTimeout\": \"InitialConnectTimeout={{server.build.env.INIT_CONNECT_TIMEOUT}}\",\r\n \"ConnectionTimeout\": \"ConnectionTimeout={{server.build.env.CONNECT_TIMEOUT}}\"\r\n }\r\n },\r\n \"FactoryGame\/Saved\/Config\/LinuxServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"mFloatValues\": \"mFloatValues=((\\\"FG.AutosaveInterval\\\", {{server.build.env.AUTOSAVE_INTERVAL}}))\",\r\n \"mIntValues\": \"mIntValues=((\\\"FG.NetworkQuality\\\", {{server.build.env.NETWORK_QUALITY}}))\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Engine Initialization\"\r\n}", @@ -23,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord\r\n# Date: 2022\/10\/13\r\n# License: MIT License\r\n\r\n## Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Satisfactory setup\r\n# Check for successful installation and make the core binary executable.\r\ncd \/mnt\/server\/Engine\/Binaries\/Linux\r\nif [[ ! -f UE4Server-Linux-Shipping ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x UE4Server-Linux-Shipping\r\nfi\r\n\r\n# Make Config directory and default .ini files (since they are not initially present before first server start)\r\nmkdir -p \/mnt\/server\/FactoryGame\/Saved\/Config\/LinuxServer\/ && cd \"$_\"\r\n# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.\r\n# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.\r\n# When the patch to this limitation hits the production branch, this will be updated.\r\nrm -f Engine.ini Game.ini GameUserSettings.ini\r\n\r\necho -e '\\nCreating default \"Engine.ini\" configuration file...'\r\ncat > Engine.ini << EOF\r\n[\/Script\/FactoryGame.FGSaveSession]\r\nmNumRotatingAutosaves=${NUM_AUTOSAVES}\r\n\r\n[CrashReportClient]\r\nbImplicitSend=${UPLOAD_CRASH_REPORT}\r\n\r\n[\/Script\/OnlineSubsystemUtils.IpNetDriver]\r\nInitialConnectTimeout=${INIT_CONNECT_TIMEOUT}\r\nConnectionTimeout=${CONNECT_TIMEOUT}\r\nEOF\r\n\r\necho -e 'Creating default \"Game.ini\" configuration file...'\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\nEOF\r\n\r\necho -e 'Creating default \"GameUserSettings.ini\" configuration file...'\r\ncat > GameUserSettings.ini << EOF\r\n[\/Script\/FactoryGame.FGGameUserSettings]\r\nmIntValues=((\"FG.NetworkQuality\", ${NETWORK_QUALITY}))\r\nmFloatValues=((\"FG.AutosaveInterval\", ${AUTOSAVE_INTERVAL}))\r\nmAutoDetectSettingsHandled=False\r\nmPrimaryLanguage=\r\nCurrentFGGameUserSettingsVersion=0\r\nbUseVSync=False\r\nbUseDynamicResolution=False\r\nResolutionSizeX=1280\r\nResolutionSizeY=720\r\nLastUserConfirmedResolutionSizeX=1280\r\nLastUserConfirmedResolutionSizeY=720\r\nWindowPosX=-1\r\nWindowPosY=-1\r\nFullscreenMode=1\r\nLastConfirmedFullscreenMode=1\r\nPreferredFullscreenMode=1\r\nVersion=5\r\nAudioQualityLevel=0\r\nLastConfirmedAudioQualityLevel=0\r\nFrameRateLimit=0.000000\r\nDesiredScreenWidth=1280\r\nDesiredScreenHeight=720\r\nLastUserConfirmedDesiredScreenWidth=1280\r\nLastUserConfirmedDesiredScreenHeight=720\r\nLastRecommendedScreenWidth=-1.000000\r\nLastRecommendedScreenHeight=-1.000000\r\nLastCPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkMultiplier=1.000000\r\nbUseHDRDisplayOutput=False\r\nHDRDisplayOutputNits=1000\r\n\r\n[ScalabilityGroups]\r\nsg.ResolutionQuality=100.000000\r\nsg.ViewDistanceQuality=3\r\nsg.AntiAliasingQuality=3\r\nsg.ShadowQuality=3\r\nsg.PostProcessQuality=3\r\nsg.TextureQuality=3\r\nsg.EffectsQuality=3\r\nsg.FoliageQuality=3\r\nsg.ShadingQuality=3\r\n\r\n[\/Script\/Engine.GameUserSettings]\r\nbUseDesiredScreenHeight=False\r\n\r\n\r\nEOF\r\n\r\necho -e \"\\nSatisfactory Dedicated Server successfully installed!\\n\"", + "script": "#!\/bin\/bash\r\n\r\n# File: Pterodactyl Satisfactory Egg - egg-satisfactory.json\r\n# Authors: Red-Thirten, Kubi, matthewp, Software-Noob, and Zarklord\r\n# Date: 2023\/06\/13\r\n# License: MIT License\r\n\r\n## Download and install SteamCMD\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +exit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Satisfactory setup\r\n# Check for successful installation and make the server binary executable.\r\n# Use `find` to see if a valid server binary exists using a wildcard, because\r\n# the binary name can differ between UE4 and UE5.\r\ncd \/mnt\/server\/Engine\/Binaries\/Linux\r\ncount=$(find . -maxdepth 1 -name '*-Linux-Shipping' -type f -executable | wc -l)\r\nif [[ $count -eq 0 ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Satisfactory Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nelse\r\n chmod +x *-Linux-Shipping\r\nfi\r\n\r\n# Make Config directory and default .ini files (since they are not initially present before first server start)\r\nmkdir -p \/mnt\/server\/FactoryGame\/Saved\/Config\/LinuxServer\/ && cd \"$_\"\r\n# Currently, this will delete & re-create certain .ini files during a re-install if they are already present.\r\n# While undesirable, this is required due to a current Pterodactyl ini config parser limitation.\r\n# When the patch to this limitation hits the production branch, this will be updated.\r\nrm -f Engine.ini Game.ini GameUserSettings.ini\r\n\r\necho -e '\\nCreating default \"Engine.ini\" configuration file...'\r\ncat > Engine.ini << EOF\r\n[\/Script\/FactoryGame.FGSaveSession]\r\nmNumRotatingAutosaves=${NUM_AUTOSAVES}\r\n\r\n[CrashReportClient]\r\nbImplicitSend=${UPLOAD_CRASH_REPORT}\r\n\r\n[\/Script\/OnlineSubsystemUtils.IpNetDriver]\r\nInitialConnectTimeout=${INIT_CONNECT_TIMEOUT}\r\nConnectionTimeout=${CONNECT_TIMEOUT}\r\nEOF\r\n\r\necho -e 'Creating default \"Game.ini\" configuration file...'\r\ncat > Game.ini << EOF\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${MAX_PLAYERS}\r\nEOF\r\n\r\necho -e 'Creating default \"GameUserSettings.ini\" configuration file...'\r\ncat > GameUserSettings.ini << EOF\r\n[\/Script\/FactoryGame.FGGameUserSettings]\r\nmIntValues=((\"FG.NetworkQuality\", ${NETWORK_QUALITY}))\r\nmFloatValues=((\"FG.AutosaveInterval\", ${AUTOSAVE_INTERVAL}))\r\nmAutoDetectSettingsHandled=False\r\nmPrimaryLanguage=\r\nCurrentFGGameUserSettingsVersion=0\r\nbUseVSync=False\r\nbUseDynamicResolution=False\r\nResolutionSizeX=1280\r\nResolutionSizeY=720\r\nLastUserConfirmedResolutionSizeX=1280\r\nLastUserConfirmedResolutionSizeY=720\r\nWindowPosX=-1\r\nWindowPosY=-1\r\nFullscreenMode=1\r\nLastConfirmedFullscreenMode=1\r\nPreferredFullscreenMode=1\r\nVersion=5\r\nAudioQualityLevel=0\r\nLastConfirmedAudioQualityLevel=0\r\nFrameRateLimit=0.000000\r\nDesiredScreenWidth=1280\r\nDesiredScreenHeight=720\r\nLastUserConfirmedDesiredScreenWidth=1280\r\nLastUserConfirmedDesiredScreenHeight=720\r\nLastRecommendedScreenWidth=-1.000000\r\nLastRecommendedScreenHeight=-1.000000\r\nLastCPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkResult=-1.000000\r\nLastGPUBenchmarkMultiplier=1.000000\r\nbUseHDRDisplayOutput=False\r\nHDRDisplayOutputNits=1000\r\n\r\n[ScalabilityGroups]\r\nsg.ResolutionQuality=100.000000\r\nsg.ViewDistanceQuality=3\r\nsg.AntiAliasingQuality=3\r\nsg.ShadowQuality=3\r\nsg.PostProcessQuality=3\r\nsg.TextureQuality=3\r\nsg.EffectsQuality=3\r\nsg.FoliageQuality=3\r\nsg.ShadingQuality=3\r\n\r\n[\/Script\/Engine.GameUserSettings]\r\nbUseDesiredScreenHeight=False\r\n\r\n\r\nEOF\r\n\r\necho -e \"\\nSatisfactory Dedicated Server successfully installed!\\n\"", "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "\/bin\/bash" } @@ -170,4 +171,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From 314ca5ad1a83bb0547bd67685638940fe118ca06 Mon Sep 17 00:00:00 2001 From: Pete Navarra Date: Thu, 15 Jun 2023 17:55:47 -0400 Subject: [PATCH 085/251] Exported Egg to satisfy folks. --- .../v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index ac48b0dd..f4665968 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-15T14:46:32+01:00", + "exported_at": "2023-06-15T17:53:50-04:00", "name": "V Rising BepInEx", "author": "rehlmgaming@gmail.com", "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", From fbbb488849b0a94fba084ac4c25f3bf0c289b8f3 Mon Sep 17 00:00:00 2001 From: Bad <87938689+yesBad@users.noreply.github.com> Date: Sat, 17 Jun 2023 16:30:00 +0300 Subject: [PATCH 086/251] Add Custom Map URL Not sure if this is exactly how it's supposed to be done, but it works I believe. --- .../rust/rust_autowipe/egg-rust-autowipe.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json b/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json index eaa55f52..46fb42a3 100644 --- a/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json +++ b/game_eggs/steamcmd_servers/rust/rust_autowipe/egg-rust-autowipe.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-03T13:00:17+08:00", + "exported_at": "2023-06-17T16:29:22+03:00", "name": "Rust Autowipe", "author": "support@pterodactyl.io", "description": "The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive.", @@ -15,7 +15,7 @@ "ghcr.io\/pterodactyl\/games:rust": "ghcr.io\/pterodactyl\/games:rust" }, "file_denylist": [], - "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.ip 0.0.0.0 +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( if [ -f seed.txt ] && [[ ${WORLD_SEED} == \"0\" ]]; then printf %s $(cat seed.txt); else printf %s '${WORLD_SEED}'; fi )\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +app.port {{APP_PORT}} +server.saveinterval {{SAVEINTERVAL}} {{ADDITIONAL_ARGS}}\"", + "startup": "\".\/RustDedicated -batchmode +server.port {{SERVER_PORT}} +server.queryport {{QUERY_PORT}} +server.identity \"rust\" +rcon.ip 0.0.0.0 +rcon.port {{RCON_PORT}} +rcon.web true +server.hostname \\\"{{HOSTNAME}}\\\" +server.level \\\"{{LEVEL}}\\\" +server.description \\\"{{DESCRIPTION}}\\\" +server.url \\\"{{SERVER_URL}}\\\" +server.headerimage \\\"{{SERVER_IMG}}\\\" +server.maxplayers {{MAX_PLAYERS}} +rcon.password \\\"{{RCON_PASS}}\\\" +app.port {{APP_PORT}} +server.saveinterval {{SAVEINTERVAL}} $( [ -z ${MAP_URL} ] && printf %s \"+server.worldsize \\\"{{WORLD_SIZE}}\\\" +server.seed \\\"$( if [ -f seed.txt ] && [[ ${WORLD_SEED} == \"0\" ]]; then printf %s $(cat seed.txt); else printf %s ${WORLD_SEED}; fi )\\\"\"|| printf %s \"+server.levelurl {{MAP_URL}}\" ) {{ADDITIONAL_ARGS}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Server startup complete\"\r\n}", @@ -209,6 +209,16 @@ "user_editable": true, "rules": "required|integer", "field_type": "text" + }, + { + "name": "Custom Map URL", + "description": "Overwrites the map with the one from the direct download URL. Invalid URLs will cause the server to crash.", + "env_variable": "MAP_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|url", + "field_type": "text" } ] -} \ No newline at end of file +} From 2c07de84bd678a019b4a6393bb4b9cc2107a2c94 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 18 Jun 2023 11:34:58 +0200 Subject: [PATCH 087/251] Update ALT:V --- game_eggs/gta/altv/egg-alt--v.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/game_eggs/gta/altv/egg-alt--v.json b/game_eggs/gta/altv/egg-alt--v.json index ef127936..ba43f080 100644 --- a/game_eggs/gta/altv/egg-alt--v.json +++ b/game_eggs/gta/altv/egg-alt--v.json @@ -4,26 +4,26 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-20T17:34:40+02:00", + "exported_at": "2023-06-18T11:34:24+02:00", "name": "alt:V", "author": "parker@parkervcp.com", "description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/games:altv": "ghcr.io\/parkervcp\/games:altv" + "ALT:V": "ghcr.io\/parkervcp\/games:altv" }, "file_denylist": [], "startup": ".\/altv-server", "config": { - "files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"host:\": \"host: 0.0.0.0\",\r\n \"port:\": \"port: {{server.build.default.port}}\",\r\n \"password:\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"description:\": \"description: {{server.build.env.SERVER_DESC}}\"\r\n }\r\n },\r\n \"update.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"branch\": \"{{server.build.env.BUILD}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"server.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"host:\": \"host: 0.0.0.0\",\r\n \"port:\": \"port: {{server.build.default.port}}\",\r\n \"password:\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"description:\": \"description: {{server.build.env.SERVER_DESC}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Server started\"\r\n}", "logs": "{}", "stop": "quit" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n#\r\n# Script Name: update.sh\r\n#\r\n# Author: Lhoerion\r\n#\r\n# Description: The following script compares SHA-1 hashes of remote and local alt:V files. If local file is missing or outdated, script automatically downloads it to script directory.\r\n# Old files are preserved as *.old. Script also keep track of current branch and build. Server start script gets created if missing.\r\n#\r\n# Run Information: This script is run manually.\r\n# Dependencies: coreutils, wget, >=jq_1.4, pcregrep\r\n#\r\n\r\napt update\r\napt install -y libatomic1 zip unzip jq curl wget libc-bin coreutils pcregrep\r\ncd \/mnt\/server\r\n\r\n\r\n#!\/bin\/bash\r\n#\r\n# Script Name: update.sh\r\n#\r\n# Author: Lhoerion\r\n#\r\n# Description: The following script compares SHA-1 hashes of remote and local alt:V files. If local file is missing or outdated, script automatically downloads it to script directory.\r\n# Old files are preserved as *.old. Script also keep track of current branch and build. Server start script gets created if missing.\r\n#\r\n# Run Information: This script is run manually.\r\n# Dependencies: coreutils, wget, >=jq_1.4, pcregrep\r\n#\r\n\r\nnoBackup=false\r\nnoLogFile=false\r\ndryRun=false\r\nsilent=false\r\nfor arg in \"$@\"\r\ndo\r\n if [ $arg = '--no-logfile' ]; then\r\n noLogFile=true\r\n elif [ $arg = '--no-backup' ]; then\r\n noBackup=true\r\n elif [ $arg = '--dry-run' ]; then\r\n dryRun=true\r\n elif [ $arg = '--silent' ]; then\r\n silent=true\r\n fi\r\ndone\r\nfiles=()\r\nprintAndLog() {\r\n if [[ \"$silent\" == false ]]; then\r\n outFd=1\r\n else\r\n exec {outFd}>\/dev\/null\r\n fi\r\n if [ \"$2\" = 'ERR' ]; then\r\n printf \"\\e[91m[$(date +%T)][Error] $1\\e[39m\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n elif [ \"$2\" = 'WARN' ]; then\r\n printf \"\\e[93m[$(date +%T)][Warning] $1\\e[39m\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n elif [ \"$2\" = 'APP' ]; then\r\n printf \"$1\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n else\r\n printf \"[$(date +%T)] $1\" |& ([ $noLogFile != true ] && tee -a 'update.log' >& $outFd || cat)\r\n fi\r\n}\r\nsemVerCmp() {\r\n declare -r \"semVerRegex=^(0|[1-9]\\d*)(?:\\.(0|[1-9]\\d*))?\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$\"\r\n local matchA=(${1##v})\r\n local matchB=(${2##v})\r\n for i in {1..5}\r\n do\r\n matchA+=$(`echo ${1##v} | pcregrep \"-o$i\" $semVerRegex`)\r\n matchB+=$(`echo ${2##v} | pcregrep \"-o$i\" $semVerRegex`)\r\n done\r\n if [ ${1##v} == ${2##v} ]; then\r\n echo 0 && return 0\r\n fi\r\n if [ \\( -z $matchA[4] \\) -a \\( ! -z $matchB[4] \\) ]; then\r\n echo 1 && return 0\r\n elif [ \\( ! -z $matchA[4] \\) -a \\( -z $matchB[4] \\) ]; then\r\n echo -1 && return 0\r\n fi\r\n local i=0\r\n for a in ${matchA[@]}\r\n do\r\n local b=\"${matchB[$i]}\"\r\n if [ \\( $i -eq 2 \\) -a \\( \\( -z $a \\) -o \\( -z $b \\) \\) ]; then\r\n continue\r\n fi\r\n if [[ $a > $b ]]; then\r\n echo 1 && return 0\r\n elif [[ $a < $b ]]; then\r\n echo -1 && return 0\r\n fi\r\n i=$((i + 1))\r\n done\r\n echo 0 && return 0\r\n}\r\ngetFileHash() {\r\n local file=(${1##v})\r\n sha1sum \"$file\" | awk '{print $1}'\r\n}\r\nfetchUpdateData() {\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/server\/$localBranch\/x64_linux\/update.json\" -A 'AltPublicAgent')\r\n echo $updateData | jq -e '.' >\/dev\/null 2>&1\r\n if [ $? -ne 0 ]; then\r\n printAndLog \"Failed to check for update, try again later\\n\" 'ERR'\r\n exit 1\r\n fi\r\n\r\n str='. | to_entries | map(if .key==\"hashList\" then {\"key\":.key} + {\"value\":(.value | to_entries | map(. + {\"value\":[.value, \"%s\"]}) | from_entries)} else . end) | from_entries'\r\n \r\n local updateTmp=($(mktemp '\/tmp\/update.sh.XXX'))\r\n\r\n echo '{}' > ${updateTmp[0]}\r\n echo $updateData | jq -c \"$(printf \"$str\" 'server')\" > ${updateTmp[0]}\r\n\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/data\/$localBranch\/update.json\" -A 'AltPublicAgent')\r\n if [ $? -ne 0 ]; then\r\n printAndLog \"Failed to check for update, try again later\\n\" 'ERR'\r\n exit 1\r\n fi\r\n\r\n updateTmp+=($(mktemp '\/tmp\/update.sh.XXX'))\r\n echo '{}' > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n echo $updateData | jq -c \"$(printf \"$str\" 'data')\" > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n\r\n for (( i=0; i < ${#modules[@]}; i++ ))\r\n do\r\n if [[ \"${modules[$i]}\" == 'csharp-module' ]]; then\r\n modules[$i]='coreclr-module'\r\n fi\r\n local moduleName=${modules[$i]}\r\n updateData=$(curl -s \"https:\/\/cdn.altv.mp\/$moduleName\/$localBranch\/x64_linux\/update.json\" -A 'AltPublicAgent')\r\n echo $updateData | jq -e '.' >\/dev\/null 2>&1\r\n if [ $? -ne 0 ]; then\r\n printAndLog \"Failed to check for $moduleName update\\n\" 'WARN'\r\n else\r\n updateTmp+=($(mktemp '\/tmp\/update.sh.XXX'))\r\n echo '{}' > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n echo $updateData | jq -c \"$(printf \"$str\" \"$moduleName\")\" > \"${updateTmp[${#updateTmp[@]} - 1]}\"\r\n fi\r\n done\r\n updateData=$(jq -s '.[0].latestBuildNumber as $b | .[0].version as $c | reduce .[] as $x ({}; . * $x) | .latestBuildNumber=$b | .version=$c' ${updateTmp[@]})\r\n remoteBuild=\"$(echo \"$updateData\" | jq -r '.latestBuildNumber')\"\r\n [[ $remoteBuild -eq -1 ]] && remoteBuild=$(echo \"$updateData\" | jq -r '.version')\r\n}\r\nvalidateFiles() {\r\n files=()\r\n for file in $(echo $updateData | jq -r '.hashList | keys[]')\r\n do\r\n if [[ ! -e \"$file\" || (\"$(printf \"%0.s0\" {1..40})\" != \"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[0]\")\" && $(getFileHash \"$file\") != \"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[0]\")\") ]]; then\r\n files+=(\"$file\")\r\n fi\r\n done\r\n if [ ! -e 'server.cfg' ]; then\r\n printAndLog \"Server file server.cfg not found, creating one . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n printf 'name: \"alt:V Server\"\\nhost: 0.0.0.0\\nport: 7788\\nplayers: 128\\n#password: ultra-password\\nannounce: false\\n#token: YOUR_TOKEN\\ngamemode: Freeroam\\nwebsite: example.com\\nlanguage: en\\ndescription: \"alt:V Sample Server\"\\nmodules: [\\n \\n]\\nresources: [\\n \\n]\\n' > 'server.cfg' && printAndLog 'done\\n' 'APP' || printAndLog 'failed\\n' 'APP'\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n fi\r\n if [[ ! $localBuild =~ ^[0-9]+$ || $localBuild -ge 1232 ]]; then\r\n local nodeExist=$([ -e 'libnode.so.72' ] && echo true || echo false)\r\n local moduleExist=$([ -e 'modules\/libnode-module.so' ] && echo true || echo false)\r\n if [[ \"$nodeExist\" == true || \"$moduleExist\" == true ]]; then\r\n printAndLog \"Found old node-module files, removing . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n local result1=true\r\n local result2=true\r\n if [[ \"$nodeExist\" == true ]]; then\r\n rm -f 'libnode.so.72'\r\n result1=$([[ \"$?\" -eq 0 ]] && echo true || echo false)\r\n fi\r\n if [[ \"$moduleExist\" == true ]]; then\r\n rm -f 'modules\/libnode-module.so'\r\n result2=$([[ \"$?\" -eq 0 ]] && echo true || echo false)\r\n fi\r\n if [[ \"$result1\" == true && \"$result2\" == true ]]; then\r\n printAndLog 'done\\n' 'APP'\r\n else\r\n printAndLog 'failed\\n' 'APP'\r\n fi\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n fi\r\n fi\r\n if [ $localBuild != $remoteBuild ]; then\r\n printAndLog \"Server files update is available\\n\"\r\n elif [ \"${#files[@]}\" -ne 0 ]; then\r\n printAndLog \"Server files are invalidated\/corrupted, ${#files[@]} in total\\n\"\r\n else\r\n printAndLog \"Server files are up-to-date, no action required\\n\"\r\n fi\r\n\r\n if [[ \"$dryRun\" == false ]]; then\r\n localBuild=$remoteBuild\r\n modulesTemp=\"\"\r\n for (( i=0; i < ${#modules[@]}; i++ ))\r\n do\r\n modulesTemp+=\"\\\"${modules[$i]}\\\"\"\r\n if [ $(($i + 1)) -ne ${#modules[@]} ]; then\r\n modulesTemp+=','\r\n fi\r\n done\r\n if [[ $localBuild =~ ^[0-9]+$ ]]; then\r\n printf '{\"branch\":\"%s\",\"build\":%d,\"modules\":[%s]}' $localBranch $localBuild $modulesTemp | jq '.' > 'update.cfg'\r\n else\r\n printf '{\"branch\":\"%s\",\"build\":\"%s\",\"modules\":[%s]}' $localBranch $localBuild $modulesTemp | jq '.' > 'update.cfg'\r\n fi\r\n fi\r\n}\r\ndownloadFiles() {\r\n if [ \"${#files[@]}\" -eq 0 ]; then\r\n return\r\n fi\r\n for file in ${files[@]}\r\n do\r\n dlType=\"$(echo \"$updateData\" | jq -r \".hashList.\\\"$file\\\"[1]\")\"\r\n platform=$([ \"$dlType\" == \"data\" ] && echo \"\" || echo \"x64_linux\/\")\r\n updateData=\"$(echo $updateData | jq -r '.hashList.\"altv-server\"[1] = \"server\"')\"\r\n outDir=\"$(dirname $file)\"\r\n printAndLog \"Downloading file $file . . . \"\r\n if [[ \"$dryRun\" == false ]]; then\r\n if [[ \"$noBackup\" == false && -e \"$file\" ]]; then\r\n mv \"$file\" \"$file.old\"\r\n fi\r\n if [[ ! -e \"$outDir\/\" ]]; then\r\n mkdir -p \"$outDir\/\"\r\n fi\r\n\r\n wget \"https:\/\/cdn.altv.mp\/$dlType\/$localBranch\/$platform${file}?build=$localBuild\" -U 'AltPublicAgent' -O \"$file\" -N -q && printAndLog 'done\\n' 'APP' || printAndLog 'failed\\n' 'APP'\r\n if [ ! -e \"$file\" ]; then\r\n continue\r\n fi\r\n if [ -e \"$file.old\" ]; then\r\n chmod --reference=\"$file.old\" \"$file\" || printAndLog \"Failed to copy chmod to file $file\\n\" 'ERR'\r\n chmod -x \"$file.old\" || printAndLog \"Failed to remove execution permissions from file $file.old\\n\" 'ERR'\r\n else\r\n chmod +x \"$file\" || printAndLog \"Failed to add execution permissions to file $file\\n\" 'ERR'\r\n fi\r\n else\r\n printAndLog 'done\\n' 'APP'\r\n fi\r\n done\r\n validateFiles\r\n}\r\n\r\nif [ $noLogFile != true ]; then\r\n truncate -s 0 'update.log'\r\nfi\r\nif [[ ( \"$dryRun\" == false ) && ( ! -e 'update.cfg' ) ]]; then\r\n printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.' > 'update.cfg'\r\nfi\r\nupdateCfg=$([[ -e 'update.cfg' ]] && cat 'update.cfg' || printf '{\"branch\":\"release\",\"modules\":[\"js-module\"]}' | jq '.')\r\nlocalBranch=$(echo \"$updateCfg\" | jq -r '.branch')\r\n[[ ! -n \"$localBranch\" || \"$localBranch\" != 'release' && \"$localBranch\" != 'rc' && \"$localBranch\" != 'dev' ]] && localBranch='release'\r\nmodules=($(echo \"$updateCfg\" | jq -r '.modules \/\/ \"\"' | tr -d '[],\"'))\r\n[[ ! -n \"$modules\" ]] && modules=('js-module')\r\nfetchUpdateData\r\nlocalBuild=\"$(echo \"$updateCfg\" | jq -r 'if .build == null then empty else .build end')\"\r\n[[ -z $localBuild || $localBuild == \"-1\" ]] && localBuild=$remoteBuild\r\nprintAndLog \"Current version: $localBuild\\n\"\r\nprintAndLog \"Latest version: $remoteBuild\\n\"\r\nvalidateFiles\r\ndownloadFiles\r\n\r\nchmod +x .\/altv-server\r\n\r\ncd \/mnt\/server\/data\r\n\r\nif [ -f \"vehmodels.bin\" ];\r\nthen\r\n echo \"vehmodels.bin found.\"\r\nelse\r\n echo \"vehmodels.bin has not been found, downloading it\"\r\n wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/vehmodels.bin\r\nfi\r\n\r\nif [ -f \"vehmods.bin\" ];\r\nthen\r\n echo \"vehmods.bin found.\"\r\nelse\r\n echo \"vehmods.bin has not been found, downloading it\"\r\n wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/vehmods.bin\r\nfi\r\n\r\nif [ -f \"clothes.bin\" ];\r\nthen\r\n echo \"clothes.bin found.\"\r\nelse\r\n echo \"clothes.bin has not been found, downloading it\"\r\n wget wget https:\/\/cdn.altv.mp\/data\/${BUILD}\/data\/clothes.bin\r\nfi\r\n\r\ncd \/mnt\/server\r\necho -e \"install complete\"", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n#\r\n\r\napt update\r\napt install -y wget jq curl \r\n\r\ncd \/mnt\/server\r\nNEWVERSION=$(curl -sSL https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/update.json | jq -r .version)\r\n\r\n\r\nif [ -f \"\/mnt\/server\/altv-server\" ]; then\r\n CURRENTVERSION=$(cat update.json | jq -r .version)\r\n if [[ \"${CURRENTVERSION}\" == \"${NEWVERSION}\" ]]; then\r\n echo \"No update found\"\r\n exit 0\r\n fi\r\n echo \"Backing up version ${CURRENTVERSION}\"\r\n mkdir -p \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv altv-server \/mnt\/server\/backup\/${CURRENTVERSION}\/\r\n cd \/mnt\/server\/data\r\n mv clothes.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv vehmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv vehmods.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv pedmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv weaponmodels.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n mv rpfdata.bin \/mnt\/server\/backup\/${CURRENTVERSION}\/data\r\n rm \/mnt\/server\/update.json\r\nfi\r\n\r\n\r\ncd \/mnt\/server\r\n\r\n\r\necho \"Installing version: ${NEWVERSION}\"\r\nwget -q https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/altv-server\r\nwget -q https:\/\/cdn.alt-mp.com\/server\/${BUILD}\/x64_linux\/update.json\r\nchmod +x .\/altv-server\r\n\r\n\r\nmkdir -p \/mnt\/server\/data\r\ncd \/mnt\/server\/data\r\n\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/vehmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/vehmods.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/clothes.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/pedmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/weaponmodels.bin\r\nwget -q https:\/\/cdn.alt-mp.com\/data\/${BUILD}\/data\/rpfdata.bin\r\n\r\n\r\n\r\n\r\ncd \/mnt\/server\r\nif [ ! -f \"\/mnt\/server\/server.toml\" ]; then\r\ncat << EOF >> server.toml\r\nname = 'alt:V Server'\r\nhost = '0.0.0.0'\r\nport = ${SERVER_PORT}\r\nplayers = 128\r\npassword = '${PASSWORD}'\r\nannounce = false\r\ntoken = 'YOUR_TOKEN'\r\ngamemode = 'Freeroam'\r\nwebsite = 'example.com'\r\nlanguage = 'en'\r\ndescription = '${SERVER_DESC}'\r\nmodules = []\r\nresources = []\r\nEOF\r\nfi\r\n\r\nmkdir -p resources\/\r\n\r\necho -e \"install complete\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -45,7 +45,7 @@ "default_value": "release", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20", + "rules": "required|string|in:release,rc,dev", "field_type": "text" }, { From 5a27a729cad2c1c76dd85a33897d7c6012ff5608 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 18 Jun 2023 11:47:54 +0200 Subject: [PATCH 088/251] keep allowlist.json on reinstall --- .../bedrock/egg-vanilla-bedrock-ARM64.json | 8 ++--- .../bedrock/bedrock/egg-vanilla-bedrock.json | 34 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json index 30a6633f..791753b3 100644 --- a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json +++ b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock-ARM64.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-06T17:14:36+02:00", + "exported_at": "2023-06-18T11:46:24+02:00", "name": "Vanilla Bedrock ARM64", "author": "josdekurk@gmail.com", "description": "Bedrock Edition (also known as the Bedrock Version, Bedrock Codebase, Bedrock Engine or just Bedrock) refers to the multi-platform family of editions of Minecraft developed by Mojang AB, Microsoft Studios, 4J Studios, and SkyBox Labs. Prior to this term, as the engine originated with Pocket Edition, this entire product family was referred to as \"Pocket Edition\", \"MCPE\", or \"Pocket\/Windows 10 Edition\".", @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp whitelist.json whitelist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho 'emit-server-telemetry=true' >> server.properties\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf whitelist.json.bak whitelist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp allowlist.json allowlist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho 'emit-server-telemetry=true' >> server.properties\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf allowlist.json.bak allowlist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -91,4 +91,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file diff --git a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json index 9bd191e3..c7f6170f 100644 --- a/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json +++ b/game_eggs/minecraft/bedrock/bedrock/egg-vanilla-bedrock.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-22T05:42:40-05:00", + "exported_at": "2023-06-18T11:45:33+02:00", "name": "Vanilla Bedrock", "author": "parker@parkervcp.com", "description": "Bedrock Edition (also known as the Bedrock Version, Bedrock Codebase, Bedrock Engine or just Bedrock) refers to the multi-platform family of editions of Minecraft developed by Mojang AB, Microsoft Studios, 4J Studios, and SkyBox Labs. Prior to this term, as the engine originated with Pocket Edition, this entire product family was referred to as \"Pocket Edition\", \"MCPE\", or \"Pocket\/Windows 10 Edition\".", "features": [ "pid_limit" ], - "images": [ - "ghcr.io\/parkervcp\/yolks:debian" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, "file_denylist": [], "startup": ".\/bedrock_server", "config": { @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp whitelist.json whitelist.json.bak\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf whitelist.json.bak whitelist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y zip unzip wget curl\r\n\r\nif [ ! -d \/mnt\/server\/ ]; then\r\n mkdir \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\n# Minecraft CDN Akamai blocks script user-agents\r\nRANDVERSION=$(echo $((1 + $RANDOM % 4000)))\r\n\r\nif [ -z \"${BEDROCK_VERSION}\" ] || [ \"${BEDROCK_VERSION}\" == \"latest\" ]; then\r\n echo -e \"\\n Downloading latest Bedrock server\"\r\n curl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -H \"Accept-Encoding: gzip, deflate\" -o versions.html.gz https:\/\/www.minecraft.net\/en-us\/download\/server\/bedrock\r\n DOWNLOAD_URL=$(zgrep -o 'https:\/\/minecraft.azureedge.net\/bin-linux\/[^\"]*' versions.html.gz)\r\nelse \r\n echo -e \"\\n Downloading ${BEDROCK_VERSION} Bedrock server\"\r\n DOWNLOAD_URL=https:\/\/minecraft.azureedge.net\/bin-linux\/bedrock-server-$BEDROCK_VERSION.zip\r\nfi\r\n\r\nDOWNLOAD_FILE=$(echo ${DOWNLOAD_URL} | cut -d\"\/\" -f5) # Retrieve archive name\r\n\r\necho -e \"backing up config files\"\r\nrm *.bak versions.html.gz\r\ncp server.properties server.properties.bak\r\ncp permissions.json permissions.json.bak\r\ncp allowlist.json allowlist.json.bak\r\n\r\n\r\necho -e \"Downloading files from: $DOWNLOAD_URL\"\r\n\r\ncurl -L -A \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/90.0.$RANDVERSION.212 Safari\/537.36\" -H \"Accept-Language: en\" -o $DOWNLOAD_FILE $DOWNLOAD_URL\r\n\r\necho -e \"Unpacking server files\"\r\nunzip -o $DOWNLOAD_FILE\r\n\r\necho -e \"Cleaning up after installing\"\r\nrm $DOWNLOAD_FILE\r\n\r\necho -e \"restoring backup config files - on first install there will be file not found errors which you can ignore.\"\r\ncp -rf server.properties.bak server.properties\r\ncp -rf permissions.json.bak permissions.json\r\ncp -rf allowlist.json.bak allowlist.json\r\n\r\nchmod +x bedrock_server\r\n\r\necho -e \"Install Completed\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -37,7 +37,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "ld lib path", @@ -46,7 +47,8 @@ "default_value": ".", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Server Name", @@ -55,7 +57,8 @@ "default_value": "Bedrock Dedicated Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:50" + "rules": "required|string|max:50", + "field_type": "text" }, { "name": "Gamemode", @@ -64,7 +67,8 @@ "default_value": "survival", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:survival,creative,adventure" + "rules": "required|string|in:survival,creative,adventure", + "field_type": "text" }, { "name": "Difficulty", @@ -73,7 +77,8 @@ "default_value": "easy", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:peaceful,easy,normal,hard" + "rules": "required|string|in:peaceful,easy,normal,hard", + "field_type": "text" }, { "name": "Allow cheats", @@ -82,7 +87,8 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" } ] -} +} \ No newline at end of file From f094af0b3dfcfa45425f4537c516cac0f087542b Mon Sep 17 00:00:00 2001 From: Presti Date: Tue, 20 Jun 2023 11:02:46 +0200 Subject: [PATCH 089/251] Ree6 Egg update (#2300) Update Ree6 for V3 --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- bots/discord/ree6/config.yml | 80 +++++++++--- bots/discord/ree6/egg-ree6.json | 212 ++++++++++++++++++++++++++------ 2 files changed, 234 insertions(+), 58 deletions(-) diff --git a/bots/discord/ree6/config.yml b/bots/discord/ree6/config.yml index 03a01b3e..c0b68c1e 100644 --- a/bots/discord/ree6/config.yml +++ b/bots/discord/ree6/config.yml @@ -8,8 +8,8 @@ # Do not change this! config: - version: 2.4.3 - creation: 1681169485237 + version: 3.0.0 + creation: 1686731674683 # HikariCP Configuration hikari: @@ -24,21 +24,79 @@ hikari: # Misc Configuration misc: - storage: sqlite + storage: sqlite # Possible entries: sqlite, mariadb, postgresql, h2, h2-server storageFile: storage/Ree6.db + createEmbeddedServer: false # Should an instance of an embedded Server be created? Only used for H2-Server. poolSize: 10 +# Discord Application and overall Bot Configuration, used for OAuth, Bot Authentication and customization. +bot: + tokens: + release: ReleaseTokenhere # Token used when set to release build. + beta: BetaTokenhere # Token used when set to beta build. + dev: DevTokenhere # Token used when set to dev build. + + # Configuration for the Bot itself. + misc: + status: ree6.de | %guilds% Servers. (%shard%) # The Status of the Bot. + feedbackChannelId: 0 # The Channel used for Feedback. + ownerId: 321580743488831490 # The ID of the Bot Owner. Change this to yours! + predefineInformation: | # Predefined Information for the AI. + You are Ree6 a Discord bot. + invite: https://invite.ree6.de # The Invite Link of the Bot. + support: https://support.ree6.de # The Support Server Link of the Bot. + github: https://github.ree6.de # The GitHub Link of the Bot. + website: https://ree6.de # The Website Link of the Bot. + webinterface: https://cp.ree6.de # The Webinterface Link of the Bot. + recording: https://cp.ree6.de/external/recording # The Recording Link of the Bot. + twitchAuth: https://cp.ree6.de/external/twitch # The Twitch Authentication Link of the Bot. + advertisement: powered by Tube-hosting # The Advertisement in Embed Footers and the rest. + name: Ree6 # The Name of the Bot. + shards: 1 # The shard amount of the Bot. Check out https://anidiots.guide/understanding/sharding/#sharding for more information. + + # Customize the active modules in Ree6. + modules: + moderation: true # Enable the moderation module. + music: true # Enable the music module. + fun: true # Enable the fun commands. + community: true # Enable the community commands. + economy: true # Enable the economy commands. + level: true # Enable the level module. + nsfw: true # Enable the nsfw module. + info: true # Enable the info commands. + hidden: true # Enable the hidden commands. + logging: true # Enable the logging module. + notifier: true # Enable the notifier module. + streamtools: true # Enable the Stream-tools module. + temporalvoice: true # Enable the Temporal-voice module. + tickets: true # Enable the Tickets module. + suggestions: true # Enable the suggestions module. + customcommands: true # Enable the custom Commands module. + customevents: true # Enable the custom Events module. + ai: true # Enable the AI module. + addons: false # Enable the Addons module. + news: true # Enable the news command/module. + games: true # Enable the Games module. + reactionroles: true # Enable the reaction-roles module. + slashcommands: true # Enable the slash-commands support. + messagecommands: true # Enable the message-commands support. + # Heartbeat Configuration, for status reporting heartbeat: url: none # The URL to the Heartbeat-Server interval: 60 dagpi: - apitoken: yourdagpixyztokenhere # Your Dagpi.xyz API-Token, for tweet image generation! + apitoken: DAGPI.xyz API-Token # Your Dagpi.xyz API-Token, for tweet image generation! amari: apitoken: Amari API-Token # Your Amari API-Token, for Amari Level imports! +openai: + apiToken: OpenAI API-Token # Your OpenAI API-Token, for ChatGPT! + apiUrl: https://api.openai.com/v1/chat/completions # The URL to the OpenAI API. + model: gpt-3.5-turbo-0301 # The Model used for the OpenAI API. + sentry: dsn: yourSentryDSNHere # Your Sentry DSN, for error reporting! @@ -56,12 +114,7 @@ twitch: # Twitter Application Configuration, used for the Twitter Notifications. twitter: - consumer: - key: yourTwitterConsumerKey - secret: yourTwitterConsumerSecret - access: - key: yourTwitterAccessKey - secret: yourTwitterAccessSecret + bearer: yourTwitterBearerToken # Reddit Application Configuration, used for the Reddit Notification. reddit: @@ -73,10 +126,3 @@ reddit: instagram: username: yourInstagramUsername password: yourInstagramPassword - -# Discord Application Configuration, used for OAuth and Bot Authentication. -bot: - tokens: - release: ReleaseTokenhere # Token used when set to release build. - beta: BetaTokenhere # Token used when set to beta build. - dev: DevTokenhere # Token used when set to dev build. diff --git a/bots/discord/ree6/egg-ree6.json b/bots/discord/ree6/egg-ree6.json index 0f8791d6..4f713d01 100644 --- a/bots/discord/ree6/egg-ree6.json +++ b/bots/discord/ree6/egg-ree6.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-04-22T20:23:22+02:00", + "exported_at": "2023-06-14T13:03:27+02:00", "name": "Ree6", "author": "presti@presti.me", "description": "All-in-one, open source and 100% free Discord Bot!", @@ -15,7 +15,7 @@ "file_denylist": [], "startup": "java -Dnogui=true -jar Ree6.jar", "config": { - "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"hikari.sql.user\": \"{{server.build.env.DATABASE_USER}}\",\r\n \"hikari.sql.db\": \"{{server.build.env.DATABASE_DB}}\",\r\n \"hikari.sql.pw\": \"{{server.build.env.DATABASE_PW}}\",\r\n \"hikari.sql.host\": \"{{server.build.env.DATABASE_HOST}}\",\r\n \"hikari.sql.port\": \"{{server.build.env.DATABASE_PORT}}\",\r\n \"hikari.misc.storage\": \"{{server.build.env.DATABASE_TYP}}\",\r\n \"hikari.misc.storageFile\": \"{{server.build.env.DATABASE_FILE}}\",\r\n \"hikari.misc.poolSize\": \"{{server.build.env.DATABASE_POOL}}\",\r\n \"heartbeat.url\": \"{{server.build.env.HEARTBEAT_URL}}\",\r\n \"heartbeat.interval\": \"{{server.build.env.HEARTBEAT_INTERVAL}}\",\r\n \"dagpi.apitoken\": \"{{server.build.env.DAGPI_TOKEN}}\",\r\n \"amari.apitoken\": \"{{server.build.env.AMARI_TOKEN}}\",\r\n \"sentry.dsn\": \"{{server.build.env.SENTRY_DSN}}\",\r\n \"spotify.client.id\": \"{{server.build.env.SPOTIFY_CLIENT_ID}}\",\r\n \"spotify.client.secret\": \"{{server.build.env.SPOTIFY_CLIENT_SECRET}}\",\r\n \"twitch.client.id\": \"{{server.build.env.TWITCH_CLIENT_ID}}\",\r\n \"twitch.client.secret\": \"{{server.build.env.TWITCH_CLIENT_SECRET}}\",\r\n \"twitter.consumer.key\": \"{{server.build.env.TWITTER_CONSUMER_ID}}\",\r\n \"twitter.consumer.secret\": \"{{server.build.env.TWITTER_CONSUMER_SECRET}}\",\r\n \"twitter.access.key\": \"{{server.build.env.TWITTER_ACCESS_ID}}\",\r\n \"twitter.access.secret\": \"{{server.build.env.TWITTER_ACCESS_SECRET}}\",\r\n \"reddit.client.id\": \"{{server.build.env.REDDIT_CLIENT_ID}}\",\r\n \"reddit.client.secret\": \"{{server.build.env.REDDIT_CLIENT_SECRET}}\",\r\n \"instagram.username\": \"{{server.build.env.INSTAGRAM_USERNAME}}\",\r\n \"instagram.password\": \"{{server.build.env.INSTAGRAM_PASSWORD}}\",\r\n \"bot.tokens.release\": \"{{server.build.env.BOT_TOKEN}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"hikari.sql.user\": \"{{server.build.env.DATABASE_USER}}\",\r\n \"hikari.sql.db\": \"{{server.build.env.DATABASE_DB}}\",\r\n \"hikari.sql.pw\": \"{{server.build.env.DATABASE_PW}}\",\r\n \"hikari.sql.host\": \"{{server.build.env.DATABASE_HOST}}\",\r\n \"hikari.sql.port\": \"{{server.build.env.DATABASE_PORT}}\",\r\n \"hikari.misc.storage\": \"{{server.build.env.DATABASE_TYP}}\",\r\n \"hikari.misc.storageFile\": \"{{server.build.env.DATABASE_FILE}}\",\r\n \"hikari.misc.poolSize\": \"{{server.build.env.DATABASE_POOL}}\",\r\n \"hikari.misc.createEmbeddedServer\": \"{{server.build.env.DATABASE_EMBEDDED}}\",\r\n \"heartbeat.url\": \"{{server.build.env.HEARTBEAT_URL}}\",\r\n \"heartbeat.interval\": \"{{server.build.env.HEARTBEAT_INTERVAL}}\",\r\n \"dagpi.apitoken\": \"{{server.build.env.DAGPI_TOKEN}}\",\r\n \"amari.apitoken\": \"{{server.build.env.AMARI_TOKEN}}\",\r\n \"sentry.dsn\": \"{{server.build.env.SENTRY_DSN}}\",\r\n \"spotify.client.id\": \"{{server.build.env.SPOTIFY_CLIENT_ID}}\",\r\n \"spotify.client.secret\": \"{{server.build.env.SPOTIFY_CLIENT_SECRET}}\",\r\n \"twitch.client.id\": \"{{server.build.env.TWITCH_CLIENT_ID}}\",\r\n \"twitch.client.secret\": \"{{server.build.env.TWITCH_CLIENT_SECRET}}\",\r\n \"twitter.consumer.key\": \"{{server.build.env.TWITTER_CONSUMER_ID}}\",\r\n \"twitter.consumer.secret\": \"{{server.build.env.TWITTER_CONSUMER_SECRET}}\",\r\n \"twitter.access.key\": \"{{server.build.env.TWITTER_ACCESS_ID}}\",\r\n \"twitter.access.secret\": \"{{server.build.env.TWITTER_ACCESS_SECRET}}\",\r\n \"reddit.client.id\": \"{{server.build.env.REDDIT_CLIENT_ID}}\",\r\n \"reddit.client.secret\": \"{{server.build.env.REDDIT_CLIENT_SECRET}}\",\r\n \"instagram.username\": \"{{server.build.env.INSTAGRAM_USERNAME}}\",\r\n \"instagram.password\": \"{{server.build.env.INSTAGRAM_PASSWORD}}\",\r\n \"bot.tokens.release\": \"{{server.build.env.BOT_TOKEN}}\",\r\n \"openai.apiToken\": \"{{server.build.env.AI_TOKEN}}\",\r\n \"openai.apiUrl\": \"{{server.build.env.AI_URL}}\",\r\n \"openai.model\": \"{{server.build.env.AI_MODEL}}\",\r\n \"bot.misc.status\": \"{{server.build.env.MISC_STATUS}}\",\r\n \"bot.misc.feedbackChannelId\": \"{{server.build.env.MISC_FEEDBACK}}\",\r\n \"bot.misc.ownerId\": \"{{server.build.env.MISC_OWNER}}\",\r\n \"bot.misc.predefineInformation\": \"{{server.build.env.MISC_PREDEF}}\",\r\n \"bot.misc.invite\": \"{{server.build.env.MISC_INVITE}}\",\r\n \"bot.misc.support\": \"{{server.build.env.MISC_SUPPORT}}\",\r\n \"bot.misc.website\": \"{{server.build.env.MISC_WEB}}\",\r\n \"bot.misc.webinterface\": \"{{server.build.env.MISC_INTERFACE}}\",\r\n \"bot.misc.record\": \"{{server.build.env.MISC_RECORD}}\",\r\n \"bot.misc.twitchAuth\": \"{{server.build.env.MISC_TWITCH}}\",\r\n \"bot.misc.advertisement\": \"{{server.build.env.MISC_ADV}}\",\r\n \"bot.misc.name\": \"{{server.build.env.MISC_NAME}}\",\r\n \"bot.misc.shards\": \"{{server.build.env.MISC_SHARD}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Finished Loading\"\r\n}", "logs": "{}", "stop": "^C" @@ -129,39 +129,9 @@ "field_type": "text" }, { - "name": "Twitter Consumer Key", + "name": "Twitter Bearer Key", "description": "Twitter Application Configuration, used for the Twitter Notifications.", - "env_variable": "TWITTER_CONSUMER_KEY", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:128", - "field_type": "text" - }, - { - "name": "Twitter Consumer Secret", - "description": "Twitter Application Configuration, used for the Twitter Notifications.", - "env_variable": "TWITTER_CONSUMER_SECRET", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:128", - "field_type": "text" - }, - { - "name": "Twitter Access Key", - "description": "Twitter Application Configuration, used for the Twitter Notifications.", - "env_variable": "TWITTER_ACCESS_KEY", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:128", - "field_type": "text" - }, - { - "name": "Twitter Access Secret", - "description": "Twitter Application Configuration, used for the Twitter Notifications.", - "env_variable": "TWITTER_ACCESS_SECRET", + "env_variable": "TWITTER_BEARER", "default_value": "", "user_viewable": true, "user_editable": true, @@ -211,7 +181,7 @@ { "name": "SQL Username", "description": "Username for the SQL connection.", - "env_variable": "SQL_USER", + "env_variable": "DATABASE_USER", "default_value": "root", "user_viewable": true, "user_editable": true, @@ -221,7 +191,7 @@ { "name": "SQL Database", "description": "Database for the SQL Connection", - "env_variable": "SQL_DB", + "env_variable": "DATABASE_DB", "default_value": "root", "user_viewable": true, "user_editable": true, @@ -231,7 +201,7 @@ { "name": "SQL Password", "description": "Password for the SQL connection.", - "env_variable": "SQL_PW", + "env_variable": "DATABASE_PW", "default_value": "", "user_viewable": true, "user_editable": true, @@ -241,7 +211,7 @@ { "name": "SQL Port", "description": "Port for the SQL connection.", - "env_variable": "SQL_PORT", + "env_variable": "DATABASE_PORT", "default_value": "3306", "user_viewable": true, "user_editable": true, @@ -250,12 +220,12 @@ }, { "name": "Database Typ", - "description": "The Typ of the Database Ree6 should use!\r\nPossible typs:\r\n- mariadb\r\n- sqlite", + "description": "The Typ of the Database Ree6 should use!\r\nPossible typs:\r\n- mariadb\r\n- sqlite\r\n- h2\r\n- postgres", "env_variable": "DATABASE_TYP", "default_value": "sqlite", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:mariadb,sqlite", + "rules": "required|string|in:mariadb,sqlite,postgres,postregsql,h2", "field_type": "text" }, { @@ -287,6 +257,166 @@ "user_editable": true, "rules": "nullable|string|max:128", "field_type": "text" + }, + { + "name": "OpenAI Token", + "description": "Your Authentication token that should be used in the AI API calls.", + "env_variable": "AI_TOKEN", + "default_value": "OpenAI API-Token", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "OpenAI Url", + "description": "The URL that should receive the API calls.", + "env_variable": "AI_URL", + "default_value": "https:\/\/api.openai.com\/v1\/chat\/completions", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "OpenAI Model", + "description": "The AI model that should be used in the API calls.", + "env_variable": "AI_MODEL", + "default_value": "gpt-3.5-turbo-0301", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Activity Status", + "description": "The Activity status of the Bot that will be shown.", + "env_variable": "MISC_STATUS", + "default_value": "ree6.de | %guilds% Servers. (%shard%)", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Feedback Channel", + "description": "The Channel Id of the Feedback channel.", + "env_variable": "MISC_FEEDBACK", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "integer", + "field_type": "text" + }, + { + "name": "[DEVELOPER-STUFF] Bot Owner Id", + "description": "The ID of the Bot Owner, this will be used internally on some checks.", + "env_variable": "MISC_OWNER", + "default_value": "321580743488831490", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "Invite Link", + "description": "The Invite link to invite the Bot.", + "env_variable": "MISC_INVITE", + "default_value": "https:\/\/invite.ree6.de", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Predefined Information for AI", + "description": "The Information for the AI.", + "env_variable": "MISC_PREDEF", + "default_value": "You are Ree6 a Discord bot.", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Support Link", + "description": "The Url link for users to receive support.", + "env_variable": "MISC_SUPPORT", + "default_value": "https:\/\/support.ree6.de", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Website", + "description": "The Url to the Website of the Bot.", + "env_variable": "MISC_WEB", + "default_value": "https:\/\/ree6.de", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Webinterface", + "description": "The Url to the Webinterface.", + "env_variable": "MISC_INTERFACE", + "default_value": "https:\/\/cp.ree6.de", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Record Url", + "description": "The Url that uses can access to get their recording.", + "env_variable": "MISC_RECORD", + "default_value": "https:\/\/cp.ree6.de\/external\/recording", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Twitch Url", + "description": "The Url used to connect a Twitch Account with the Ree6 System.", + "env_variable": "MISC_TWITCH", + "default_value": "https:\/\/cp.ree6.de\/external\/twitch", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Advertisment", + "description": "The Advertisement in Embed Footers and the rest.", + "env_variable": "MISC_ADV", + "default_value": "powered by Tube-hosting", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:128", + "field_type": "text" + }, + { + "name": "Name", + "description": "The Name of the Bot.", + "env_variable": "MISC_NAME", + "default_value": "Ree6", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Shards", + "description": "The amount of shards that should be created.", + "env_variable": "MISC_SHARD", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" } ] -} \ No newline at end of file +} From ff170fc9f2fc86e9562a6708075c1a06de6526b3 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Tue, 20 Jun 2023 12:18:54 +0200 Subject: [PATCH 090/251] add intital egg --- game_eggs/cs2d/README.md | 0 game_eggs/cs2d/egg-c-s2-d.json | 62 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 game_eggs/cs2d/README.md create mode 100644 game_eggs/cs2d/egg-c-s2-d.json diff --git a/game_eggs/cs2d/README.md b/game_eggs/cs2d/README.md new file mode 100644 index 00000000..e69de29b diff --git a/game_eggs/cs2d/egg-c-s2-d.json b/game_eggs/cs2d/egg-c-s2-d.json new file mode 100644 index 00000000..1987ba17 --- /dev/null +++ b/game_eggs/cs2d/egg-c-s2-d.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-06-20T12:12:15+02:00", + "name": "CS2D", + "author": "josdekurk@gmail.com", + "description": "Plant and defuse bombs, rescue hostages or accomplish new missions like capture the flag or domination! Use a huge arsenal of weapons and equipment including crazy stuff like portal guns, lasers, RPGs, turrets and much more! You can even build things!", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + }, + "file_denylist": [], + "startup": ".\/cs2d_dedicated", + "config": { + "files": "{\r\n \"sys\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_hostport \": \"sv_hostport {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name {{server.build.env.SERVER_NAME}}\",\r\n \"sv_password\": \"sv_password {{server.build.env.SERVER_PASSWORD}}\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.SERVER_PLAYERS}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"----- Server started -----\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nv=$(curl -s https:\/\/www.cs2d.com\/download.php | grep -Eo \"https?:\/\/\\S+?\\\"\" | grep -i \"get.php?get=cs2d_\" | grep -i \"linux\") # https:\/\/www.unrealsoftware.de\/get.php?get=cs2d_1013_linux.zip\"\r\nn=$(echo ${v#*=} | sed 's\/\"\/\/' ) # cs2d_1013_linux.zip\r\n\r\nc=$(curl -s https:\/\/www.unrealsoftware.de\/get.php?get=${n} | grep -o '' | cut -f2 -d \"<\" | awk '{print $3}' | grep -o '\"[^\"]*\"') # \"get.php?get=cs2d_1013_linux.zip&p=1&cid=15745\"\r\ncid=$(echo ${c\/\/\\\"\/} | cut -f4 -d '=') #15745\r\n\r\nDOWNLOAD_URL=\"https:\/\/www.unrealsoftware.de\/get.php?get=${n}&p=1&cid=${cid}\"\r\n\r\necho \"${DOWNLOAD_URL}\"\r\n\r\ncurl -sSL -o client.zip \"${DOWNLOAD_URL}\"\r\n\r\nunzip -o client.zip\r\nrm client.zip\r\n\r\ncurl -sSL -o dedicated.zip \"https:\/\/www.unrealsoftware.de\/files_pub\/cs2d_dedicated_linux.zip\"\r\nunzip -o dedicated.zip\r\nrm dedicated.zip\r\n\r\nchmod +x cs2d_dedicated\r\n\r\necho \"install finished\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Name", + "description": "", + "env_variable": "SERVER_NAME", + "default_value": "CS2D Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "", + "env_variable": "SERVER_PLAYERS", + "default_value": "12", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file From d32aa08957e589df8eafc8b787bb47cacd211b4b Mon Sep 17 00:00:00 2001 From: Quinten Date: Tue, 20 Jun 2023 12:22:05 +0200 Subject: [PATCH 091/251] add readme --- README.md | 2 ++ game_eggs/README.md | 4 +++- game_eggs/cs2d/README.md | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e782063..5963283f 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,8 @@ If you are reading this it looks like you are looking to add an egg to your serv [ClassiCube](game_eggs/classicube) +[CS2D](game_eggs/cs2d) + * [MCGalaxy](game_eggs/classicube/mcgalaxy) [Doom](game_eggs/doom) diff --git a/game_eggs/README.md b/game_eggs/README.md index 978c5961..d63d9981 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -12,7 +12,9 @@ [ClassiCube](classicube) -* [MCGalaxy](classicube/mcgalaxy) +[ClassiCube](classicube) + +* [CS2D](cs2d) [Doom](doom) * [Zandronum](doom/zandronum) diff --git a/game_eggs/cs2d/README.md b/game_eggs/cs2d/README.md index e69de29b..4a53fc87 100644 --- a/game_eggs/cs2d/README.md +++ b/game_eggs/cs2d/README.md @@ -0,0 +1,35 @@ +# CS2D + + +## From their [Site](https://www.cs2d.com/index.php) + + +## [Documentation](https://www.cs2d.com/serverhosting.php) + + +## Install notes + +This egg only supports downloading the latest releases + +## Minimum RAM warning + +Minimum required memory to run the server. +1GB is recommended. 2GB+ is preferred + +## Minumim Sorage warning + +Minimum required storage to run the server. +600Mib is recommended. 2GB+ is preferred + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 36963 | + +### Notes + + +36963 is the default port, but any port can be used. \ No newline at end of file From dfb1ec353805c21969fd4d7a2883c58d07313d37 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 22 Jun 2023 14:20:16 +0200 Subject: [PATCH 092/251] Generic-python: force install container to be debian 11 --- generic/python/egg-python-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/python/egg-python-generic.json b/generic/python/egg-python-generic.json index deb33f8d..96e126e3 100644 --- a/generic/python/egg-python-generic.json +++ b/generic/python/egg-python-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-27T23:37:50-08:00", + "exported_at": "2023-06-22T14:18:47+02:00", "name": "python generic", "author": "parker@parkervcp.com", "description": "A Generic Python Egg for Pterodactyl\r\n\r\nTested with: https:\/\/github.com\/Ispira\/pixel-bot", @@ -28,7 +28,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# Python App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git python repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\nexport HOME=\/mnt\/server\r\n\r\necho \"Installing python requirements into folder\"\r\nif [[ ! -z ${PY_PACKAGES} ]]; then\r\n pip install -U --prefix .local ${PY_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/requirements.txt ]; then\r\n pip install -U --prefix .local -r ${REQUIREMENTS_FILE}\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0", - "container": "python:3.8-slim", + "container": "python:3.8-slim-bullseye", "entrypoint": "bash" } }, From ca9ab86cb2b84b4b3c9f22e5a67a08e1b20ecab3 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 22 Jun 2023 18:57:59 +0200 Subject: [PATCH 093/251] Update Game.ini --- game_eggs/steamcmd_servers/pavlov_vr/Game.ini | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/pavlov_vr/Game.ini b/game_eggs/steamcmd_servers/pavlov_vr/Game.ini index 8e519c32..879dee98 100644 --- a/game_eggs/steamcmd_servers/pavlov_vr/Game.ini +++ b/game_eggs/steamcmd_servers/pavlov_vr/Game.ini @@ -1,15 +1,19 @@ [/Script/Pavlov.DedicatedServer] bEnabled=true ServerName="My dedicated server" -MaxPlayers=50 +MaxPlayers=10 #Set this to 10 for Shack. 24 is the max for PC, setting it higher will not allow players to join. +ApiKey="ABC123FALSEKEYDONTUSEME" bSecured=true bCustomServer=true +bVerboseLogging=false +bCompetitive=false #This only works for SND bWhitelist=false RefreshListTime=120 -LimitedAmmoType=2 +LimitedAmmoType=0 TickRate=90 TimeLimit=60 -Password=0000 -MapRotation=(MapId="UGC1668673188", GameMode="SND") +#Password=0000 +#BalanceTableURL="vankruptgames/BalancingTable/main" +MapRotation=(MapId="UGC1758245796", GameMode="GUN") MapRotation=(MapId="datacenter", GameMode="SND") MapRotation=(MapId="sand", GameMode="DM") \ No newline at end of file From dd48cbf6ff003679566cc721a12def791b6bda8c Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Sun, 25 Jun 2023 10:53:08 +0200 Subject: [PATCH 094/251] add Sons of the Forrest (#2320) add: Sons of the Forrest --------- Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- README.md | 1 + game_eggs/README.md | 3 +- game_eggs/steamcmd_servers/README.md | 4 + .../sonsoftheforest/README.md | 29 ++++ .../sonsoftheforest/dedicatedserver.cfg | 41 +++++ .../egg-sons-of-the-forest.json | 164 ++++++++++++++++++ .../sonsoftheforest/ownerswhitelist.txt | 6 + 7 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 game_eggs/steamcmd_servers/sonsoftheforest/README.md create mode 100644 game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg create mode 100644 game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json create mode 100644 game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt diff --git a/README.md b/README.md index 5963283f..831ad72d 100644 --- a/README.md +++ b/README.md @@ -271,6 +271,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [exiled](game_eggs/steamcmd_servers/scpsl/exiled) * [multiadmin](game_eggs/steamcmd_servers/scpsl/multiadmin) * [Soldat](game_eggs/steamcmd_servers/soldat) +* [Sons of the Forest](game_eggs/steamcmd_servers/sonsoftheforest) * [Space Engineers](game_eggs/steamcmd_servers/space_engineers) * [default](game_eggs/steamcmd_servers/space_engineers/default) * [torch](game_eggs/steamcmd_servers/space_engineers/torch) diff --git a/game_eggs/README.md b/game_eggs/README.md index d63d9981..dd2f7491 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -1,4 +1,4 @@ -# Game Eggs +# Game Eggs [Among Us](among_us) @@ -171,6 +171,7 @@ * [Exiled](steamcmd_servers/scpsl/exiled) * [Multiadmin](steamcmd_servers/scpsl/multiadmin) * [Soldat](steamcmd_servers/soldat) +* [Sons of the Forrest](steamcmd_servers/sonsoftheforest) * [Space Engineers](steamcmd_servers/space_engineers) * [default](steamcmd_servers/space_engineers/default) * [torch](steamcmd_servers/space_engineers/torch) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index b338a27c..a3bf6e15 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -189,6 +189,10 @@ This is a collection of servers that use SteamCMD to install. [Soldat](soldat) +## Sons of the Forrest + +[Sons of the Forest](sonsoftheforest) + ## Space Engineers [Space Engineers](space_engineers) diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/README.md b/game_eggs/steamcmd_servers/sonsoftheforest/README.md new file mode 100644 index 00000000..d4f2ca3d --- /dev/null +++ b/game_eggs/steamcmd_servers/sonsoftheforest/README.md @@ -0,0 +1,29 @@ +# Sons of the Forest + +### Game Description + +Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends. + +### Useful links + +Steam: https://store.steampowered.com/app/1326470/Sons_Of_The_Forest/ + +### Author & Contributers +| Name | Github Profile | Buy me a Coffee | +| ------------- |-------------|-------------| +| gOOvER | https://github.com/gOOvER | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B351D0Q) | + + +### Server Ports + +Sons of the Forest requires up to 3 ports. You can choose every port you want. + +| Port | default | +|---------|---------------| +| Game | 8766 | +| Query | 27016 | +| BlobSyncPort | 9700 | + +## Special Note + +you need a minimum of 8GB RAM for the Server to run \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg new file mode 100644 index 00000000..549e1d21 --- /dev/null +++ b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg @@ -0,0 +1,41 @@ +{ + "IpAddress": "0.0.0.0", + "GamePort": 8766, + "QueryPort": 27016, + "BlobSyncPort": 9700, + "ServerName": "Sons Of The Forest Server (dedicated)", + "MaxPlayers": 8, + "Password": "", + "LanOnly": false, + "SaveSlot": 1, + "SaveMode": "Continue", + "GameMode": "Normal", + "SaveInterval": 600, + "IdleDayCycleSpeed": 0.0, + "IdleTargetFramerate": 5, + "ActiveTargetFramerate": 60, + "LogFilesEnabled": false, + "TimestampLogFilenames": true, + "TimestampLogEntries": true, + "GameSettings": { + "Gameplay.TreeRegrowth": true, + "Structure.Damage": true + }, + "CustomGameModeSettings": { + "GameSetting.Vail.EnemySpawn": true, + "GameSetting.Vail.EnemyHealth": "Normal", + "GameSetting.Vail.EnemyDamage": "Normal", + "GameSetting.Vail.EnemyArmour": "Normal", + "GameSetting.Vail.EnemyAggression": "Normal", + "GameSetting.Vail.AnimalSpawnRate": "Normal", + "GameSetting.Environment.StartingSeason": "Summer", + "GameSetting.Environment.SeasonLength": "Default", + "GameSetting.Environment.DayLength": "Default", + "GameSetting.Environment.PrecipitationFrequency": "Default", + "GameSetting.Survival.ConsumableEffects": "Normal", + "GameSetting.Survival.PlayerStatsDamage": "Off", + "GameSetting.Survival.ColdPenalties": "Off", + "GameSetting.Survival.ReducedFoodInContainers": false, + "GameSetting.Survival.SingleUseContainers": false, + } +} \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json new file mode 100644 index 00000000..c86e01d9 --- /dev/null +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -0,0 +1,164 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-06-25T10:24:55+02:00", + "name": "Sons Of The Forest", + "author": "info@goover.de", + "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"", + "config": { + "files": "{\r\n \"serverconfig\/dedicatedserver.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ServerName\": \"{{server.build.env.SRV_NAME}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"ServerStart Success\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}Sons of the Forrest Installscript${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/serverconfig\r\nFILE=$HOME\/serverconfig\/dedicatedserver.cfg\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}dedicatedserver.cfg found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No dedicatedserver.cfg found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o dedicatedserver.cfg https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/dedicatedserver.cfg\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\nFILE=$HOME\/serverconfig\/ownerswhitelist.txt\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}ownerswhitelist.txt found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No ownerswhitelist.txt found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o ownerswhitelist.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/ownerswhitelist.txt\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "QueryPort", + "description": "UDP port used by Steam to list the server and enable the discovery services.", + "env_variable": "QUERY_PORT", + "default_value": "27016", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "BlobSyncPort", + "description": "BlobSyncPort UDP port used by the BlobSync system to initialize game systems and exchange data.", + "env_variable": "BLOBSYNC_PORT", + "default_value": "9700", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server visible in the server list, and in the Steam contacts.", + "env_variable": "SRV_NAME", + "default_value": "Pterodactyl hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "The maximum number of players allowed simultaneously on the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "Password", + "description": "", + "env_variable": "SRV_PW", + "default_value": "changeme", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Gamemode", + "description": "Sets the difficulty game mode when creating a new save. This parameter is ignored if loading a save (save mode set to \u201ccontinue\u201d with a save that exists on the slot). If the game mode is set to \u201ccustom\u201d, then the custom game mode settings will be read from CustomGameModeSettings option, described later.", + "env_variable": "GAME_MODE", + "default_value": "normal", + "user_viewable": true, + "user_editable": true, + "rules": "string|in:normal,hard,hardsurvival,peaceful,custom", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "SRCDS_APPID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "2465200", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "mono vcrun2019", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINDOWS_INSTALL", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt b/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt new file mode 100644 index 00000000..adbdab4e --- /dev/null +++ b/game_eggs/steamcmd_servers/sonsoftheforest/ownerswhitelist.txt @@ -0,0 +1,6 @@ +# In order to be able to administrate your server from in game directly, you will need to setup server ownership. +# Add below the steam ids of every server owner, one steam id per line. +# To find your SteamID, open Steam and click on your name on the top right, then go to Account Details. +# You can use # to comment out a line. That can be helpful to keep track of SteamIDs, you can include their name in the line above or below, starting with a #. + + From 84f3e91f2c6bf338960af3beb4b6d7efb24f5d11 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Mon, 26 Jun 2023 19:42:48 +0200 Subject: [PATCH 095/251] removed unknown Disord ID and change it to a placeholder. No need to use a unknown Discord ID --- bots/discord/ree6/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/ree6/config.yml b/bots/discord/ree6/config.yml index c0b68c1e..6b25c736 100644 --- a/bots/discord/ree6/config.yml +++ b/bots/discord/ree6/config.yml @@ -40,7 +40,7 @@ bot: misc: status: ree6.de | %guilds% Servers. (%shard%) # The Status of the Bot. feedbackChannelId: 0 # The Channel used for Feedback. - ownerId: 321580743488831490 # The ID of the Bot Owner. Change this to yours! + ownerId: # The ID of the Bot Owner. Change this to yours! predefineInformation: | # Predefined Information for the AI. You are Ree6 a Discord bot. invite: https://invite.ree6.de # The Invite Link of the Bot. From 29183705e2654adf44a59cf07bc39daa8113588b Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Mon, 26 Jun 2023 19:45:21 +0200 Subject: [PATCH 096/251] typo --- bots/discord/ree6/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/ree6/config.yml b/bots/discord/ree6/config.yml index 6b25c736..ba2240d5 100644 --- a/bots/discord/ree6/config.yml +++ b/bots/discord/ree6/config.yml @@ -40,7 +40,7 @@ bot: misc: status: ree6.de | %guilds% Servers. (%shard%) # The Status of the Bot. feedbackChannelId: 0 # The Channel used for Feedback. - ownerId: # The ID of the Bot Owner. Change this to yours! + ownerId: # The ID of the Bot Owner. Change this to yours! predefineInformation: | # Predefined Information for the AI. You are Ree6 a Discord bot. invite: https://invite.ree6.de # The Invite Link of the Bot. From e71d071c24620efcdc0316b3a54d1738f7410f3d Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Wed, 28 Jun 2023 16:20:34 +0200 Subject: [PATCH 097/251] Sons of the Forest - Limit max players to 8 (#2328) * limit max players to 8 * fix typos --- game_eggs/README.md | 2 +- game_eggs/steamcmd_servers/README.md | 2 +- .../steamcmd_servers/sonsoftheforest/dedicatedserver.cfg | 2 +- .../sonsoftheforest/egg-sons-of-the-forest.json | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/game_eggs/README.md b/game_eggs/README.md index dd2f7491..14c4f319 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -171,7 +171,7 @@ * [Exiled](steamcmd_servers/scpsl/exiled) * [Multiadmin](steamcmd_servers/scpsl/multiadmin) * [Soldat](steamcmd_servers/soldat) -* [Sons of the Forrest](steamcmd_servers/sonsoftheforest) +* [Sons of the Forest](steamcmd_servers/sonsoftheforest) * [Space Engineers](steamcmd_servers/space_engineers) * [default](steamcmd_servers/space_engineers/default) * [torch](steamcmd_servers/space_engineers/torch) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index a3bf6e15..92ff5cfc 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -189,7 +189,7 @@ This is a collection of servers that use SteamCMD to install. [Soldat](soldat) -## Sons of the Forrest +## Sons of the Forest [Sons of the Forest](sonsoftheforest) diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg index 549e1d21..5686e1da 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg +++ b/game_eggs/steamcmd_servers/sonsoftheforest/dedicatedserver.cfg @@ -36,6 +36,6 @@ "GameSetting.Survival.PlayerStatsDamage": "Off", "GameSetting.Survival.ColdPenalties": "Off", "GameSetting.Survival.ReducedFoodInContainers": false, - "GameSetting.Survival.SingleUseContainers": false, + "GameSetting.Survival.SingleUseContainers": false } } \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json index c86e01d9..c931aa17 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-25T10:24:55+02:00", + "exported_at": "2023-06-28T16:10:30+02:00", "name": "Sons Of The Forest", "author": "info@goover.de", "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}Sons of the Forrest Installscript${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/serverconfig\r\nFILE=$HOME\/serverconfig\/dedicatedserver.cfg\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}dedicatedserver.cfg found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No dedicatedserver.cfg found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o dedicatedserver.cfg https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/dedicatedserver.cfg\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\nFILE=$HOME\/serverconfig\/ownerswhitelist.txt\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}ownerswhitelist.txt found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No ownerswhitelist.txt found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o ownerswhitelist.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/ownerswhitelist.txt\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}Sons of the Forest Installscript${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nmkdir -p \/mnt\/server\/serverconfig\r\nFILE=$HOME\/serverconfig\/dedicatedserver.cfg\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}dedicatedserver.cfg found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No dedicatedserver.cfg found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o dedicatedserver.cfg https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/dedicatedserver.cfg\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\nFILE=$HOME\/serverconfig\/ownerswhitelist.txt\r\nif [ -f \"$FILE\" ]; then\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${GREEN}ownerswhitelist.txt found.${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\nelse \r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n echo -e \"${RED}No ownerswhitelist.txt found. Downloading default...${NC}\"\r\n echo -e \"${BLUE}-------------------------------------------------${NC}\"\r\n cd $HOME\/serverconfig\/\r\n curl -sSL -o ownerswhitelist.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/sonsoftheforest\/ownerswhitelist.txt\r\nfi\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -67,7 +67,7 @@ "default_value": "4", "user_viewable": true, "user_editable": true, - "rules": "required|integer|min:1", + "rules": "required|integer|between:1,8", "field_type": "text" }, { From 998087b89a41116d7ee25c729f04cd8d96297378 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 29 Jun 2023 10:44:02 +0200 Subject: [PATCH 098/251] Add extra comment to Syeam Networking variable --- .../no_one_survived/egg-no-one-survived.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json index 9f4f5b7a..66c39a6d 100644 --- a/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json +++ b/game_eggs/steamcmd_servers/no_one_survived/egg-no-one-survived.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-02T20:29:13+02:00", + "exported_at": "2023-06-29T10:42:53+02:00", "name": "No One Survived", "author": "josdekurk@gmail.com", "description": "This is a multiplayer cooperative open world construction survival sandbox game, where you and your friends must find supplies and build shelters in this world. You have to keep an eye on your character's needs state at all times, a bad state is likely to lead to death.", @@ -110,7 +110,7 @@ }, { "name": "Steam Networking", - "description": "Enable or disable steam networking", + "description": "Enable or disable steam networking.\r\nLeave this to False as with True it will fail to start!", "env_variable": "STEAM_NETWORKING", "default_value": "False", "user_viewable": true, @@ -199,4 +199,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 8e2b2fe1098db8c56a2ace7478e9443486ec45ec Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Fri, 30 Jun 2023 18:47:08 +0800 Subject: [PATCH 099/251] Updates startup to resolve issues with stop action Corrects call to rcon tool - the -c flag shouldn't be there. Calls processes async and then waits on them so that signal traps can work Traps *both* SIGINT and SIGTERM to account for wings bugs --- .../egg-ark--survival-evolved.json | 47 ++++++++++++------- 1 file changed, 29 insertions(+), 18 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json index 555bfd66..4952cafc 100644 --- a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json +++ b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json @@ -1,21 +1,21 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-11-26T13:48:52+01:00", + "exported_at": "2023-06-30T10:44:53+00:00", "name": "Ark: Survival Evolved", "author": "dev@shepper.fr", "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK", "features": [ "steam_disk_space" ], - "images": [ - "ghcr.io\/parkervcp\/games:source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + }, "file_denylist": [], - "startup": "rmv() { echo -e \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c saveworld && rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} -c DoExit; }; trap rmv 15; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & until echo \"waiting for rcon connection...\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD}; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<\/proc\/$$\/fd\/0 & wait $!; do sleep 5; done", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", @@ -37,7 +37,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|alpha_dash|between:1,100" + "rules": "nullable|alpha_dash|between:1,100", + "field_type": "text" }, { "name": "Admin Password", @@ -46,7 +47,8 @@ "default_value": "PleaseChangeMe", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_dash|between:1,100" + "rules": "required|alpha_dash|between:1,100", + "field_type": "text" }, { "name": "Server Map", @@ -55,7 +57,8 @@ "default_value": "TheIsland", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Server Name", @@ -64,7 +67,8 @@ "default_value": "A Pterodactyl Hosted ARK Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:128" + "rules": "required|string|max:128", + "field_type": "text" }, { "name": "Rcon Port", @@ -73,7 +77,8 @@ "default_value": "27020", "user_viewable": true, "user_editable": true, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Query Port", @@ -82,7 +87,8 @@ "default_value": "27015", "user_viewable": true, "user_editable": true, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Auto-update server", @@ -91,7 +97,8 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|boolean" + "rules": "required|boolean", + "field_type": "text" }, { "name": "Battle Eye", @@ -100,7 +107,8 @@ "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "required|boolean" + "rules": "required|boolean", + "field_type": "text" }, { "name": "Mods", @@ -109,7 +117,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "App ID", @@ -118,7 +127,8 @@ "default_value": "376030", "user_viewable": true, "user_editable": false, - "rules": "nullable|numeric" + "rules": "nullable|numeric", + "field_type": "text" }, { "name": "Additional Arguments", @@ -127,7 +137,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" } ] -} +} \ No newline at end of file From 723f1d38e3c894d55da3d423463160c822872ffe Mon Sep 17 00:00:00 2001 From: Enozi <54645039+enozii@users.noreply.github.com> Date: Sat, 1 Jul 2023 11:16:55 +0200 Subject: [PATCH 100/251] Updated Evrima egg (#2334) * Updated Evrima egg * cleanup: The Isle --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- .../the_isle/evrima/egg-the-isle.json | 100 +++++++++++++----- 1 file changed, 76 insertions(+), 24 deletions(-) diff --git a/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json b/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json index cee68026..0dd4ee8a 100644 --- a/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json +++ b/game_eggs/steamcmd_servers/the_isle/evrima/egg-the-isle.json @@ -4,25 +4,27 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-09T20:07:00+01:00", + "exported_at": "2023-07-01T11:11:33+02:00", "name": "The Isle", "author": "fredrik.johansenfuun@gmail.com", "description": "The Isle is an open beta with an open-world survival game where players choose from three factions in an attempt to survive a fierce island. Hunt. Prey. Survive.", - "features": null, + "features": [ + "steam_disk_space" + ], "docker_images": { - "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": "\/home\/container\/steamcmd\/steamcmd.sh +force_install_dir \/home\/container +login Anonymous +app_update 412680 -beta evrima +quit && \/home\/container\/TheIsle\/Binaries\/Linux\/TheIsleServer-Linux-Shipping -Port=$SERVER_PORT -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8", + "startup": "\/home\/container\/TheIsle\/Binaries\/Linux\/TheIsleServer-Linux-Shipping -Port=$SERVER_PORT -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8", "config": { - "files": "{\r\n \"\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayerCount\": \"MaxPlayerCount={{server.build.env.PLAYER_COUNT}}\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.PLAYER_COUNT}}\",\r\n \"RconEnabled\": \"RconEnabled={{server.build.env.RCON}}\",\r\n \"RconPort\": \"RconPort={{server.build.env.RCON_PORT}}\",\r\n \"RconPassword\": \"RconPassword={{server.build.env.RCON_PASSWORD}}\",\r\n \"QueuePort\": \"QueuePort={{server.build.env.QUEUE_PORT}}\",\r\n \"discord\": \"discord={{server.build.env.DISCORD}}\",\r\n \"bEnableHumans\": \"bEnableHumans={{server.build.env.HUMANS}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"r.EyeAdaptation.BlackHistogramBucketInfluence =\"\r\n}", + "files": "{\r\n \"\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayerCount\": \"MaxPlayerCount={{server.build.env.PLAYER_COUNT}}\",\r\n \"MaxPlayers\": \"MaxPlayers={{server.build.env.PLAYER_COUNT}}\",\r\n \"bRconEnabled\": \"bRconEnabled={{server.build.env.RCON}}\",\r\n \"RconPort\": \"RconPort={{server.build.env.RCON_PORT}}\",\r\n \"RconPassword\": \"RconPassword={{server.build.env.RCON_PASSWORD}}\",\r\n \"bQueueEnabled\": \"bQueueEnabled={{server.build.env.ENABLE_QUEUE}}\",\r\n \"QueuePort\": \"QueuePort={{server.build.env.QUEUE_PORT}}\",\r\n \"discord\": \"discord={{server.build.env.DISCORD}}\",\r\n \"bEnableHumans\": \"bEnableHumans={{server.build.env.HUMANS}}\",\r\n \"bServerPassword\": \"bServerPassword={{server.build.env.SERVER_PASSWORD_ENABLED}}\",\r\n \"ServerPassword\": \"ServerPassword={{server.build.env.SERVER_PASSWORD}}\",\r\n \"bAllowReplay\": \"bAllowReplay={{server.build.env.ALLOW_REPLAY}}\",\r\n \"bServerDynamicWeather\": \"bServerDynamicWeather={{server.build.env.DYNAMIC_WEATHER}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Display: Session started succesfully!\"\r\n}", "logs": "{}", "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\n\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) validate +quit \r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# The Isle\r\nmkdir -p \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n#Config File\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini << ENDOFFILE\r\n[\/Script\/Engine.Game]\r\nRconEnabled=${RCON}\r\nRconPort=${RCON_PORT}\r\nRconPassword=${RCON_PASSWORD}\r\n-\r\n[\/Script\/TheIsle.TIGameSession]\r\nServerName=${SERVER_NAME}\r\nMaxPlayerCount=${PLAYER_COUNT}\r\nbEnableGlobalChat=true\r\nbGlobalIsSpeciesOnly=false\r\nbLocalIsSpeciesOnly=true\r\nbEnableHumans=${HUMANS}\r\nLocalChatRange=20000.f\r\nQueuePort=${QUEUE_PORT}\r\ndiscord=${DISCORD}\r\n-\r\n[\/Script\/Engine.GameSession]\r\nMaxPlayers=${PLAYER_COUNT}\r\n-\r\n[\/Script\/TheIsle.TIGameStateBase]\r\nAdminsSteamIDs=${ADMINSTEAMID}\r\nENDOFFILE\r\n#Hotfix\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Engine.ini << ENDOFFILE\r\n[Core.System]\r\nPaths=..\/..\/..\/Engine\/Content\r\nPaths=%GAMEDIR%Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/SoundUtilities\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Synthesis\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/AudioSynesthesia\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/WebBrowserWidget\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/FX\/Niagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/PythonScriptPlugin\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/SteamCore\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/RVTObjectLandscapeBlending\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSS\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/DonMeshPainting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/UIPF\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/EOSCore\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ControlRig\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSSMoviePipelineSupport\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/MovieRenderPipeline\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Compositing\/OpenColorIO\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/SequencerScripting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/ImpostorBaker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/2D\/Paper2D\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Developer\/AnimationSharing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/GeometryMode\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/SpeedTreeImporter\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Enterprise\/DatasmithContent\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosClothEditor\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryProcessing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryCollectionPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosSolverPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosNiagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/MotoSynth\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Media\/MediaCompositing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXREyeTracker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXR\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXRHandTracking\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/VirtualProduction\/Takes\/Content\r\n\r\n[EpicOnlineServices]\r\nDedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW\r\nDedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8\r\nENDOFFILE\r\nchmod -R 777 \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n# The Isle\r\nmkdir -p \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n#Config File\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Game.ini << ENDOFFILE\r\n[\/Script\/TheIsle.TIGameSession]\r\nServerName=${SERVER_NAME}\r\nMaxPlayerCount=${PLAYER_COUNT}\r\nbRconEnabled=${RCON}\r\nRconPort=${RCON_PORT}\r\nRconPassword=${RCON_PASSWORD}\r\nbServerPassword=${SERVER_PASSWORD_ENABLED}\r\nServerPassword=${SERVER_PASSWORD}\r\nbServerDynamicWeather=${DYNAMIC_WEATHER}\r\nbAllowReplay=${ALLOW_REPLAY}\r\nbEnableHumans=${HUMANS}\r\nbQueueEnabled=${ENABLE_QUEUE}\r\nQueuePort=${QUEUE_PORT}\r\n-\r\n[\/Script\/TheIsle.TIGameStateBase]\r\nAdminsSteamIDs=${ADMINSTEAMID}\r\nENDOFFILE\r\n#Hotfix\r\ncat > \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\/Engine.ini << ENDOFFILE\r\n[Core.System]\r\nPaths=..\/..\/..\/Engine\/Content\r\nPaths=%GAMEDIR%Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/SoundUtilities\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Synthesis\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/AudioSynesthesia\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/WebBrowserWidget\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/FX\/Niagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/PythonScriptPlugin\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/SteamCore\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/RVTObjectLandscapeBlending\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSS\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/DonMeshPainting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/UIPF\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/EOSCore\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ControlRig\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/Nvidia\/DLSSMoviePipelineSupport\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/MovieRenderPipeline\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Compositing\/OpenColorIO\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/MovieScene\/SequencerScripting\/Content\r\nPaths=..\/..\/..\/TheIsle\/Plugins\/ImpostorBaker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/2D\/Paper2D\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Developer\/AnimationSharing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/GeometryMode\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Editor\/SpeedTreeImporter\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Enterprise\/DatasmithContent\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosClothEditor\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryProcessing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/GeometryCollectionPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosSolverPlugin\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/ChaosNiagara\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Experimental\/MotoSynth\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Media\/MediaCompositing\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXREyeTracker\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXR\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/Runtime\/OpenXRHandTracking\/Content\r\nPaths=..\/..\/..\/Engine\/Plugins\/VirtualProduction\/Takes\/Content\r\n\r\n[EpicOnlineServices]\r\nDedicatedServerClientId=xyza7891gk5PRo3J7G9puCJGFJjmEguW\r\nDedicatedServerClientSecret=pKWl6t5i9NJK8gTpVlAxzENZ65P8hYzodV8Dqe5Rlc8\r\nENDOFFILE\r\n\r\nchmod -R 777 \/mnt\/server\/TheIsle\/Saved\/Config\/LinuxServer\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -48,6 +50,36 @@ "rules": "required|numeric|digits_between:1,100", "field_type": "text" }, + { + "name": "Allow Replay", + "description": "Enable or disable Replay", + "env_variable": "ALLOW_REPLAY", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Humans", + "description": "Enable or disable humans", + "env_variable": "HUMANS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Enable Dynamic weather", + "description": "Enable or disable dynamic weather", + "env_variable": "DYNAMIC_WEATHER", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "RCON", "description": "Enable RCON", @@ -64,7 +96,7 @@ "env_variable": "RCON_PORT", "default_value": "44000", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "required|numeric", "field_type": "text" }, @@ -72,19 +104,29 @@ "name": "RCON Password", "description": "", "env_variable": "RCON_PASSWORD", - "default_value": "RCON_password_is_a_must", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "required|string", "field_type": "text" }, + { + "name": "Enable Queue", + "description": "Enable the queue", + "env_variable": "ENABLE_QUEUE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "Queue Port", "description": "", "env_variable": "QUEUE_PORT", "default_value": "44000", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "required|numeric", "field_type": "text" }, @@ -94,20 +136,30 @@ "env_variable": "DISCORD", "default_value": "norden", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "nullable|string|max:20", "field_type": "text" }, { - "name": "Humans", - "description": "Enable humans", - "env_variable": "HUMANS", + "name": "Server Password", + "description": "Enable server password", + "env_variable": "SERVER_PASSWORD_ENABLED", "default_value": "false", "user_viewable": true, "user_editable": true, "rules": "required|string|in:true,false", "field_type": "text" }, + { + "name": "Server Password", + "description": "The password of the server", + "env_variable": "SERVER_PASSWORD", + "default_value": "No password", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, { "name": "Auto Update", "description": "Auto update on restart", @@ -118,6 +170,16 @@ "rules": "required|boolean", "field_type": "text" }, + { + "name": "Beta branch of a steam app.", + "description": "", + "env_variable": "SRCDS_BETAID", + "default_value": "evrima", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, { "name": "App id", "description": "", @@ -127,16 +189,6 @@ "user_editable": false, "rules": "required|string|in:412680", "field_type": "text" - }, - { - "name": "Beta ID", - "description": "Beta branch of a steam app.", - "env_variable": "SRCDS_BETAID", - "default_value": "evrima", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|", - "field_type": "text" } ] } \ No newline at end of file From 2bf0da4a047d96b4fc13c4f948f0f2dd4e751a84 Mon Sep 17 00:00:00 2001 From: Vedran <94656982+vedran77@users.noreply.github.com> Date: Sat, 1 Jul 2023 11:39:30 +0200 Subject: [PATCH 101/251] OpenMp Egg (#2269) * Add OpenMp egg * cleanup: OpenMP --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/gta/README.md | 3 + game_eggs/gta/openmp/README.md | 10 +++ game_eggs/gta/openmp/config.json | 93 ++++++++++++++++++++++++++ game_eggs/gta/openmp/egg-open-m-p.json | 52 ++++++++++++++ 6 files changed, 160 insertions(+) create mode 100644 game_eggs/gta/openmp/README.md create mode 100644 game_eggs/gta/openmp/config.json create mode 100644 game_eggs/gta/openmp/egg-open-m-p.json diff --git a/README.md b/README.md index 772456bf..cc0b8b53 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * GTA SA * [Multi Theft Auto](game_eggs/gta/mtasa) * [SA-MP](game_eggs/gta/samp) + * [OpenMp](game_eggs/gta/openmp) * GTA * [GTAC](game_eggs/gta/gtac) diff --git a/game_eggs/README.md b/game_eggs/README.md index 67501909..a4c31d61 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -40,6 +40,7 @@ * GTA SA * [Multi Theft Auto](gta/mtasa) * [SA-MP](gta/samp) + * [OpenMp](gta/openmp) * GTA * [GTAC](gta/gtac) diff --git a/game_eggs/gta/README.md b/game_eggs/gta/README.md index 9ac0a052..fe23fdd1 100644 --- a/game_eggs/gta/README.md +++ b/game_eggs/gta/README.md @@ -20,6 +20,9 @@ alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V [GTA SA:MP](https://www.sa-mp.com/) SA-MP is a free Massively Multiplayer Online game mod for the PC version of Rockstar Games Grand Theft Auto: San Andreas (tm). +[OpenMp](https://www.open.mp/) +A multiplayer mod for Grand Theft Auto: San Andreas that is fully backwards compatible with San Andreas Multiplayer. + [MTA SA](https://mtasa.com/) What more could you want? Multi Theft Auto provides the best online Grand Theft Auto experience there is. Read on to find out more. diff --git a/game_eggs/gta/openmp/README.md b/game_eggs/gta/openmp/README.md new file mode 100644 index 00000000..2f9cabb5 --- /dev/null +++ b/game_eggs/gta/openmp/README.md @@ -0,0 +1,10 @@ +# OpenMp + +The [OpenMp](https://www.open.mp/) GTA San Andreas dedicated server + +## Server Ports + + +| Port | default | +|---------|---------| +| Game | 25570 | diff --git a/game_eggs/gta/openmp/config.json b/game_eggs/gta/openmp/config.json new file mode 100644 index 00000000..d2a04f2e --- /dev/null +++ b/game_eggs/gta/openmp/config.json @@ -0,0 +1,93 @@ +{ + "announce": true, + "artwork": { + "cdn": "", + "enable": true, + "models_path": "models" + }, + "chat_input_filter": true, + "enable_query": true, + "game": { + "allow_interior_weapons": true, + "chat_radius": 200.0, + "death_drop_amount": 0, + "gravity": 0.008, + "group_player_objects": false, + "lag_compensation_mode": 1, + "map": "", + "mode": "", + "nametag_draw_radius": 70.0, + "player_marker_draw_radius": 250.0, + "player_marker_mode": 1, + "time": 12, + "use_all_animations": false, + "use_chat_radius": false, + "use_entry_exit_markers": true, + "use_instagib": false, + "use_manual_engine_and_lights": false, + "use_nametag_los": true, + "use_nametags": true, + "use_player_marker_draw_radius": false, + "use_player_ped_anims": false, + "use_stunt_bonuses": true, + "use_vehicle_friendly_fire": false, + "use_zone_names": false, + "vehicle_respawn_time": 10000, + "weather": 10 + }, + "language": "", + "logging": { + "enable": true, + "log_chat": true, + "log_cookies": false, + "log_deaths": true, + "log_queries": false, + "log_sqlite": false, + "log_sqlite_queries": false, + "timestamp_format": "[%Y-%m-%dT%H:%M:%S%z]", + "use_prefix": true, + "use_timestamp": true + }, + "max_bots": 0, + "max_players": 50, + "name": "open.mp server", + "network": { + "acks_limit": 3000, + "aiming_sync_rate": 30, + "allow_037_clients": true, + "bind": "", + "cookie_reseed_time": 300000, + "in_vehicle_sync_rate": 30, + "limits_ban_time": 60000, + "message_hole_limit": 3000, + "messages_limit": 500, + "minimum_connection_time": 0, + "mtu": 576, + "multiplier": 10, + "on_foot_sync_rate": 30, + "player_marker_sync_rate": 2500, + "player_timeout": 10000, + "port": 7777, + "public_addr": "", + "stream_radius": 200.0, + "stream_rate": 1000, + "time_sync_rate": 30000, + "use_lan_mode": false + }, + "password": "", + "pawn": { + "legacy_plugins": [], + "main_scripts": [ + "test 1" + ], + "side_scripts": [] + }, + "rcon": { + "allow_teleport": false, + "enable": false, + "password": "changeme" + }, + "sleep": 5.0, + "use_dyn_ticks": true, + "website": "open.mp" +} diff --git a/game_eggs/gta/openmp/egg-open-m-p.json b/game_eggs/gta/openmp/egg-open-m-p.json new file mode 100644 index 00000000..6b41c066 --- /dev/null +++ b/game_eggs/gta/openmp/egg-open-m-p.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-01T11:37:31+02:00", + "name": "OpenMP", + "author": "vedrancappone@gmail.com", + "description": "A multiplayer mod for Grand Theft Auto: San Andreas that is fully backwards compatible with San Andreas Multiplayer.", + "features": null, + "docker_images": { + "Samp": "ghcr.io\/parkervcp\/games:samp" + }, + "file_denylist": [], + "startup": ".\/omp-server", + "config": { + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"network.port\": \"{{server.build.default.port}}\",\r\n \"rcon.password\": \"{{server.build.env.RCON_PASSWORD}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"started on port\"\r\n}", + "logs": "{}", + "stop": "exit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt -y install curl git jq tar\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/openmultiplayer\/open.mp\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/openmultiplayer\/open.mp\/releases\")\r\nMATCH=open.mp-linux-x86-dynssl\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -linux-x86 | head -1)\r\n fi\r\nfi\r\n\r\necho \"running: curl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\"\r\ncurl -sSL -o openmp.tar.gz ${DOWNLOAD_URL}\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf openmp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\necho \"creating default config\"\r\n\r\nif [ -e config.json ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default OpenMp config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/openmp\/config.json >> config.json\r\nfi\r\n\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "RCON Password", + "description": "The password for RCON", + "env_variable": "RCON_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version you want to install", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 1b37f9aaa6126382a1fa975917fe6b1a35d9848a Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Sat, 1 Jul 2023 13:56:28 +0300 Subject: [PATCH 102/251] Add DDRaceNetwork (#2275) * add DDRaceNetwork egg * cleanup: DDRaceNetwork --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 2 + game_eggs/README.md | 2 + game_eggs/ddracenetwork/README.md | 20 +++++ .../ddracenetwork/egg-d-d-race-network.json | 82 +++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 game_eggs/ddracenetwork/README.md create mode 100644 game_eggs/ddracenetwork/egg-d-d-race-network.json diff --git a/README.md b/README.md index cc0b8b53..dc826cbd 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * [MCGalaxy](game_eggs/classicube/mcgalaxy) +[DDRaceNetwork](game_eggs/ddracenetwork) + [Doom](game_eggs/doom) * [Zandronum](game_eggs/doom/zandronum) diff --git a/game_eggs/README.md b/game_eggs/README.md index a4c31d61..c50cdd4b 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -16,6 +16,8 @@ * [CS2D](cs2d) +[DDRaceNetwork](ddracenetwork/) + [Doom](doom) * [Zandronum](doom/zandronum) diff --git a/game_eggs/ddracenetwork/README.md b/game_eggs/ddracenetwork/README.md new file mode 100644 index 00000000..8b02ea2e --- /dev/null +++ b/game_eggs/ddracenetwork/README.md @@ -0,0 +1,20 @@ +# DDRaceNetwork + +## From their [Website](https://ddnet.org/downloads/) + +DDraceNetwork (DDNet) is an actively maintained version of DDRace, a Teeworlds modification with a unique cooperative gameplay.. + +## Installation/System Requirements +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | Almost any proccessor will work | -| +| RAM | 100 MiB | 256 MiB | +| Storage | 70 MiB | 1024 MiB | +| Network | Any reasonable speed |- | +| Game Ownership | Not needed | The game is free, and server doesn't need the game to work. | + +## Server Ports + +| Port | default | +|---------|---------| +| Game | 8303 | diff --git a/game_eggs/ddracenetwork/egg-d-d-race-network.json b/game_eggs/ddracenetwork/egg-d-d-race-network.json new file mode 100644 index 00000000..6701c87b --- /dev/null +++ b/game_eggs/ddracenetwork/egg-d-d-race-network.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-01T12:47:31+02:00", + "name": "DDRaceNetwork", + "author": "diedyesterdaywashere@gmail.com", + "description": "DDraceNetwork (DDNet) is an actively maintained version of DDRace, a Teeworlds modification with a unique cooperative gameplay.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/DDNet-Server", + "config": { + "files": "{\r\n \"data\/autoexec_server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_port\": \"sv_port {{server.build.default.port}}\",\r\n \"sv_name\": \"sv_name \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"password\": \"password \\\"{{server.build.env.SERVER_PASSWORD}}\\\"\",\r\n \"sv_map\": \"sv_map \\\"{{server.build.env.SERVER_MAP}}\\\"\",\r\n \"sv_register\": \"sv_register {{server.build.env.SERVER_REGISTER}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \" server name is \"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\napt update\r\napt -y install curl xz-utils tar\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n A=$(curl -sSL https:\/\/ddnet.org\/downloads\/ | grep -io '> myServerconfig.cfg\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Game Version", + "description": "Latest is the default, put \"nightly\" for beta, or enter the version number, for example \"17.0\".", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_NAME", + "default_value": "My DDNet server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Server password", + "description": "Password for joining the server, empty for no password", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Server map", + "description": "Map to start server with", + "env_variable": "SERVER_MAP", + "default_value": "Tutorial", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Register server", + "description": "Register the server to the server list.\r\n0 is disabled\r\nipv4 is enabled listening ipv4", + "env_variable": "SERVER_REGISTER", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,ipv4", + "field_type": "text" + } + ] +} \ No newline at end of file From ae30536b34592683b9464ce22f4fcdb1d347ee73 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 1 Jul 2023 18:35:32 +0200 Subject: [PATCH 103/251] add: Spacestation 14 --- README.md | 2 + game_eggs/README.md | 2 + game_eggs/spacestation_14/README.md | 31 ++++++++++ .../spacestation_14/egg-spacestation14.json | 62 +++++++++++++++++++ 4 files changed, 97 insertions(+) create mode 100644 game_eggs/spacestation_14/README.md create mode 100644 game_eggs/spacestation_14/egg-spacestation14.json diff --git a/README.md b/README.md index dc826cbd..6057a1d9 100644 --- a/README.md +++ b/README.md @@ -212,6 +212,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * [RedM](game_eggs/rdr/redm) +[Spacestation 14](game_eggs/spacestation_14) + [Rimworld](game_eggs/rimworld) * [Open World](game_eggs/rimworld/open_world) diff --git a/game_eggs/README.md b/game_eggs/README.md index c50cdd4b..b2b387e7 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -110,6 +110,8 @@ * [RedM](rdr/redm) +[Spacestation 14](spacestation_14) + [Rimworld](rimworld) * [Open World](rimworld/open_world) diff --git a/game_eggs/spacestation_14/README.md b/game_eggs/spacestation_14/README.md new file mode 100644 index 00000000..1bb753af --- /dev/null +++ b/game_eggs/spacestation_14/README.md @@ -0,0 +1,31 @@ +# Spacestation 14 + +## From their [Site](https://spacestation14.io/) + +## [Documentation](https://docs.spacestation14.io/en/getting-started/hosting) + + +## Minimum RAM warning + +Minimum required memory to run the server. +2GB is recommended. 3GB+ is preferred + +## Minumim Sorage warning + +Minimum required storage to run the server. +Example: 100MiB is recommended. 2GiB+ is preferred + + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 1212 (TCP+ UDP) | + +### Notes + + +1212 is the default port, but any port can be used. + diff --git a/game_eggs/spacestation_14/egg-spacestation14.json b/game_eggs/spacestation_14/egg-spacestation14.json new file mode 100644 index 00000000..17fbbb57 --- /dev/null +++ b/game_eggs/spacestation_14/egg-spacestation14.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-01T18:30:46+02:00", + "name": "Spacestation 14", + "author": "josdekurk@gmail.com", + "description": "Space Station 14 tells the story of an ordinary shift on a space station gone wrong. Immerse yourself into your role, tinker with detailed systems, and survive the chaos in this round-based multiplayer role playing game.", + "features": null, + "docker_images": { + "Dotnet 7": "ghcr.io\/parkervcp\/yolks:dotnet_7" + }, + "file_denylist": [], + "startup": ".\/Robust.Server", + "config": { + "files": "{\r\n \"server_config.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"port\": \"port = {{server.build.default.port}}\",\r\n \"hostname\": \"hostname = \\\"{{server.build.env.SERVER_NAME}}\\\"\",\r\n \"tickrate\": \"tickrate = {{server.build.env.SERVER_TICK}}\",\r\n \"max_connections\": \"max_connections = {{server.build.env.SERVER_MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Server Version\"\r\n}", + "logs": "{}", + "stop": "^SIGKILL" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -sSL https:\/\/central.spacestation14.io\/builds\/wizards\/builds.html | grep \"The version is\" | sed -n 's\/.*\\([^<]*\\)<\\\/span>.*\/\\1\/p')\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-x64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o server_linux.zip https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\ncurl -sSL -o server_linux.zip \"https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\nunzip -o server_linux.zip\r\nrm server_linux.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server name", + "description": "The server hostname", + "env_variable": "SERVER_NAME", + "default_value": "MyServer", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:48", + "field_type": "text" + }, + { + "name": "Server tickrate", + "description": "The tickrate of the server. Default is 60", + "env_variable": "SERVER_TICK", + "default_value": "60", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|between:1,80", + "field_type": "text" + }, + { + "name": "Max players", + "description": "", + "env_variable": "SERVER_MAX_PLAYERS", + "default_value": "256", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric|between:1,256", + "field_type": "text" + } + ] +} \ No newline at end of file From d756bc09adb4f2a4b1d850ad32dc7e309449263b Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Sun, 2 Jul 2023 22:55:31 +0800 Subject: [PATCH 104/251] Shorten STDIN redirection --- .../ark_survival_evolved/egg-ark--survival-evolved.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json index 4952cafc..1a3b73d4 100644 --- a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json +++ b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-30T10:44:53+00:00", + "exported_at": "2023-07-02T14:54:47+00:00", "name": "Ark: Survival Evolved", "author": "dev@shepper.fr", "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<\/proc\/$$\/fd\/0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", From f331b0b82856b28b172dc69a3ec79f2dfdbfe390 Mon Sep 17 00:00:00 2001 From: Stefan Kevin <39440609+MatrixSystemPVP@users.noreply.github.com> Date: Sun, 2 Jul 2023 17:38:48 +0200 Subject: [PATCH 105/251] Update egg-unturned.json (#2337) * Update unturned to new docker image * Update the install script and image to the current one --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- .../unturned/egg-unturned.json | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/game_eggs/steamcmd_servers/unturned/egg-unturned.json b/game_eggs/steamcmd_servers/unturned/egg-unturned.json index 8f4ad1b2..ac3293fa 100644 --- a/game_eggs/steamcmd_servers/unturned/egg-unturned.json +++ b/game_eggs/steamcmd_servers/unturned/egg-unturned.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-20T13:04:52-05:00", + "exported_at": "2023-07-02T17:36:50+02:00", "name": "Unturned", "author": "parker@parkervcp.com", "description": "Vanilla Unturned with the included RockerMod.", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, "file_denylist": [], "startup": ".\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}}", "config": { @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\nDEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n## Specific to Unturned\r\ncd \/mnt\/server\/\r\nln -s ..\/..\/..\/steamcmd\/linux64\/steamclient.so Unturned_Headless_Data\/Plugins\/x86_64\/steamclient.so\r\nln -s ..\/Extras\/Rocket.Unturned\/ Modules\/", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## Specific to Unturned\r\ncd \/mnt\/server\/\r\nln -s ..\/..\/..\/steamcmd\/linux64\/steamclient.so Unturned_Headless_Data\/Plugins\/x86_64\/steamclient.so\r\nln -s ..\/Extras\/Rocket.Unturned\/ Modules\/\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -37,7 +37,8 @@ "default_value": "1110390", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|in:1110390", + "field_type": "text" }, { "name": "ld lib path", @@ -46,7 +47,8 @@ "default_value": ".\/Unturned_Headless_Data\/Plugins\/x86_64\/", "user_viewable": false, "user_editable": false, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Steam User", @@ -55,7 +57,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "Steam Password", @@ -64,7 +67,18 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update on restart", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" } ] -} +} \ No newline at end of file From c126e445a5d770a91b353d4682e186bfc84b37bf Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 2 Jul 2023 17:51:41 +0200 Subject: [PATCH 106/251] Update Pavlov VR --- .../steamcmd_servers/pavlov_vr/README.md | 6 ++ .../pavlov_vr/egg-pavlov-v-r.json | 65 ++++++++++++------- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/game_eggs/steamcmd_servers/pavlov_vr/README.md b/game_eggs/steamcmd_servers/pavlov_vr/README.md index 38ca0eb1..f7ee5b9b 100644 --- a/game_eggs/steamcmd_servers/pavlov_vr/README.md +++ b/game_eggs/steamcmd_servers/pavlov_vr/README.md @@ -12,6 +12,12 @@ This server requires about 2048M to run. A 3.2 GHz core will support approximate If you are running multiple servers and have set additional ports (see [Running multiple servers](http://wiki.pavlov-vr.com/index.php?title=Dedicated_server#Running_multiple_servers_on_one_host)) then you need to allow access to the defined port plus the port 400 higher. So if you use 7000 as your port, then UDP 7000 and 7400 need to be open. +### API key + +For your server to show up in the server list, there is now a requirement to have an ApiKey issued by vankrupt. This is to prevent DOS attacks against the master server + +Get the key by going [here](https://pavlov-ms.vankrupt.com/servers/v1/key) and using your mobile number to get a SMS (note that there have been reported failures of this SMS system for non-US mobiles. In this case DM davevillz your mobile and ask for a key). + ### Steam Workshop diff --git a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json index 8a51b857..0a7fafd9 100644 --- a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json +++ b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json @@ -1,31 +1,31 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-07-02T04:21:26+03:00", + "exported_at": "2023-07-02T17:49:33+02:00", "name": "Pavlov VR", "author": "admin@devil.wtf", "description": "Pavlov VR is a multiplayer shooter in VR with heavy focus on community features. Realistic reloading features and fast paced combat as part of the core experience. Play the #1 most popular VR shooter on PC today.", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, "file_denylist": [], - "startup": ".\/Pavlov\/Binaries\/Linux\/PavlovServer -PORT={{SERVER_PORT}}", + "startup": ".\/Pavlov\/Binaries\/Linux\/PavlovServer-Linux-Shipping Pavlov -PORT={{SERVER_PORT}} -KEY=\"{{API_KEY}}\"", "config": { "files": "{\r\n \"Pavlov\/Saved\/Config\/RconSettings.txt\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"Password=\": \"Password={{env.RCON_PASSWORD}}\",\r\n \"Port=\": \"Port={{env.RCON_PORT}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"PavlovLog: StartPlay was called\"\r\n}", + "startup": "{\r\n \"done\": \"Starting Server Status Helper on Port\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\napt -y update\r\napt -y --no-install-recommends install wget gdb curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\nchmod +x \"\/mnt\/server\/Pavlov\/Binaries\/Linux\/PavlovServer\"\r\n\r\n# Install Configuration Files\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Logs\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nif [ ! -f Game.ini ]; then\r\n echo -e \"Downloading Pavlov VR Game.ini\"\r\n curl -ssL -o Game.ini https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/Game.ini\r\nfi\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\r\nif [ ! -f RconSettings.txt ]; then\r\n echo -e \"Downloading Pavlov VR RconSettings.txt\"\r\n curl -ssL -o RconSettings.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/RconSettings.txt\r\nfi\r\n\r\ncd \/mnt\/server\/\r\nif [ -f PavlovServer.sh ]; then\r\n rm PavlovServer.sh\r\nfi", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\nchmod +x \"\/mnt\/server\/Pavlov\/Binaries\/Linux\/PavlovServer-Linux-Shipping\"\r\n\r\n# Install Configuration Files\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Logs\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nmkdir -p \/mnt\/server\/Pavlov\/Saved\/maps\r\n\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\/LinuxServer\r\nif [ ! -f Game.ini ]; then\r\n echo -e \"Downloading Pavlov VR Game.ini\"\r\n curl -ssL -o Game.ini https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/Game.ini\r\nfi\r\n\r\ncd \/mnt\/server\/Pavlov\/Saved\/Config\r\nif [ ! -f RconSettings.txt ]; then\r\n echo -e \"Downloading Pavlov VR RconSettings.txt\"\r\n curl -ssL -o RconSettings.txt https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/pavlov_vr\/RconSettings.txt\r\nfi\r\n\r\ncd \/mnt\/server\/\r\nif [ -f PavlovServer.sh ]; then\r\n rm PavlovServer.sh\r\nfi\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -37,16 +37,8 @@ "default_value": "622970", "user_viewable": false, "user_editable": false, - "rules": "nullable|numeric" - }, - { - "name": "Server Type", - "description": "Choose Between Beta or Shack (-beta shack) or (-beta beta_server). Leave blank for the normal build.", - "env_variable": "EXTRA_FLAGS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "required|numeric|in:622970", + "field_type": "text" }, { "name": "RCON Password", @@ -55,7 +47,8 @@ "default_value": "CHANGE_ME", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "RCON Port", @@ -64,16 +57,38 @@ "default_value": "8188", "user_viewable": true, "user_editable": true, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Auto-update server", "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 0. Set to 1 to update", "env_variable": "AUTO_UPDATE", - "default_value": "0", + "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "required|boolean" + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Beta id", + "description": "Beta branch of a steam app", + "env_variable": "SRCDS_BETAID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|in:,beta_server", + "field_type": "text" + }, + { + "name": "Api key", + "description": "For your server to show up in the server list, there is now a requirement to have an ApiKey issued by vankrupt. This is to prevent DOS attacks against the master server.\r\nGet it here: https:\/\/pavlov-ms.vankrupt.com\/servers\/v1\/key", + "env_variable": "API_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:64", + "field_type": "text" } ] -} +} \ No newline at end of file From 61c79621952e753a2072708d0f70d9965cfce749 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 2 Jul 2023 17:56:29 +0200 Subject: [PATCH 107/251] Use ubuntu image --- game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json index 0a7fafd9..e0afab91 100644 --- a/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json +++ b/game_eggs/steamcmd_servers/pavlov_vr/egg-pavlov-v-r.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-02T17:49:33+02:00", + "exported_at": "2023-07-02T17:55:48+02:00", "name": "Pavlov VR", "author": "admin@devil.wtf", "description": "Pavlov VR is a multiplayer shooter in VR with heavy focus on community features. Realistic reloading features and fast paced combat as part of the core experience. Play the #1 most popular VR shooter on PC today.", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + "ghcr.io\/parkervcp\/steamcmd:ubuntu": "ghcr.io\/parkervcp\/steamcmd:ubuntu" }, "file_denylist": [], "startup": ".\/Pavlov\/Binaries\/Linux\/PavlovServer-Linux-Shipping Pavlov -PORT={{SERVER_PORT}} -KEY=\"{{API_KEY}}\"", @@ -91,4 +91,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From c92bbe4112ce7b0c4d475b40f3f2293ee9b5df75 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:29:51 +0200 Subject: [PATCH 108/251] add Generic C# --- README.md | 1 + generic/README.md | 5 ++ generic/c#/README.md | 22 +++++++ generic/c#/egg-generic-c.json | 116 ++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) create mode 100644 generic/c#/README.md create mode 100644 generic/c#/egg-generic-c.json diff --git a/README.md b/README.md index 6057a1d9..9dbb834e 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ If you are reading this it looks like you are looking to add an egg to your serv ## [Generic Languages](/generic) +* [C#](/generic/c#/) * [dart](/generic/dart/) * [deno](/generic/deno/) * [golang](/generic/golang/) diff --git a/generic/README.md b/generic/README.md index ee032791..d3ddba3c 100644 --- a/generic/README.md +++ b/generic/README.md @@ -1,5 +1,10 @@ # Generic Language +### [C#](c#) + +[C#](https://learn.microsoft.com/en-us/dotnet/csharp//) +A generic C# language egg running with dotnet + ### [Dart](dart) [dart](https://dart.dev/) diff --git a/generic/c#/README.md b/generic/c#/README.md new file mode 100644 index 00000000..ea246ad4 --- /dev/null +++ b/generic/c#/README.md @@ -0,0 +1,22 @@ +# C# Language Generic + +This egg is designed to run any generic C# application, allowing users to pull their own C# source code from a Github repository. + +There is an option to allow a user to upload their own files to run a bot. + +The startup configs and commands may need changing to actually function properly. + +## Configuration + +The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running. +![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png) + +You can use arrays to have multiple different values when different bots are being used + +```json +{ + "done":[ + "change this text 1", + "change this text 2" + ] +} diff --git a/generic/c#/egg-generic-c.json b/generic/c#/egg-generic-c.json new file mode 100644 index 00000000..dcdb7bea --- /dev/null +++ b/generic/c#/egg-generic-c.json @@ -0,0 +1,116 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-02T19:22:35+02:00", + "name": "Generic C#", + "author": "josdekurk@gmail.com", + "description": "A generic C# (dotnet) egg that runs your C# project.", + "features": null, + "docker_images": { + "Dotnet_7": "ghcr.io\/parkervcp\/yolks:dotnet_7", + "Dotnet_6": "ghcr.io\/parkervcp\/yolks:dotnet_6", + "Dotnet_5": "ghcr.io\/parkervcp\/yolks:dotnet_5", + "Dotnet_3.1": "ghcr.io\/parkervcp\/yolks:dotnet_3.1", + "Dotnet_2.1": "ghcr.io\/parkervcp\/yolks:dotnet_2.1" + }, + "file_denylist": [], + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; cd {{PROJECT_DIR}}; dotnet restore; dotnet run --project {{PROJECT_FILE}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y git curl jq file unzip\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Git Repo Address", + "description": "GitHub Repo to clone\r\n\r\nI.E. https:\/\/github.com\/parkervcp\/repo_name", + "env_variable": "GIT_ADDRESS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Install Branch", + "description": "The branch to install.", + "env_variable": "BRANCH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "User Uploaded Files", + "description": "Skip all the install stuff if you are letting a user upload files.\r\n\r\n0 = false (default)\r\n1 = true", + "env_variable": "USER_UPLOAD", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "Pull the latest files on startup when using a GitHub repo.", + "env_variable": "AUTO_UPDATE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Git Username", + "description": "Username to auth with git.", + "env_variable": "USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Access Token", + "description": "Password to use with git.\r\n\r\nIt's best practice to use a Personal Access Token.\r\nhttps:\/\/github.com\/settings\/tokens\r\nhttps:\/\/gitlab.com\/-\/profile\/personal_access_tokens", + "env_variable": "ACCESS_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "project file", + "description": "The main project file if multiple are present", + "env_variable": "PROJECT_FILE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Project location", + "description": "The location of where the .csproj file is located. not the .sln file!", + "env_variable": "PROJECT_DIR", + "default_value": "\/home\/container", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + } + ] +} \ No newline at end of file From 284215704e01f57d60ff76e60dda59d41b6223ed Mon Sep 17 00:00:00 2001 From: Gabriel <35740183+Ex4ltado@users.noreply.github.com> Date: Sun, 2 Jul 2023 19:55:46 -0300 Subject: [PATCH 109/251] Update README.md word "Kotin" to "Kotlin" --- generic/java/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/java/README.md b/generic/java/README.md index 5f4e909c..987ebe2f 100644 --- a/generic/java/README.md +++ b/generic/java/README.md @@ -1,6 +1,6 @@ # Java Language Generic -This egg is designed to run any generic Java application, allowing users to pull their own Java source code from a Github repository. This egg is also compatible with Kotin. +This egg is designed to run any generic Java application, allowing users to pull their own Java source code from a Github repository. This egg is also compatible with Kotlin. There is an option to allow a user to upload their own files to run a bot. From 071834d8a6e70f54d43b77470ae450a5b86e946f Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 3 Jul 2023 16:23:14 +0200 Subject: [PATCH 110/251] Hotfix spacestation14 --- game_eggs/spacestation_14/egg-spacestation14.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/spacestation_14/egg-spacestation14.json b/game_eggs/spacestation_14/egg-spacestation14.json index 17fbbb57..c5826c44 100644 --- a/game_eggs/spacestation_14/egg-spacestation14.json +++ b/game_eggs/spacestation_14/egg-spacestation14.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-01T18:30:46+02:00", + "exported_at": "2023-07-03T16:22:48+02:00", "name": "Spacestation 14", "author": "josdekurk@gmail.com", "description": "Space Station 14 tells the story of an ordinary shift on a space station gone wrong. Immerse yourself into your role, tinker with detailed systems, and survive the chaos in this round-based multiplayer role playing game.", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -sSL https:\/\/central.spacestation14.io\/builds\/wizards\/builds.html | grep \"The version is\" | sed -n 's\/.*\\([^<]*\\)<\\\/span>.*\/\\1\/p')\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-x64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o server_linux.zip https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\ncurl -sSL -o server_linux.zip \"https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\nunzip -o server_linux.zip\r\nrm server_linux.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -sSL https:\/\/central.spacestation14.io\/builds\/wizards\/builds.html | grep \"The version is\" | sed -n 's\/.*\\([^<]*\\)<\\\/span>.*\/\\1\/p')\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o server_linux.zip https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\ncurl -sSL -o server_linux.zip \"https:\/\/cdn.centcomm.spacestation14.com\/builds\/wizards\/builds\/${V}\/SS14.Server_${ARCH}.zip\"\r\nunzip -o server_linux.zip\r\nrm server_linux.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "debian:bullseye-slim", "entrypoint": "bash" } @@ -59,4 +59,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From dd048b6f4555c8b057ec0426da4b66cbc91714a9 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 3 Jul 2023 17:46:50 +0200 Subject: [PATCH 111/251] add: Clone Hero --- README.md | 2 + game_eggs/README.md | 4 +- game_eggs/clone_hero/README.md | 31 ++++++++++++ game_eggs/clone_hero/egg-clone-hero.json | 62 ++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 game_eggs/clone_hero/README.md create mode 100644 game_eggs/clone_hero/egg-clone-hero.json diff --git a/README.md b/README.md index 6057a1d9..8b1d9501 100644 --- a/README.md +++ b/README.md @@ -107,6 +107,8 @@ If you are reading this it looks like you are looking to add an egg to your serv [ClassiCube](game_eggs/classicube) +[Clone Hero](game_eggs/clone_hero) + [CS2D](game_eggs/cs2d) * [MCGalaxy](game_eggs/classicube/mcgalaxy) diff --git a/game_eggs/README.md b/game_eggs/README.md index b2b387e7..7db5ea4f 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -12,9 +12,9 @@ [ClassiCube](classicube) -[ClassiCube](classicube) +[Clone Hero](clone_hero) -* [CS2D](cs2d) +[CS2D](cs2d) [DDRaceNetwork](ddracenetwork/) diff --git a/game_eggs/clone_hero/README.md b/game_eggs/clone_hero/README.md new file mode 100644 index 00000000..1778313d --- /dev/null +++ b/game_eggs/clone_hero/README.md @@ -0,0 +1,31 @@ +# Clone Hero + +## From their [Site](https://clonehero.net/) + +## [Documentation](https://wiki.clonehero.net/books/guides-and-tutorials/page/online-multiplayer#bkmrk-hosting-a-standalone) + + +## Minimum RAM warning + +Minimum required memory to run the server. +80MiB is recommended. 2GB+ is preferred + +## Minumim Sorage warning + +Minimum required storage to run the server. +100MiB is recommended. 2GiB+ is preferred + + +## Server Ports + +Ports required to run the server. + +| Port | default | +|---------|---------| +| Game | 14242 | + +### Notes + + +14242 is the default port, but any port can be used. + diff --git a/game_eggs/clone_hero/egg-clone-hero.json b/game_eggs/clone_hero/egg-clone-hero.json new file mode 100644 index 00000000..aaa9fce1 --- /dev/null +++ b/game_eggs/clone_hero/egg-clone-hero.json @@ -0,0 +1,62 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-03T16:24:37+02:00", + "name": "Clone Hero", + "author": "josdekurk@gmail.com", + "description": "Clone Hero is a classic instrument based rhythm game for Windows, Mac, Linux, and Android. It's playable with any 5 or 6 fret guitar controller, any midi drum kit, any game controller and even your keyboard! Jam out with Drums, 5-fret Guitar, or 6-fret Guitar online or local!", + "features": null, + "docker_images": { + "Debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/Server -l {{LOG_LEVEL}} -n \"{{SERVER_DISPLAY_NAME}}\" -p {{SERVER_PORT}} -a 0.0.0.0 $([[ -z \"{{SERVER_PASSWORD}}\" ]] && echo -np || echo \"-ps {{SERVER_PASSWORD}}\")", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Server running...\"\r\n}", + "logs": "{}", + "stop": "^SIGKILL" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl unzip\r\n\r\nV=$(curl -s https:\/\/clonehero.net\/ | grep -i \"Latest version\" | grep -oP '(?<=).+?(?=<\\\/b>)' | sed -e 's\/^[[:space:]]*\/\/' -e 's\/[[:space:]]*$\/\/') #v1.0.0.4080\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-x64\" || echo \"linux-arm64\")\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\necho \"Running: curl -sSL -o ChStandaloneServer.zip https:\/\/pubdl.clonehero.net\/chserver\/ChStandaloneServer-${V}-final.zip\"\r\ncurl -sSL -o ChStandaloneServer.zip https:\/\/pubdl.clonehero.net\/chserver\/ChStandaloneServer-${V}-final.zip\r\n\r\nunzip -o ChStandaloneServer.zip\r\nrm ChStandaloneServer.zip\r\nmv ChStandaloneServer-${V}-final\/${ARCH}\/* .\r\nrm -rf ChStandaloneServer-${V}-final\/\r\n\r\nchmod +x Server\r\n\r\n\r\nif [ ! -f \/mnt\/server\/settings.ini ]\r\nthen\r\n\tcurl -sSL -o settings.ini https:\/\/pastebin.com\/raw\/rhcv0hvi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server name", + "description": "The name of the server", + "env_variable": "SERVER_DISPLAY_NAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:80", + "field_type": "text" + }, + { + "name": "Server password", + "description": "The password of the server", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|regex:\/^[a-zA-Z0-9_]+$\/", + "field_type": "text" + }, + { + "name": "Log level", + "description": "Set max logging level", + "env_variable": "LOG_LEVEL", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:0,1,2,3,4", + "field_type": "text" + } + ] +} \ No newline at end of file From 3a67c23a90adc5862b067e20aad4c0be08a1b8c7 Mon Sep 17 00:00:00 2001 From: Griffen <42309996+Griffeng@users.noreply.github.com> Date: Wed, 5 Jul 2023 17:27:31 +0200 Subject: [PATCH 112/251] Update lavalink java version (#2347) * Update lavalink to use java 17 Co-authored-by: Griffen --- voice_servers/lavalink/egg-lavalink.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index 6d0c93d0..6ac3512e 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -4,13 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-06T17:07:59+00:00", + "exported_at": "2023-07-04T22:10:59+02:00", "name": "Lavalink", "author": "damuffin36@gmail.com", "description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/freyacodes\/Lavalink", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:java_11": "ghcr.io\/parkervcp\/yolks:java_11" + "ghcr.io\/parkervcp\/yolks:java_17": "ghcr.io\/parkervcp\/yolks:java_17" }, "file_denylist": [], "startup": "java -jar Lavalink.jar", @@ -28,4 +28,4 @@ } }, "variables": [] -} +} \ No newline at end of file From 4d0946f9cf5bfe1bc59e51928095be567e061d78 Mon Sep 17 00:00:00 2001 From: Daniel Barton Date: Thu, 6 Jul 2023 09:53:09 +0800 Subject: [PATCH 113/251] Fix RedM download link parser --- game_eggs/rdr/redm/egg-red-m.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/rdr/redm/egg-red-m.json b/game_eggs/rdr/redm/egg-red-m.json index fca67286..9d7a6f78 100644 --- a/game_eggs/rdr/redm/egg-red-m.json +++ b/game_eggs/rdr/redm/egg-red-m.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-07-19T11:52:55-04:00", + "exported_at": "2023-07-06T01:51:39+00:00", "name": "RedM", "author": "parker@parkervcp.com", "description": "A new RedM egg for the latest builds due to recent changes in RedM", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p \/mnt\/server\/resources \/mnt\/server\/logs\/\r\n\r\ncd \/mnt\/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https:\/\/github.com\/citizenfx\/cfx-server-data.git \/tmp\r\ncp -Rf \/tmp\/resources\/* resources\/\r\n\r\nRELEASE_PAGE=$(curl -sSL https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/)\r\nCHANGELOGS_PAGE=$(curl -sSL https:\/\/changelogs-live.fivem.net\/api\/changelog\/versions\/linux\/server)\r\n\r\nif [[ \"${CFX_VERSION}\" == \"recommended\" ]] || [[ -z ${CFX_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${CFX_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*\/*.tar.xz\"' | grep -Eo '\".*\"' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1' | grep ${CFX_VERSION})\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho \"Extracting fivem files\"\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*\/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/fivem\/server.cfg >>server.cfg\r\nfi\r\n\r\necho \"install complete\"", + "script": "#!\/bin\/ash\r\n# CFx Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update -y\r\napt install -y tar xz-utils file jq\r\n\r\nmkdir -p \/mnt\/server\/resources \/mnt\/server\/logs\/\r\n\r\ncd \/mnt\/server\r\n\r\necho \"updating citizenfx resource files\"\r\ngit clone https:\/\/github.com\/citizenfx\/cfx-server-data.git \/tmp\r\ncp -Rf \/tmp\/resources\/* resources\/\r\n\r\nRELEASE_PAGE=$(curl -sSL https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/)\r\nCHANGELOGS_PAGE=$(curl -sSL https:\/\/changelogs-live.fivem.net\/api\/changelog\/versions\/linux\/server)\r\n\r\nif [[ \"${CFX_VERSION}\" == \"recommended\" ]] || [[ -z ${CFX_VERSION} ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\nelif [[ \"${CFX_VERSION}\" == \"latest\" ]]; then\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.latest_download')\r\nelse\r\n VERSION_LINK=$(echo -e \"${RELEASE_PAGE}\" | grep -Eo '\".*\/*.tar.xz\"' | grep -Po '(?<=href=\")[^\"]*' | sed 's\/\\\"\/\/g' | sed 's\/\\.\\\/\/\/1' | grep ${CFX_VERSION})\r\n if [[ \"${VERSION_LINK}\" == \"\" ]]; then\r\n echo -e \"defaulting to recommedned as the version requested was invalid.\"\r\n DOWNLOAD_LINK=$(echo $CHANGELOGS_PAGE | jq -r '.recommended_download')\r\n else\r\n DOWNLOAD_LINK=$(echo https:\/\/runtime.fivem.net\/artifacts\/fivem\/build_proot_linux\/master\/${VERSION_LINK})\r\n fi\r\nfi\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else\r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"Running curl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\"\r\n\r\ncurl -sSL ${DOWNLOAD_LINK} -o ${DOWNLOAD_LINK##*\/}\r\n\r\necho \"Extracting fivem files\"\r\n\r\nFILETYPE=$(file -F ',' ${DOWNLOAD_LINK##*\/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${DOWNLOAD_LINK##*\/}\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${DOWNLOAD_LINK##*\/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n exit 2\r\nfi\r\n\r\nrm -rf ${DOWNLOAD_LINK##*\/} run.sh\r\n\r\nif [ -e server.cfg ]; then\r\n echo \"server config file exists\"\r\nelse\r\n echo \"Downloading default fivem config\"\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/gta\/fivem\/server.cfg >>server.cfg\r\nfi\r\n\r\necho \"install complete\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -89,4 +89,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From c7c859a6a3902af1681ff954d9dc3856b0e33c22 Mon Sep 17 00:00:00 2001 From: Azalee Date: Fri, 7 Jul 2023 10:40:55 +0200 Subject: [PATCH 114/251] Add Eggs PowerNukkitX and add server.properties --- .../minecraft/bedrock/PowerNukkitX/README.md | 4 + .../PowerNukkitX/egg-powernukkitx.json | 52 ++++++ .../minecraft/bedrock/PowerNukkitX/nukkit.yml | 162 ++++++++++++++++++ .../bedrock/PowerNukkitX/server.properties | 40 +++++ game_eggs/minecraft/bedrock/README.md | 5 + 5 files changed, 263 insertions(+) create mode 100644 game_eggs/minecraft/bedrock/PowerNukkitX/README.md create mode 100644 game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json create mode 100644 game_eggs/minecraft/bedrock/PowerNukkitX/nukkit.yml create mode 100644 game_eggs/minecraft/bedrock/PowerNukkitX/server.properties diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/README.md b/game_eggs/minecraft/bedrock/PowerNukkitX/README.md new file mode 100644 index 00000000..641d7d58 --- /dev/null +++ b/game_eggs/minecraft/bedrock/PowerNukkitX/README.md @@ -0,0 +1,4 @@ +# PowerNukkitX + +[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX) +PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit \ No newline at end of file diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json b/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json new file mode 100644 index 00000000..e764b2f3 --- /dev/null +++ b/game_eggs/minecraft/bedrock/PowerNukkitX/egg-powernukkitx.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-07T02:29:39+02:00", + "name": "PowerNukkitX", + "author": "powernukkitx@github.com", + "description": "PowerNukkitX support for Pterodactyl", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/pnx start {{AUTOREBOOT}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip openssl\r\nmkdir -p \/mnt\/server\/ # Not required. Only here for parkervcp's local test setup\r\ncd \/mnt\/server || exit 1\r\nUPGRADE=\"no\"\r\nif [ -d \".\/java\" ]; then\r\nUPGRADE=\"yes\"\r\nfi\r\nwget https:\/\/github.com\/PowerNukkitX\/PNX-CLI\/releases\/download\/0.1.6\/PNX-CLI-Linux-x86.zip -O pnx.zip\r\nwget https:\/\/raw.githubusercontent.com\/PowerNukkitX\/PowerNukkitX\/master\/src\/main\/resources\/default-nukkit.yml -O nukkit.yml\r\nunzip pnx.zip\r\nrm -fr pnx.zip 2>&1 >\/dev\/null\r\nmv .\/target\/linux-x86\/pnx .\/ 2>&1 >\/dev\/null\r\nrm -fr target 2>&1 >\/dev\/null\r\nrm -fr java 2>&1 >\/dev\/null\r\nchmod +x pnx\r\n.\/pnx jvm install=GraalVM\r\nif [ \"$UPGRADE\" == \"no\" ]; then\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server install --latest\r\nelse\r\n.\/pnx server install --dev\r\nfi\r\nelse\r\nrm -fr libs 2>&1 >\/dev\/null\r\nif [ \"$VERSION\" == \"latest\" ]; then\r\n.\/pnx server update --latest\r\nelse\r\n.\/pnx server update --dev\r\nfi\r\nfi\r\nrm -fr tmp-GraalVM.tar.gz 2>&1 >\/dev\/null\r\ncat < 1, it will show debug messages in the console + level: 1 + # Enables commands: /status /gc + commands: false + ignored-packets: + - LevelChunkPacket + +timings: + # Turn off the timing completely, no timing object will be created, which can help improve performance + completely-close: false + # Enable core and plugin timings by default + enabled: false + # Enable monitoring at verbose level, include high-frequency timings + verbose: false + # Interval between history frames in ticks + # Default is 5 minutes (6000 ticks) + history-interval: 6000 + # Length of the whole timing history in ticks + # Default is 1 hour (72000 ticks) + # This value is capped at a maximum of history-interval * 12 + history-length: 72000 + # For special cases of servers with special permission to bypass the max + # This max helps keep data file sizes reasonable for processing on Aikar's Timing parser side + # Setting this will not help you bypass the max unless Aikar has added an exception on the API side + bypass-max: false + # If set to true, name of your server won't be sent + privacy: false + ignore: [] + +level-settings: + # The default format that levels will use when created + default-format: anvil + # Automatically change levels tick rate to maintain 20 ticks per second + auto-tick-rate: true + auto-tick-rate-limit: 20 + # Sets the base tick rate (1 = 20 ticks per second, 2 = 10 ticks per second, etc.) + base-tick-rate: 1 + # Tick all players each tick even when other settings disallow this + always-tick-players: false + tick-redstone: true + +chunk-saving: + maximum-size-per-chunk: 1048576 + +chunk-sending: + # Amount of chunks sent to players per tick + per-tick: 8 + # Amount of chunks sent around each player + max-chunks: 192 + # Amount of chunks that need to be sent before spawning the player + spawn-threshold: 56 + # Save a serialized copy of the chunk in memory for faster sending + # Useful in mostly-static worlds where lots of players join at the same time + cache-chunks: false + +chunk-ticking: + # Max amount of chunks processed each tick + per-tick: 40 + # Radius of chunks around a player to tick + tick-radius: 3 + light-updates: false + clear-tick-list: false + +chunk-generation: + # Max. amount of chunks in the waiting queue to be generated + queue-size: 8 + # Max. amount of chunks in the waiting queue to be populated + population-queue-size: 8 + +# Max tick rate for these entities +ticks-per: + animal-spawns: 400 + monster-spawns: 1 + autosave: 6000 + cache-cleanup: 900 + +memory-compression: + enable: true + slots: 32 + default-temperature: 32 + threshold: + freezing-point: 0 + boiling-point: 1024 + absolute-zero: -256 + heat: + melting: 16 + single-operation: 1 + batch-operation: 32 + + +# Max amount of these entities +spawn-limits: + monsters: 70 + animals: 15 + water-animals: 5 + ambient: 15 + +player: + # If true, player data will be saved as players/playername.dat + # If false, nukkit won't save player data as "dat" files, in order that plugins can do something on it. + save-player-data: true + # The time between skin change action in seconds, set to 0 if you dont want the cooldown + skin-change-cooldown: 30 + force-skin-trusted: false + check-movement: true + +aliases: +# Aliases for commands +# Examples: +# showtheversion: version +# savestop: [save-all, stop] + +worlds: +# These settings will override the generator set in server.properties and allows loading multiple levels +# Examples: +#world: +# seed: 404 +# generator: FLAT:2;7,59x1,3x3,2;1;decoration(treecount=80 grasscount=45) + +anti-xray: +#world: +# enabled: true +# level: low +# pre-deobfuscate: true diff --git a/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties b/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties new file mode 100644 index 00000000..da94fc1b --- /dev/null +++ b/game_eggs/minecraft/bedrock/PowerNukkitX/server.properties @@ -0,0 +1,40 @@ +#Properties Config file +#2023-07-06 06:07:52 +motd=PowerNukkitX Server +sub-motd=https://powernukkitx.cn +server-port=19132 +server-ip=0.0.0.0 +view-distance=12 +white-list=off +achievements=on +announce-player-achievements=on +spawn-protection=16 +max-players=20 +allow-flight=off +spawn-animals=on +spawn-mobs=on +gamemode=0 +force-gamemode=off +hardcore=off +pvp=on +difficulty=1 +generator-settings= +level-name=world +level-seed= +level-type=DEFAULT +allow-nether=on +allow-the_end=on +use-terra=on +enable-experiment-mode=on +enable-query=on +enable-rcon=off +rcon.password= +auto-save=on +force-resources=off +force-resources-allow-client-packs=off +xbox-auth=on +check-login-time=on +disable-auto-bug-report=off +allow-shaded=off +server-authoritative-movement=server-auth +network-encryption=on diff --git a/game_eggs/minecraft/bedrock/README.md b/game_eggs/minecraft/bedrock/README.md index 0bf1314a..521d0bbd 100644 --- a/game_eggs/minecraft/bedrock/README.md +++ b/game_eggs/minecraft/bedrock/README.md @@ -21,6 +21,11 @@ LiteLoaderBDS is an unofficial plugin loader that provides basic API support for [Nukkit GitHub](https://github.com/Nukkit/Nukkit) Nukkit is a Nuclear-Powered Server Software For Minecraft: Pocket Edition +## [PowerNukkitX](/game_eggs/minecraft/bedrock/PowerNukkitX) + +[PowerNukkitX](https://github.com/PowerNukkitX/PowerNukkitX) +PowerNukkitX is a software for minecraft bedrock edition in Java which is a fork of PowerNukkit + ## [PocketMine MP](/game_eggs/minecraft/bedrock/pocketmine_mp) [PocketMine MP](https://github.com/pmmp/PocketMine-MP) From 0a8846e72cfccb79f4cdbb2a49585570f6cf5358 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Sat, 8 Jul 2023 18:17:54 +0300 Subject: [PATCH 115/251] Add Quilt --- game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/java/README.md | 4 ++ game_eggs/minecraft/java/quilt/README.md | 29 ++++++++++ game_eggs/minecraft/java/quilt/egg-quilt.json | 56 +++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 game_eggs/minecraft/java/quilt/README.md create mode 100644 game_eggs/minecraft/java/quilt/egg-quilt.json diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index 982b0a79..7814da60 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -30,6 +30,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [NanoLimbo](java/nanolimbo) * [Paper](java/paper) * [Purpur](java/purpur) +* [Quilt](java/quilt/) * [Spigot](java/spigot) * [SpongeForge](java/spongeforge) * [SpongeVanilla](java/spongevanilla) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index 414419e9..1a741073 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -100,6 +100,10 @@ A lightweight minecraft limbo server, written on Java with Netty. The main goal [Limbo GitHub](https://github.com/LOOHP/Limbo) Standalone server program Limbo. +## [Quilt](quilt) +[Quilt Website](https://quiltmc.org/) +The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem. + ## Spigot Based A collection of spigot and forked spigot eggs. diff --git a/game_eggs/minecraft/java/quilt/README.md b/game_eggs/minecraft/java/quilt/README.md new file mode 100644 index 00000000..0655096f --- /dev/null +++ b/game_eggs/minecraft/java/quilt/README.md @@ -0,0 +1,29 @@ +# Quilt + +## From their [Website](https://quiltmc.org/) + +## [Documentation](https://quiltmc.org/en/install/server/) + +The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem. + +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | Minecraft probably supports everything? | - | +| RAM | 2GB | 5GB | +| Storage | 300MB | 10GB | +| Network | 3 Mbit/s | 7 Mbit/s | +| Game Ownership | The game is not required to run the server. | - | + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 25565 | + +### Notes + +25565 is the default port, but any port can be used. \ No newline at end of file diff --git a/game_eggs/minecraft/java/quilt/egg-quilt.json b/game_eggs/minecraft/java/quilt/egg-quilt.json new file mode 100644 index 00000000..b5e16cca --- /dev/null +++ b/game_eggs/minecraft/java/quilt/egg-quilt.json @@ -0,0 +1,56 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-08T16:11:20+03:00", + "name": "Quilt", + "author": "diedyesterdaywashere@gmail.com", + "description": "The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.", + "features": null, + "docker_images": { + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, + "file_denylist": [], + "startup": "java -jar {{SERVER_JARFILE}} nogui -Xms128M -XX:MaxRAMPercentage=95.0", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Quilt Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y wget\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nwget -O quilt.jar https:\/\/quiltmc.org\/api\/v1\/download-latest-installer\/java-universal\r\njava -jar quilt.jar \\\r\n install server $MC_VERSION \\\r\n --download-server\r\ncd \/mnt\/server\/server\r\nmv * \/mnt\/server\r\ncd ..\r\nrm quilt.jar\r\nrmdir \/mnt\/server\/server\r\nmv server.jar minecraft.jar\r\nmv quilt-server-launch.jar server.jar\r\necho \"serverJar=minecraft.jar\" > quilt-server-launcher.properties\r\necho -e \"Server is Ready!\"", + "container": "eclipse-temurin:18-jdk-jammy", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "Version of Minecraft that will be installed. You can only choose the exact version number, for example \"1.19.2\", \"latest\" won't work!", + "env_variable": "MC_VERSION", + "default_value": "1.19.2", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the jarfile that will be ran on server launch.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + } + ] +} \ No newline at end of file From 0e07013cd84f7defe799257b417f9047d1040b1b Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Sat, 8 Jul 2023 19:06:00 +0300 Subject: [PATCH 116/251] Update Docker images --- game_eggs/minecraft/java/quilt/egg-quilt.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/game_eggs/minecraft/java/quilt/egg-quilt.json b/game_eggs/minecraft/java/quilt/egg-quilt.json index b5e16cca..2d60d507 100644 --- a/game_eggs/minecraft/java/quilt/egg-quilt.json +++ b/game_eggs/minecraft/java/quilt/egg-quilt.json @@ -4,17 +4,16 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-08T16:11:20+03:00", + "exported_at": "2023-07-08T19:05:09+03:00", "name": "Quilt", - "author": "diedyesterdaywashere@gmail.com", + "author": "admin@sunstonesoft.com", "description": "The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.", "features": null, "docker_images": { - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", - "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", - "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + "Java 8: 1.14 - 1.16.5": "ghcr.io\/pterodactyl\/yolks:java_8", + "Java 16: 1.17 - 1.17.1": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 17: 1.18 - Newest": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18: Newest": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], "startup": "java -jar {{SERVER_JARFILE}} nogui -Xms128M -XX:MaxRAMPercentage=95.0", From 06911328c9e05069bde3b82038b3e48c8d739d8d Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Sat, 8 Jul 2023 21:29:57 +0300 Subject: [PATCH 117/251] Update egg-quilt.json --- game_eggs/minecraft/java/quilt/egg-quilt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/minecraft/java/quilt/egg-quilt.json b/game_eggs/minecraft/java/quilt/egg-quilt.json index 2d60d507..124ad837 100644 --- a/game_eggs/minecraft/java/quilt/egg-quilt.json +++ b/game_eggs/minecraft/java/quilt/egg-quilt.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-07-08T19:05:09+03:00", "name": "Quilt", - "author": "admin@sunstonesoft.com", + "author": "diedyesterdaywashere@gmail.com", "description": "The Quilt project is an open-source, community-driven modding toolchain designed primarily for Minecraft. By focusing on speed, ease of use and modularity, Quilt aims to provide a sleek and modern modding toolchain with an open ecosystem.", "features": null, "docker_images": { From 54a21d5f59740c9420c935e3d8376826fa43b6e8 Mon Sep 17 00:00:00 2001 From: rafal1137 Date: Mon, 10 Jul 2023 12:55:00 +0200 Subject: [PATCH 118/251] Update README.md There was a missing port for allowing server to be shown on the server list. You need to port forward port 27950 too. --- game_eggs/enemy_territory/etlegacy/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/game_eggs/enemy_territory/etlegacy/README.md b/game_eggs/enemy_territory/etlegacy/README.md index 09555dd7..622829b6 100644 --- a/game_eggs/enemy_territory/etlegacy/README.md +++ b/game_eggs/enemy_territory/etlegacy/README.md @@ -18,3 +18,5 @@ ET: Legacy requires a single port | Port | default | |---------|---------| | Game | 27960 | +|---------|---------| +| Server | 27950 | From 8c4c342e413179979d916200c986b8449e438517 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Mon, 10 Jul 2023 16:17:37 +0200 Subject: [PATCH 119/251] add skip networktests --- .../sonsoftheforest/egg-sons-of-the-forest.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json index c931aa17..7d6cbfdf 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-28T16:10:30+02:00", + "exported_at": "2023-07-10T16:14:35+02:00", "name": "Sons Of The Forest", "author": "info@goover.de", "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" }, "file_denylist": [], - "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"", + "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.SkipNetworkAccessibilityTest \"{{SKIP_TESTS}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"", "config": { "files": "{\r\n \"serverconfig\/dedicatedserver.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ServerName\": \"{{server.build.env.SRV_NAME}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"ServerStart Success\"\r\n}", @@ -100,6 +100,16 @@ "rules": "required|boolean", "field_type": "text" }, + { + "name": "Skip network Test", + "description": "if you have problems to connect to your server, set this to TRUE", + "env_variable": "SKIP_TESTS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "SRCDS_APPID", "description": "", From 2f5fceb7f89c13b285aca8318a50d67692ff09a8 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Wed, 12 Jul 2023 02:12:04 +0300 Subject: [PATCH 120/251] Add CS:S --- README.md | 2 + game_eggs/README.md | 3 + .../steamcmd_servers/counter_strike/README.md | 8 ++ .../counter_strike_source/README.md | 42 +++++++++ .../egg-counter--strike--source.json | 92 +++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 game_eggs/steamcmd_servers/counter_strike/README.md create mode 100644 game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md create mode 100644 game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json diff --git a/README.md b/README.md index 5f28cfb5..f5ed51cb 100644 --- a/README.md +++ b/README.md @@ -236,6 +236,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Citadel: Forged with Fire](game_eggs/steamcmd_servers/citadel) * [Conan Exiles](game_eggs/steamcmd_servers/conan_exiles) * [Core Keeper](game_eggs/steamcmd_servers/core_keeper) +* [Counter-Strike](steamcmd_servers/counter_strike/) + * [Counter-Strike: Source](steamcmd_servers/counter_strike/counter_strike_source/) * [Craftopia](game_eggs/steamcmd_servers/craftopia) * [Cryofall](game_eggs/steamcmd_servers/cryofall) * [DayZ (Experimental)](game_eggs/steamcmd_servers/dayz-experimental) diff --git a/game_eggs/README.md b/game_eggs/README.md index 7db5ea4f..9e4dc8d3 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -133,6 +133,9 @@ * [Citadel: Forged with Fire](steamcmd_servers/citadel) * [Conan Exiles](steamcmd_servers/conan_exiles) * [Core Keeper](steamcmd_servers/core_keeper) +* [Counter-Strike](steamcmd_servers/counter_strike/) + * [Counter-Strike: Source](steamcmd_servers/counter_strike/counter_strike_source/) +* [Craftopia](game_eggs/steamcmd_servers/craftopia) * [CryoFall](steamcmd_servers/cryofall) * [DayZ (Experimental)](steamcmd_servers/dayz-experimental) * [Don't Starve Together](steamcmd_servers/dont_starve) diff --git a/game_eggs/steamcmd_servers/counter_strike/README.md b/game_eggs/steamcmd_servers/counter_strike/README.md new file mode 100644 index 00000000..459f5447 --- /dev/null +++ b/game_eggs/steamcmd_servers/counter_strike/README.md @@ -0,0 +1,8 @@ +# Counter-Strike + +Counter-Strike is a series of multiplayer tactical first-person shooter video games in which teams of terrorists battle to perpetrate an act of terror while counter-terrorists try to prevent it. The series began on Windows in 1999 with the release of the first game, Counter-Strike. + +## Counter-Strike Titles + +- [Counter-Strike: Source](counter_strike_source) +- [Counter-Strike: Global-Offensive](https://github.com/pterodactyl/panel/blob/develop/database/Seeders/eggs/source-engine/egg-counter--strike--global-offensive.json) \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md new file mode 100644 index 00000000..16a6c0ce --- /dev/null +++ b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/README.md @@ -0,0 +1,42 @@ +# Counter-Strike: Source + +## From their [Steam Depot](https://steamdb.info/app/232330/) + +A link to the site that you download the server files from. + +## [Documentation](https://github.com/parkervcp/eggs/blob/master/README.md) + +A link to relevent documentation for the server. + +The description of the server usually provided by the game/server maker. + + +## Install notes + +To get a persistent server (server that appears on the server list), you need to get a [Steam Server Login Token](https://steamcommunity.com/dev/managegameservers), it's not required though. + +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | Does not support ARM(?) | - | +| RAM | 512MB | 1GB | +| Storage | 3GB | 6GB | +| Network | 1Mbit/s | 5Mbit/s | +| Game Ownership | No | See **Install Notes** | + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 27015 | +| Source TV | 27020 | +| Client | 27005 | +| Steam | 26900 | + +### Notes + +27015 is the default port, but any port can be used. +The only required port is the Game port, server can run perfectly fine without other allocations. diff --git a/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json new file mode 100644 index 00000000..da5088d2 --- /dev/null +++ b/game_eggs/steamcmd_servers/counter_strike/counter_strike_source/egg-counter--strike--source.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-12T01:39:04+03:00", + "name": "Counter-Strike: Source", + "author": "diedyesterdaywashere@gmail.com", + "description": "Counter-Strike: Source blends Counter-Strike's award-winning teamplay action with the advanced technology of Source\u2122 technology.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, + "file_denylist": [], + "startup": ".\/srcds_run -game cstrike -console -port {{SERVER_PORT}} +map {{SRCDS_MAP}} +sv_setsteamaccount {{STEAM_TOKEN}} +ip 0.0.0.0 -strictportbind -norestart", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"gameserver Steam ID \"\r\n}", + "logs": "{}", + "stop": "quit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Steam Username", + "description": "Username you log into Steam with.", + "env_variable": "STEAM_USER", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Steam Password", + "description": "Password you log into steam with.", + "env_variable": "STEAM_PASS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Steam Guard Code", + "description": "Your Steam 2FA on your mobile phone. (Not really needed anymore as you get Approve requests now)", + "env_variable": "STEAM_AUTH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "App ID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "232330", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Map", + "description": "Default map", + "env_variable": "SRCDS_MAP", + "default_value": "de_dust2", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Steam Game Login Token", + "description": "https:\/\/steamcommunity.com\/dev\/managegameservers", + "env_variable": "STEAM_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file From 65c7ea05b152fdf7d0110413f30bcac726ecaf2c Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Thu, 13 Jul 2023 20:19:17 +0300 Subject: [PATCH 121/251] Add BATTALION: Legacy (#2366) * Add BATTALION: Legacy --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 + .../battalion_legacy/README.md | 32 +++++++ .../egg-b-a-t-t-a-l-i-o-n--legacy.json | 84 +++++++++++++++++++ 5 files changed, 122 insertions(+) create mode 100644 game_eggs/steamcmd_servers/battalion_legacy/README.md create mode 100644 game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json diff --git a/README.md b/README.md index 5f28cfb5..b4782157 100644 --- a/README.md +++ b/README.md @@ -232,6 +232,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Astroneer](game_eggs/steamcmd_servers/astroneer) * [Avorion](game_eggs/steamcmd_servers/avorion) * [Barotrauma](game_eggs/steamcmd_servers/barotrauma) +* [BATTALION: Legacy](game_eggs/steamcmd_servers/battalion_legacy) * [Black Mesa](game_eggs/steamcmd_servers/black_mesa) * [Citadel: Forged with Fire](game_eggs/steamcmd_servers/citadel) * [Conan Exiles](game_eggs/steamcmd_servers/conan_exiles) diff --git a/game_eggs/README.md b/game_eggs/README.md index 7db5ea4f..9368976c 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -129,6 +129,7 @@ * [Astroneer](steamcmd_servers/astroneer) * [Avorion](steamcmd_servers/avorion) * [Barotrauma](steamcmd_servers/barotrauma) +* [BATTALION: Legacy](steamcmd_servers/battalion_legacy) * [Black Mesa](steamcmd_servers/black_mesa) * [Citadel: Forged with Fire](steamcmd_servers/citadel) * [Conan Exiles](steamcmd_servers/conan_exiles) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 06153b06..f47767e7 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -28,6 +28,10 @@ This is a collection of servers that use SteamCMD to install. [Barotrauma](barotrauma) +## BATTALION: Legacy + +[BATTALION: Legacy](/battalion_legacy) + ## Black Mesa [Black Mesa](black_mesa) diff --git a/game_eggs/steamcmd_servers/battalion_legacy/README.md b/game_eggs/steamcmd_servers/battalion_legacy/README.md new file mode 100644 index 00000000..fb5d5112 --- /dev/null +++ b/game_eggs/steamcmd_servers/battalion_legacy/README.md @@ -0,0 +1,32 @@ +# BATTALION: Legacy + +## From their [Steam Depot](https://steamdb.info/app/805140) + +## [Documentation](https://github.com/parkervcp/eggs/blob/master/README.md) + +BATTALION: Legacy recaptures the core of classic shooters in the final iteration of Battalion 1944. Return to the simple days of playing first person shooters with your friends. Grab your bolt action rifle in 'rifles only' mode or compete in 5v5 Search and Destroy. +## Install notes + +The only issue with this egg is that server name appears with a ] in the end, for example: if you set the name to "Test", in the game it'll display as "Test]", the reason for this in unknown. +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | No ARM support(?) | | +| RAM | 1GiB | 2GiB | +| Storage | 2GB | - | +| Network | 1Mbit/s | 3Mbit/s | +| Game Ownership | No | - | + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 27015 | +| Query | 27016 | + +### Notes + +Game and Query port can be anything, but they're both required. \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json b/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json new file mode 100644 index 00000000..be51f2f2 --- /dev/null +++ b/game_eggs/steamcmd_servers/battalion_legacy/egg-b-a-t-t-a-l-i-o-n--legacy.json @@ -0,0 +1,84 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-13T20:14:32+03:00", + "name": "BATTALION: Legacy", + "author": "diedyesterdaywashere@gmail.com", + "description": "BATTALION: Legacy recaptures the core of classic shooters in the final iteration of Battalion 1944. Return to the simple days of playing first person shooters with your friends. Grab your bolt action rifle in 'rifles only' mode or compete in 5v5 Search and Destroy.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, + "file_denylist": [], + "startup": ".\/Battalion\/Binaries\/Linux\/BattalionServer-Linux-Shipping Battalion -QueryPort={{QUERY_PORT}} -SteamServerName=\"{{SERVER_NAME}]\" -Queue=\"Wartide\" -AdminPassword=\"{{ADMIN_PW}}\" -Log", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \" OnCreateSessionComplete \"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "App ID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "805140", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:805140", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "Server will check for updates on every restart. Use 0 to disable.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "", + "env_variable": "QUERY_PORT", + "default_value": "27016", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "", + "env_variable": "SERVER_NAME", + "default_value": "Pterodactyl hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:60", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "", + "env_variable": "ADMIN_PW", + "default_value": "changeme", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 0746131ddeb9a8e70a27530815d9a1df96a0a7ff Mon Sep 17 00:00:00 2001 From: TheKing1543 <84400712+TheKing1543@users.noreply.github.com> Date: Thu, 13 Jul 2023 22:13:25 +0000 Subject: [PATCH 122/251] Update egg-team-fortress-2-classic.json Made it work, lol. --- .../egg-team-fortress-2-classic.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json index f89e16f2..498ee944 100644 --- a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json +++ b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json @@ -4,9 +4,9 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-06-02T19:04:54+02:00", + "exported_at": "2023-07-13T23:07:08+01:00", "name": "Team Fortress 2 Classic", - "author": "eggs@scattergun.io", + "author": "kinguwu@duck.com", "description": "Team Fortress 2 Classic is a free mod of the 2007 game Team Fortress 2, developed by Eminoma and utilizing the Source engine.", "features": [ "steam_disk_space" @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.zip https:\/\/wiki.tf2classic.com\/kachemak\/tf2classic-${GAMEVERSION}.zip\r\n\r\n\r\nunzip -o tf2classic.zip\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt install -y zstd\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## download TF2C from website\r\ncd \/mnt\/server\r\nwhich unzip\r\n\r\necho \"Downloading tf2classic, This will take some time\" \r\ncurl -sSL -o tf2classic.tar.zst https:\/\/wiki.tf2classic.com\/kachemak\/tf2classic-${GAMEVERSION}.tar.zst\r\n\r\ntar -xf tf2classic.tar.zst\r\nrm -rf tf2classic.zip\r\n## fix issue \/w symlink\r\ncd \/mnt\/server\/bin\r\nln -s vphysics_srv.so vphysics.so\r\nln -s studiorender_srv.so studiorender.so\r\nln -s soundemittersystem_srv.so soundemittersystem.so\r\nln -s shaderapiempty_srv.so shaderapiempty.so\r\nln -s scenefilecache_srv.so scenefilecache.so\r\nln -s replay_srv.so replay.so\r\nln -s materialsystem_srv.so materialsystem.so\r\n\r\ncd \/mnt\/server\/tf2classic\/bin\r\n## fix server as of 2.0.4 crashing on start\r\nrm -rf server_srv.so\r\nln -s server.so server_srv.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } From 0fd35acedce91c856988e827f74e17b694bb1cee Mon Sep 17 00:00:00 2001 From: HerrSammy <38103916+HerrSammyDE@users.noreply.github.com> Date: Sat, 15 Jul 2023 02:29:14 +0200 Subject: [PATCH 123/251] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62d1a1e0..d2a1772f 100644 --- a/README.md +++ b/README.md @@ -237,8 +237,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Citadel: Forged with Fire](game_eggs/steamcmd_servers/citadel) * [Conan Exiles](game_eggs/steamcmd_servers/conan_exiles) * [Core Keeper](game_eggs/steamcmd_servers/core_keeper) -* [Counter-Strike](steamcmd_servers/counter_strike/) - * [Counter-Strike: Source](steamcmd_servers/counter_strike/counter_strike_source/) +* [Counter-Strike](game_eggs/steamcmd_servers/counter_strike/) + * [Counter-Strike: Source](game_eggs/steamcmd_servers/counter_strike/counter_strike_source/) * [Craftopia](game_eggs/steamcmd_servers/craftopia) * [Cryofall](game_eggs/steamcmd_servers/cryofall) * [DayZ (Experimental)](game_eggs/steamcmd_servers/dayz-experimental) From 63d2a76409aa2714d55fb4dadd217ba5d54c8db6 Mon Sep 17 00:00:00 2001 From: TheKing1543 <84400712+TheKing1543@users.noreply.github.com> Date: Sun, 16 Jul 2023 11:31:51 +0000 Subject: [PATCH 124/251] Update egg-team-fortress-2-classic.json Fixed the e-mail. --- .../team_fortress_2_classic/egg-team-fortress-2-classic.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json index 498ee944..9e029455 100644 --- a/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json +++ b/game_eggs/steamcmd_servers/team_fortress_2_classic/egg-team-fortress-2-classic.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-07-13T23:07:08+01:00", "name": "Team Fortress 2 Classic", - "author": "kinguwu@duck.com", + "author": "eggs@scattergun.io", "description": "Team Fortress 2 Classic is a free mod of the 2007 game Team Fortress 2, developed by Eminoma and utilizing the Source engine.", "features": [ "steam_disk_space" From 2d214d34782bf98ea493d58869d206729e4a484e Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Mon, 17 Jul 2023 11:17:26 -0400 Subject: [PATCH 125/251] Added support for Steam account, required by some HLDS games --- .../egg-custom-h-l-d-s-engine-game.json | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json b/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json index ab3ea737..7b8c79a9 100644 --- a/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json +++ b/game_eggs/steamcmd_servers/hlds_server/vanilla/egg-custom-h-l-d-s-engine-game.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-08T16:25:05+01:00", + "exported_at": "2023-07-17T10:38:39-04:00", "name": "Custom HLDS Engine Game", "author": "parker@parkervcp.com", "description": "This option allows modifying the startup arguments and other details to run a custom HLDS based game on the panel.", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# SRCDS Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update ${SRCDS_APPID} +app_set_config 90 mod ${HLDS_GAME} +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# SRCDS Base Installation Script\r\n\r\nif [ \"${STEAM_USER}\" == \"\" ] || [ \"${STEAM_PASS}\" == \"\" ]; then\r\n echo -e \"Steam user is not set, using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"User set to ${STEAM_USER}\"\r\nfi\r\n\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} +app_set_config 90 mod ${HLDS_GAME} +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -69,6 +69,36 @@ "user_editable": false, "rules": "required|numeric|digits_between:1,5", "field_type": "text" + }, + { + "name": "Steam Username", + "description": "Steam account used to download files (Defaults to anonymous)", + "env_variable": "STEAM_USER", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:32", + "field_type": "text" + }, + { + "name": "Steam Password", + "description": "Password for Steam account", + "env_variable": "STEAM_PASS", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Steam Auth", + "description": "Steam Guard 2FA code for account", + "env_variable": "STEAM_AUTH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string|max:20", + "field_type": "text" } ] } \ No newline at end of file From f081890e264b5e70a83112c68d9ba2b5c470d936 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 22 Jul 2023 09:05:43 +0200 Subject: [PATCH 126/251] updated Risk of Rain 2 --- .../steamcmd_servers/risk_of_rain_2/README.md | 12 +- .../risk_of_rain_2/egg-risk-of-rain2.json | 118 +++++++++++++++--- 2 files changed, 110 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md index f14ec862..a4a7c8a6 100644 --- a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md +++ b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md @@ -2,6 +2,13 @@ Escape a chaotic alien planet by fighting through hordes of frenzied monsters – with your friends, or on your own. +### Author & Contributers +| Name | Github Profile | Buy me a Coffee | +| ------------- |-------------|-------------| +| alex.chang-lam@protonmail.com| | | +| gOOvER | https://github.com/gOOvER | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B351D0Q) | + + ## Minimum Specifications - At least 1GB RAM @@ -15,7 +22,4 @@ The Risk of Rain 2 server requires a single port for access. Steam Query ports a |-------|---------| | Game | 27015 | | Query | 27016 | - -## Installation Notes - -The server will get stuck on the very fist start. Kill and restart it. +| Steam | 27017 (must be queryport +1) | diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json index cc578645..ee160f5d 100644 --- a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json +++ b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json @@ -1,31 +1,31 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-06-02T12:27:48+03:00", + "exported_at": "2023-07-22T09:00:30+02:00", "name": "Risk of Rain 2", "author": "alex.chang-lam@protonmail.com", "description": "Risk of Rain 2 dedicated server.", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_wine-5" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" + }, "file_denylist": [], "startup": "xvfb-run wine .\/\"Risk of Rain 2.exe\"", "config": { - "files": "{\r\n \".\/Risk of Rain 2_Data\/Config\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_password\": \"sv_password \\\"{{server.build.env.PASSWORD}}\\\";\",\r\n \"steam_server_heartbeat_enabled\": \"steam_server_heartbeat_enabled {{server.build.env.ADVERTISE}};\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.HOSTNAME}}\\\";\",\r\n \"steam_server_query_port\": \"steam_server_query_port {{server.build.env.QUERY}};\",\r\n \"steam_server_steam_port\": \"steam_server_steam_port {{server.build.env.STEAM}};\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.PLAYERS}};\",\r\n \"exec server;\": \"\",\r\n \"host\": \"\",\r\n \"remove_all_local_users;\": \"\"\r\n }\r\n }\r\n}", + "files": "{\r\n \".\/Risk of Rain 2_Data\/Config\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"sv_password\": \"sv_password \\\"{{server.build.env.PASSWORD}}\\\";\",\r\n \"steam_server_heartbeat_enabled\": \"steam_server_heartbeat_enabled {{server.build.env.ADVERTISE}};\",\r\n \"sv_hostname\": \"sv_hostname \\\"{{server.build.env.HOSTNAME}}\\\";\",\r\n \"sv_port\": \"sv_port {{server.build.default.port}};\",\r\n \"steam_server_query_port\": \"steam_server_query_port {{server.build.env.QUERY}};\",\r\n \"steam_server_steam_port\": \"steam_server_steam_port {{server.build.env.STEAM}};\",\r\n \"sv_maxplayers\": \"sv_maxplayers {{server.build.env.PLAYERS}};\",\r\n \"exec server;\": \"\",\r\n \"host\": \"\",\r\n \"remove_all_local_users;\": \"\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Press Enter to chat.\"\r\n}", "logs": "{}", - "stop": "^V" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Risk of Rain 2 Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt update\r\napt -y install curl unzip lib32gcc1 ca-certificates xvfb\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\nmkdir -p \/mnt\/server\/steam\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steam\r\n\r\nexport WINETRICKS_RUN=mono\r\nexport HOME=\/mnt\/server\r\nexport AUTO_UPDATE=1\r\nexport SRCDS_APPID=1180760\r\n\r\ncd \/mnt\/server\/steam\r\nchown -R root:root \/mnt\r\n\r\n.\/steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir \/mnt\/server +app_update 1180760 validate +quit\r\n\r\n## setup 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\n\r\n## setup 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v \/mnt\/server\/steam\/linux64\/steamclient.so \/mnt\/server\/.steam\/sdk64\/steamclient.so\r\n\r\n#create custom server.cfg\r\ncp \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_startup.cfg\" \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server.cfg\"", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n##steam serverlist fix\r\nmkdir -p \/mnt\/server\/steamworks_sdk\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server\/steamworks_sdk +@sSteamCmdForcePlatformType windows +login anonymous +app_update 1007 +quit\r\ncp \/mnt\/server\/steamworks_sdk\/*64.dll \/mnt\/server\/\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n#create custom server.cfg\r\ncp \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_startup.cfg\" \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server.cfg\"\r\ntouch \"\/mnt\/server\/Risk of Rain 2_Data\/Config\/server_pregame.cfg\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -37,7 +37,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:40" + "rules": "nullable|string|max:40", + "field_type": "text" }, { "name": "Server Hostname", @@ -46,7 +47,8 @@ "default_value": "\"Risk of Rain 2 Dedicated Server\"", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:40" + "rules": "required|string|max:40", + "field_type": "text" }, { "name": "Max Players", @@ -55,7 +57,8 @@ "default_value": "4", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Advertise Server", @@ -64,7 +67,8 @@ "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "required|boolean" + "rules": "required|boolean", + "field_type": "text" }, { "name": "Query Port", @@ -73,7 +77,8 @@ "default_value": "27016", "user_viewable": true, "user_editable": false, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Steam Port", @@ -82,7 +87,88 @@ "default_value": "27017", "user_viewable": false, "user_editable": false, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "SRCDS_APPID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "1180760", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "XVFB", + "description": "", + "env_variable": "XVFB", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "WINDOWS_INSTALL", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "mono", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" } ] -} +} \ No newline at end of file From a8fc5c133e64e50561f6f96fcfeaf4703f1c9cf7 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 22 Jul 2023 09:12:51 +0200 Subject: [PATCH 127/251] add author gh profile --- game_eggs/steamcmd_servers/risk_of_rain_2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md index a4a7c8a6..6d106d5b 100644 --- a/game_eggs/steamcmd_servers/risk_of_rain_2/README.md +++ b/game_eggs/steamcmd_servers/risk_of_rain_2/README.md @@ -5,7 +5,7 @@ Escape a chaotic alien planet by fighting through hordes of frenzied monsters ### Author & Contributers | Name | Github Profile | Buy me a Coffee | | ------------- |-------------|-------------| -| alex.chang-lam@protonmail.com| | | +| acl1704 | https://github.com/acl1704 | | | gOOvER | https://github.com/gOOvER | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B351D0Q) | From 9c77a46c708ba1fdfeb49ca47f5bf4ad814d4296 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 22 Jul 2023 10:57:50 +0200 Subject: [PATCH 128/251] Update Arma Reforger --- .../arma/arma_reforger/egg-arma-reforger.json | 62 ++++++++++++------- 1 file changed, 39 insertions(+), 23 deletions(-) diff --git a/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json b/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json index 569471da..f5e97fa6 100644 --- a/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json +++ b/game_eggs/steamcmd_servers/arma/arma_reforger/egg-arma-reforger.json @@ -1,31 +1,32 @@ { - "_comment": "Pterodactyl Arma Reforger Egg ~ Red-Thirten ~ 2022-05-20", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, + "exported_at": "2023-07-22T10:56:26+02:00", "name": "Arma Reforger", "author": "rehlmgaming@gmail.com", "description": "Experience authentic Cold War combat and join friends in the struggle for a sprawling, 51 km\u00b2 mid-Atlantic island \u2014 or take on the role of Game Master and create your very own scenarios for others to enjoy.", "features": [ "steam_disk_space" ], - "images": [ - "ghcr.io\/parkervcp\/games:source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, "file_denylist": [], "startup": ".\/ArmaReforgerServer -gproj .\/addons\/data\/ArmaReforger.gproj -config .\/config.json -profile .\/profile -backendlog -nothrow -listScenarios -logStats $(({{LOG_INTERVAL}}*1000)) -maxFPS {{MAX_FPS}}", "config": { - "files": "{\r\n \"config.json\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" \\\"region\\\"\": \" \\\"region\\\": \\\"{{server.build.env.REGION}}\\\",\",\r\n \" \\\"gameHostBindAddress\\\"\": \" \\\"gameHostBindAddress\\\": \\\"0.0.0.0\\\",\",\r\n \" \\\"gameHostBindPort\\\"\": \" \\\"gameHostBindPort\\\": {{server.build.default.port}},\",\r\n \" \\\"gameHostRegisterBindAddress\\\"\": \" \\\"gameHostRegisterBindAddress\\\": \\\"{{server.build.default.ip}}\\\",\",\r\n \" \\\"gameHostRegisterPort\\\"\": \" \\\"gameHostRegisterPort\\\": {{server.build.default.port}},\",\r\n \" \\\"adminPassword\\\"\": \" \\\"adminPassword\\\": \\\"{{server.build.env.ADMIN_PASS}}\\\",\",\r\n \" \\\"name\\\"\": \" \\\"name\\\": \\\"{{server.build.env.SERVER_NAME}}\\\",\",\r\n \" \\\"password\\\"\": \" \\\"password\\\": \\\"{{server.build.env.SERVER_PASS}}\\\",\",\r\n \" \\\"scenarioId\\\"\": \" \\\"scenarioId\\\": \\\"{{server.build.env.SCENARIO_ID}}\\\",\",\r\n \" \\\"playerCountLimit\\\"\": \" \\\"playerCountLimit\\\": {{server.build.env.MAX_PLAYERS}},\",\r\n\t\t\t\" \\\"autoJoinable\\\"\": \" \\\"autoJoinable\\\": {{server.build.env.AUTO_JOINABLE}},\",\r\n\t\t\t\" \\\"visible\\\"\": \" \\\"visible\\\": {{server.build.env.VISIBLE}},\",\r\n\t\t\t\" \\\"disableThirdPerson\\\"\": \" \\\"disableThirdPerson\\\": {{server.build.env.DISABLE_THIRD}},\",\r\n\t\t\t\" \\\"battlEye\\\"\": \" \\\"battlEye\\\": {{server.build.env.BATTLEYE}},\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"config.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"bindAddress\": \"0.0.0.0\",\r\n \"bindPort\": \"{{server.build.default.port}}\",\r\n \"publicAddress\": \"{{server.build.default.ip}}\",\r\n \"publicPort\": \"{{server.build.default.port}}\",\r\n \"game.name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"game.password\": \"{{server.build.env.SERVER_PASS}}\",\r\n \"game.passwordAdmin\": \"{{server.build.env.ADMIN_PASS}}\",\r\n \"game.scenarioId\": \"{{server.build.env.SCENARIO_ID}}\",\r\n \"game.maxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"game.gameProperties.fastValidation\": true\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Starting RPL server\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Arma Reforger Egg - egg-arma-reforger.json\r\n## Author: David Wolfe (Red-Thirten)\r\n## Date: 2022\/05\/20\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous +app_update ${SRCDS_APPID} validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"dedicatedServerId\": \"\",\r\n\t\"region\": \"${REGION}\",\r\n\t\"gameHostBindAddress\": \"0.0.0.0\",\r\n\t\"gameHostBindPort\": ${SERVER_PORT},\r\n\t\"gameHostRegisterBindAddress\": \"${SERVER_IP}\",\r\n\t\"gameHostRegisterPort\": ${SERVER_PORT},\r\n\t\"adminPassword\": \"${ADMIN_PASS}\",\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"playerCountLimit\": ${MAX_PLAYERS},\r\n\t\t\"autoJoinable\": ${AUTO_JOINABLE},\r\n\t\t\"visible\": ${VISIBLE},\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 2500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 1000,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"missionHeader\": {}\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n\r\n## Arma Reforger setup\r\n# Check for successful installation\r\nif [[ ! -f $HOME\/ArmaReforgerServer ]]; then\r\n echo -e \"\\n\\nSteamCMD failed to install the Arma Reforger Dedicated Server!\"\r\n echo -e \"\\tTry reinstalling the server again.\\n\"\r\n exit 1\r\nfi\r\n\r\nmkdir -p $HOME\/profile\r\n\r\necho -e 'Creating default \"config.json\" configuration file...'\r\ncat > $HOME\/config.json << EOF\r\n{\r\n\t\"bindAddress\": \"0.0.0.0\",\r\n\t\"bindPort\": ${SERVER_PORT},\r\n\t\"publicAddress\": \"${SERVER_IP}\",\r\n\t\"publicPort\": ${SERVER_PORT},\r\n\t\"game\": {\r\n\t\t\"name\": \"${SERVER_NAME}\",\r\n\t\t\"password\": \"${SERVER_PASS}\",\r\n\t\t\"passwordAdmin\": \"${ADMIN_PASS}\",\r\n\t\t\"scenarioId\": \"${SCENARIO_ID}\",\r\n\t\t\"maxPlayers\": ${MAX_PLAYERS},\r\n\t\t\"visible\": true,\r\n\t\t\"gameProperties\": {\r\n\t\t\t\"serverMaxViewDistance\": 500,\r\n\t\t\t\"serverMinGrassDistance\": 50,\r\n\t\t\t\"networkViewDistance\": 500,\r\n\t\t\t\"disableThirdPerson\": ${DISABLE_THIRD},\r\n\t\t\t\"fastValidation\": true,\r\n\t\t\t\"battlEye\": ${BATTLEYE},\r\n\t\t\t\"VONDisableUI\": false,\r\n\t\t\t\"VONDisableDirectSpeechUI\": false\r\n\t\t},\r\n\t\t\"mods\": []\r\n\t}\r\n}\r\nEOF\r\n\r\necho -e \"\\nArma Reforger Dedicated Server successfully installed!\\n\"", "container": "ghcr.io\/parkervcp\/installers:debian", - "entrypoint": "\/bin\/bash" + "entrypoint": "bash" } }, "variables": [ @@ -36,7 +37,8 @@ "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "boolean" + "rules": "boolean", + "field_type": "text" }, { "name": "Server Region", @@ -45,7 +47,8 @@ "default_value": "US", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW" + "rules": "required|string|in:AD,AE,AF,AG,AI,AL,AM,AO,AQ,AR,AS,AT,AU,AW,AX,AZ,BA,BB,BD,BE,BF,BG,BH,BI,BJ,BL,BM,BN,BO,BQ,BR,BS,BT,BV,BW,BY,BZ,CA,CC,CD,CF,CG,CH,CI,CK,CL,CM,CN,CO,CR,CU,CV,CW,CX,CY,CZ,DE,DJ,DK,DM,DO,DZ,EC,EE,EG,EH,ER,ES,ET,EU,FI,FJ,FK,FM,FO,FR,GA,GB,GD,GE,GF,GG,GH,GI,GL,GM,GN,GP,GQ,GR,GS,GT,GU,GW,GY,HK,HM,HN,HR,HT,HU,ID,IE,IL,IM,IN,IO,IQ,IR,IS,IT,JE,JM,JO,JP,KE,KG,KH,KI,KM,KN,KP,KR,KW,KY,KZ,LA,LB,LC,LI,LK,LR,LS,LT,LU,LV,LY,MA,MC,MD,ME,MF,MG,MH,MK,ML,MM,MN,MO,MP,MQ,MR,MS,MT,MU,MV,MW,MX,MY,MZ,NA,NC,NE,NF,NG,NI,NL,NO,NP,NR,NU,NZ,OM,PA,PE,PF,PG,PH,PK,PL,PM,PN,PR,PS,PT,PW,PY,QA,RE,RO,RS,RU,RW,SA,SB,SC,SD,SE,SG,SH,SI,SJ,SK,SL,SM,SN,SO,SR,SS,ST,SV,SX,SY,SZ,TC,TD,TF,TG,TH,TJ,TK,TL,TM,TN,TO,TR,TT,TV,TW,TZ,UA,UG,UM,US,UY,UZ,VA,VC,VE,VG,VI,VN,VU,WF,WS,YE,YT,ZA,ZM,ZW", + "field_type": "text" }, { "name": "Server Name", @@ -54,7 +57,8 @@ "default_value": "Arma Reforger Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:255" + "rules": "required|string|max:255", + "field_type": "text" }, { "name": "Max Players", @@ -63,7 +67,8 @@ "default_value": "32", "user_viewable": true, "user_editable": true, - "rules": "required|integer|between:1,256" + "rules": "required|integer|between:1,256", + "field_type": "text" }, { "name": "Server Password", @@ -72,7 +77,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:32" + "rules": "nullable|string|max:32", + "field_type": "text" }, { "name": "Admin Password", @@ -81,7 +87,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:32" + "rules": "nullable|string|max:32", + "field_type": "text" }, { "name": "Scenario ID", @@ -90,7 +97,8 @@ "default_value": "{ECC61978EDCC2B5A}Missions\/23_Campaign.conf", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Auto Joinable", @@ -99,7 +107,8 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Visible in Server Browser", @@ -108,7 +117,8 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Enable BattlEye", @@ -117,7 +127,8 @@ "default_value": "true", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Disable Third Person", @@ -126,7 +137,8 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "[Advanced] Max FPS", @@ -135,7 +147,8 @@ "default_value": "120", "user_viewable": true, "user_editable": true, - "rules": "nullable|integer|gt:0" + "rules": "nullable|integer|gt:0", + "field_type": "text" }, { "name": "[Advanced] Log FPS Interval", @@ -144,7 +157,8 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|integer|min:0" + "rules": "required|integer|min:0", + "field_type": "text" }, { "name": "[Repair] Validate Server Files", @@ -153,7 +167,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "[Advanced] Arma Reforger Dedicated Server App ID", @@ -162,7 +177,8 @@ "default_value": "1874900", "user_viewable": false, "user_editable": false, - "rules": "required|integer" + "rules": "required|integer", + "field_type": "text" } ] } \ No newline at end of file From c38cb0de4b410d0725fe6e61af0505b624b81b8f Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 22 Jul 2023 11:24:22 +0200 Subject: [PATCH 129/251] make AUTO_UPDATE user editable --- .../steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json index ee160f5d..24bddb2b 100644 --- a/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json +++ b/game_eggs/steamcmd_servers/risk_of_rain_2/egg-risk-of-rain2.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-22T09:00:30+02:00", + "exported_at": "2023-07-22T11:23:29+02:00", "name": "Risk of Rain 2", "author": "alex.chang-lam@protonmail.com", "description": "Risk of Rain 2 dedicated server.", @@ -95,8 +95,8 @@ "description": "", "env_variable": "AUTO_UPDATE", "default_value": "1", - "user_viewable": false, - "user_editable": false, + "user_viewable": true, + "user_editable": true, "rules": "boolean", "field_type": "text" }, From 10f7c8abdd53d2fcf0dc560968e7e73f4cc782fa Mon Sep 17 00:00:00 2001 From: "Z. Feuerborn" Date: Sat, 22 Jul 2023 07:41:49 -0600 Subject: [PATCH 130/251] Space Engineers Vanilla: Add ExperimentalMode and InGameScript options. (#2353) * Added ExperimentalMode and InGameScript options. --------- Co-authored-by: Zac Feuerborn --- .gitignore | 3 +- .../default/egg-space-engineers.json | 64 +++++++++++++++---- 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 74893bfd..5cc91bae 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ *.DS_Store node_modules/ .vuepress/* -.vscode \ No newline at end of file +.vscode +.idea \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json index 6257b68d..05aaccf1 100644 --- a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json +++ b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-26T17:47:55+01:00", + "exported_at": "2023-07-22T12:57:51+02:00", "name": "Space Engineers", "author": "info@goover.de", "description": "Space Engineers is a voxel-based sandbox game set in space and on planets.", @@ -12,15 +12,15 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": "winetricks sound=disabled; export WINEARCH=\"win64\"; export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine \/home\/container\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession", + "startup": "export WINEDLLOVERRIDES=\"mscoree=n,b;mshtml=n,b\"; wine \/home\/container\/DedicatedServer64\/SpaceEngineersDedicated.exe -path Z:\\\\home\\\\container\\\\config -noconsole -ignorelastsession", "config": { - "files": "{\r\n \"config\/SpaceEngineers-Dedicated.cfg\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyConfigDedicated.SessionSettings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyConfigDedicated.SessionSettings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyConfigDedicated.SessionSettings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyConfigDedicated.LoadWorld\": \"Z:\\\\home\\\\container\\\\config\\\\Saves\\\\{{server.build.env.WORLD_NAME}}\\\\Sandbox.sbc\",\r\n \"MyConfigDedicated.ServerPort\": \"{{server.build.default.port}}\",\r\n \"MyConfigDedicated.SteamPort\": \"{{server.build.env.STEAM_PORT}}\",\r\n \"MyConfigDedicated.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"MyConfigDedicated.WorldName\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"MyConfigDedicated.ServerDescription\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"MyConfigDedicated.RemoteApiEnabled\": \"{{server.build.env.REMOTEAPI_ENABLE}}\",\r\n \"MyConfigDedicated.RemoteApiPort\": \"{{server.build.env.REMOTEAPI_PORT}}\"\r\n }\r\n\t},\r\n\t\"config\/Saves\/World\/Sandbox.sbc\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyConfigDedicated.SessionSettings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyConfigDedicated.SessionSettings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyConfigDedicated.SessionSettings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"config\/SpaceEngineers-Dedicated.cfg\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyConfigDedicated.SessionSettings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyConfigDedicated.SessionSettings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyConfigDedicated.SessionSettings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyConfigDedicated.SessionSettings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyConfigDedicated.SessionSettings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_ENABLED}}\",\r\n \"MyConfigDedicated.LoadWorld\": \"Z:\\\\home\\\\container\\\\config\\\\Saves\\\\{{server.build.env.WORLD_NAME}}\\\\Sandbox.sbc\",\r\n \"MyConfigDedicated.ServerPort\": \"{{server.build.default.port}}\",\r\n \"MyConfigDedicated.SteamPort\": \"{{server.build.env.STEAM_PORT}}\",\r\n \"MyConfigDedicated.ServerName\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"MyConfigDedicated.WorldName\": \"{{server.build.env.WORLD_NAME}}\",\r\n \"MyConfigDedicated.ServerDescription\": \"{{server.build.env.SERVER_DESC}}\",\r\n \"MyConfigDedicated.RemoteApiEnabled\": \"{{server.build.env.REMOTEAPI_ENABLE}}\",\r\n \"MyConfigDedicated.RemoteApiPort\": \"{{server.build.env.REMOTEAPI_PORT}}\"\r\n }\r\n },\r\n \"config\/Saves\/World\/Sandbox.sbc\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyObjectBuilder_Checkpoint.Settings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyObjectBuilder_Checkpoint.Settings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_ENABLED}}\"\r\n }\r\n },\r\n \"config\/Saves\/World\/Sandbox_config.sbc\": {\r\n \"parser\": \"xml\",\r\n \"find\": {\r\n \"MyObjectBuilder_WorldConfiguration.Settings.GameMode\": \"{{server.build.env.SERVER_MODE}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.MaxPlayers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.AutoSaveInMinutes\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.EnableSaving\": \"{{server.build.env.SAVE_ENABLED}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.ExperimentalMode\": \"{{server.build.env.EXPERIMENTAL_ENABLED}}\",\r\n \"MyObjectBuilder_WorldConfiguration.Settings.EnableIngameScripts\": \"{{server.build.env.INGAMESCRIPTS_ENABLED}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Game ready...\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { @@ -140,6 +140,36 @@ "rules": "required|numeric|max:65535", "field_type": "text" }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Enable Experimental Mode", + "description": "Enable Experimental Mode. Must be 'true' when using mods", + "env_variable": "EXPERIMENTAL_ENABLED", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Enable In-Game Scripts", + "description": "Allow players to run In-Game Scripts", + "env_variable": "INGAMESCRIPTS_ENABLED", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, { "name": "WINEDEBUG", "description": "WINEDEBUG: Debug Level of wine", @@ -164,20 +194,30 @@ "name": "WINETRICKS_RUN", "description": "", "env_variable": "WINETRICKS_RUN", - "default_value": "vcrun2013 vcrun2017 corefonts dotnet48", + "default_value": "vcrun2019 dotnet48 corefonts", "user_viewable": false, "user_editable": false, "rules": "required|string", "field_type": "text" }, { - "name": "Auto Update", + "name": "WINEARCH", "description": "", - "env_variable": "AUTO_UPDATE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", "field_type": "text" } ] From a9fe173a9f610bbb994e9e00f4d9a4f64727a460 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 22 Jul 2023 19:52:32 +0200 Subject: [PATCH 131/251] remove stock eggs --- stock_eggs/README.md | 5 -- stock_eggs/minecraft/README.md | 13 ----- stock_eggs/rust/README.md | 21 -------- stock_eggs/source-engine/README.md | 83 ------------------------------ stock_eggs/voice-servers/README.md | 33 ------------ 5 files changed, 155 deletions(-) delete mode 100644 stock_eggs/README.md delete mode 100644 stock_eggs/minecraft/README.md delete mode 100644 stock_eggs/rust/README.md delete mode 100644 stock_eggs/source-engine/README.md delete mode 100644 stock_eggs/voice-servers/README.md diff --git a/stock_eggs/README.md b/stock_eggs/README.md deleted file mode 100644 index 9800efe2..00000000 --- a/stock_eggs/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Stock Pterodactyl eggs - -Eggs based on the stock [Pterodactyl eggs](https://github.com/pterodactyl/panel/tree/develop/database/Seeders/eggs). - -These are mostly fixes that should make it into the main repo eventually as I pr them over. diff --git a/stock_eggs/minecraft/README.md b/stock_eggs/minecraft/README.md deleted file mode 100644 index 4e0654a9..00000000 --- a/stock_eggs/minecraft/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Minecraft - -[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/minecraft) - -All the default minecraft things - -## Server Ports - -The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. - -| Port | Default | -|------|---------| -| Game | 25565 | diff --git a/stock_eggs/rust/README.md b/stock_eggs/rust/README.md deleted file mode 100644 index 2761eb13..00000000 --- a/stock_eggs/rust/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# Rust - -[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/rust) - -The only aim in Rust is to survive. To do this you will need to overcome struggles such as hunger, thirst and cold. Build a fire. Build a shelter. Kill animals for meat. Protect yourself from other players, and kill them for meat. Create alliances with other players and form a town. Do whatever it takes to survive. - -## Minimum RAM warning - -The server requires at least 4096MB to run properly. -This is mostly needed for the startup only, once it is running (depending on your world size) it should consume less. - -## Server Ports - -Ports required to run the server. - -| Port | default | -|----------------|-----------| -| Game | 28015 UDP | -| RCON | 28016 TCP | -| Query | 28017 UDP | -| Rust+ App | 28082 TCP | diff --git a/stock_eggs/source-engine/README.md b/stock_eggs/source-engine/README.md deleted file mode 100644 index 5d8ff1ea..00000000 --- a/stock_eggs/source-engine/README.md +++ /dev/null @@ -1,83 +0,0 @@ -# Source-Engine - -[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/source-engine) - -The Source Dedicated Server or SRCDS is a tool that runs the server component of a Source game without the client component. In other words, it simulates the game without drawing it. - -This also covers games that are installed using the steamcmd utility. - -## Server Ports - -Many of these servers will require the steam query ports to be open for the server. -The default steam query port is 27015 - -## ARK Survival Evolved - - -### Port Requirements - -The ARK server requires 4 ports minimum. - -| Port | default | -|---------|---------| -| Game | 7777 | -| Game +1 | 7778 | -| Query | 27015 | -| RCON | 27020 | - -Please note the server may not show up on steam game server lists due to this requirement if all ports are not set/added. - -## Counter Strike: Global Offensive - -Counter-Strike: Global Offensive (CS: GO) expands upon the team-based action gameplay that it pioneered when it was launched 19 years ago. CS: GO features new maps, characters, weapons, and game modes, and delivers updated versions of the classic CS content (de_dust2, etc.). - -### Port Requirements - -| Port | default | -|----------|---------| -| Game | 27015 | - -## Custom Source Engine Game - - -This is a generic one size fit's all egg that supports srcds game servers. - -This is not for games like Counter Strike 1.6 which is an HLDS title. See [HLDS server](game_eggs/steamcmd_servers/hlds_server) - -### Port Requirements - -| Port | default | -|----------|---------| -| Game | 27015 | - -## Garry's Mod - - -Garry's Mod is a physics sandbox. There aren't any predefined aims or goals. We give you the tools and leave you to play. - -### Port Requirements - -| Port | default | -|----------|---------| -| Game | 27015 | - -## Insurgency - - -Take to the streets for intense close quarters combat, where a team's survival depends upon securing crucial strongholds and destroying enemy supply in this multiplayer and cooperative Source Engine based experience. - -### Port Requirements - -| Port | default | -|----------|---------| -| Game | 27015 | - -## Team Fortress 2 - -Nine distinct classes provide a broad range of tactical abilities and personalities. Constantly updated with new game modes, maps, equipment and, most importantly, hats! - -### Port Requirements - -| Port | default | -|----------|---------| -| Game | 27015 | diff --git a/stock_eggs/voice-servers/README.md b/stock_eggs/voice-servers/README.md deleted file mode 100644 index 757dc72c..00000000 --- a/stock_eggs/voice-servers/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Voice Servers - -[Click here to go to the download page](https://github.com/pterodactyl/panel/tree/1.0-develop/database/Seeders/eggs/voice-servers) - -## Mumble - -Mumble is an open source, low-latency, high quality voice chat software primarily intended for use while gaming. - -### Required Server Ports - -Mumble only requires a single port to run. The default is 64738 - -| Port | default | -|---------|---------| -| Game | 64738 | - -## Teamspeak 3 - -Use crystal clear sound to communicate with your team mates cross-platform with military-grade security, lag-free performance & unparalleled reliability and uptime. - -### Required Server Ports - -Teamspeak 3 only requires a single port to run. The default is 9987 - -Other ports for ServerQuery and File Transfers are required for specific things. - -| Port | default | -|---------|---------| -| Server | 9987 | -| Query | 10011 | -| Files | 30033 | - -By default pteordactyl sets the query port to the same as the server port. From e30fde9443994b6879bfe890cd25895424db3499 Mon Sep 17 00:00:00 2001 From: Dexuan Ren <81537377+KenRen98@users.noreply.github.com> Date: Sun, 23 Jul 2023 05:01:10 -0400 Subject: [PATCH 132/251] Fix server state change for running indicator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit NEW Server loading finishing line: "#DSL Dedicated server loaded." OLD Server loading finishing line: ”ServerStart Success“ --- .../sonsoftheforest/egg-sons-of-the-forest.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json index 7d6cbfdf..98660cc5 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-10T16:14:35+02:00", + "exported_at": "2023-07-23T04:57:30-04:00", "name": "Sons Of The Forest", "author": "info@goover.de", "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", @@ -18,7 +18,7 @@ "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.SkipNetworkAccessibilityTest \"{{SKIP_TESTS}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"", "config": { "files": "{\r\n \"serverconfig\/dedicatedserver.cfg\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"ServerName\": \"{{server.build.env.SRV_NAME}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"ServerStart Success\"\r\n}", + "startup": "{\r\n \"done\": \"#DSL Dedicated server loaded.\"\r\n}", "logs": "{}", "stop": "^^C" }, @@ -171,4 +171,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 99fbddc1cdf849ea1656ec30f1e46e21cb6118b9 Mon Sep 17 00:00:00 2001 From: Alexander Ballauf Date: Sun, 23 Jul 2023 15:22:27 +0200 Subject: [PATCH 133/251] Adding ?MaxPlayers variable to config and startup command (#2360) * ARK: Adding ?MaxPlayers variable to config and startup command --- .../egg-ark--survival-evolved.json | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json index 1a3b73d4..d020882d 100644 --- a/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json +++ b/game_eggs/steamcmd_servers/ark_survival_evolved/egg-ark--survival-evolved.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-02T14:54:47+00:00", + "exported_at": "2023-07-23T15:07:41+02:00", "name": "Ark: Survival Evolved", "author": "dev@shepper.fr", "description": "As a man or woman stranded, naked, freezing, and starving on the unforgiving shores of a mysterious island called ARK, use your skill and cunning to kill or tame and ride the plethora of leviathan dinosaurs and other primeval creatures roaming the land. Hunt, harvest resources, craft items, grow crops, research technologies, and build shelters to withstand the elements and store valuables, all while teaming up with (or preying upon) hundreds of other players to survive, dominate... and escape! \u2014 Gamepedia: ARK", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} saveworld &&rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; cd ShooterGame\/Binaries\/Linux && .\/ShooterGameServer {{SERVER_MAP}}?listen?SessionName=\"{{SESSION_NAME}}\"?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?Port={{SERVER_PORT}}?RCONPort={{RCON_PORT}}?QueryPort={{QUERY_PORT}}?RCONEnabled=True?MaxPlayers={{MAX_PLAYERS}}?GameModIds={{MOD_ID}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -server -automanagedmods {{ARGS}} -log & ARK_PID=$! ; until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", @@ -110,16 +110,6 @@ "rules": "required|boolean", "field_type": "text" }, - { - "name": "Mods", - "description": "Specifies the order and which mods are loaded. ModIDs need to be comma-separated such as: ModID1,ModID2", - "env_variable": "MOD_ID", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, { "name": "App ID", "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.", @@ -139,6 +129,26 @@ "user_editable": true, "rules": "nullable|string", "field_type": "text" + }, + { + "name": "Mods", + "description": "Specifies the order and which mods are loaded. ModIDs need to be comma-separated such as: ModID1,ModID2", + "env_variable": "MOD_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Specifies the maximum amount of players able to join the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "12", + "user_viewable": true, + "user_editable": true, + "rules": "numeric", + "field_type": "text" } ] } \ No newline at end of file From f4e3924353de27e6ddb4376c08f929f95a919beb Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Sun, 23 Jul 2023 17:43:56 -0400 Subject: [PATCH 134/251] update waterfall install script resolves #2384 --- .../proxy/java/waterfall/egg-waterfall.json | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json index 4d7fc579..a3a0007c 100644 --- a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json +++ b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json @@ -1,10 +1,10 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-09T13:31:54-05:00", + "exported_at": "2023-07-23T17:42:22-04:00", "name": "Waterfall", "author": "hostmaster@waterfallgaming.net", "description": "Waterfall is a fork of the well-known BungeeCord server teleportation suite.", @@ -13,12 +13,12 @@ "java_version", "pid_limit" ], - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_17", - "ghcr.io\/pterodactyl\/yolks:java_16", - "ghcr.io\/pterodactyl\/yolks:java_11", - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17", + "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16", + "ghcr.io\/pterodactyl\/yolks:java_11": "ghcr.io\/pterodactyl\/yolks:java_11", + "ghcr.io\/pterodactyl\/yolks:java_8": "ghcr.io\/pterodactyl\/yolks:java_8" + }, "file_denylist": [], "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi", + "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_LINK}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi", "container": "debian:buster-slim", "entrypoint": "bash" } @@ -42,7 +42,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_num|between:1,6" + "rules": "required|alpha_num|between:1,6", + "field_type": "text" }, { "name": "Waterfall Jar File", @@ -51,7 +52,8 @@ "default_value": "waterfall.jar", "user_viewable": true, "user_editable": true, - "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/" + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" }, { "name": "Download Link", @@ -60,7 +62,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "Waterfall build number", @@ -69,7 +72,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] -} +} \ No newline at end of file From 13ad8f95d7c2a0da0a3ea7e9a7ee119d7e6df495 Mon Sep 17 00:00:00 2001 From: Michael Parker Date: Mon, 24 Jul 2023 09:29:11 -0400 Subject: [PATCH 135/251] updated var in more places --- game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json index a3a0007c..02f8940b 100644 --- a/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json +++ b/game_eggs/minecraft/proxy/java/waterfall/egg-waterfall.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-23T17:42:22-04:00", + "exported_at": "2023-07-24T09:28:42-04:00", "name": "Waterfall", "author": "hostmaster@waterfallgaming.net", "description": "Waterfall is a fork of the well-known BungeeCord server teleportation suite.", @@ -29,7 +29,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_LINK}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi", + "script": "#!\/bin\/bash\r\n# Waterfall Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=waterfall\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_LINK}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_LINK}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_LINK} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f config.yml ]; then\r\n\techo -e \"Downloading ${PROJECT} config.yml\"\r\n\tcurl -o config.yml https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/minecraft\/proxy\/java\/waterfall\/config.yml\r\nelse\r\n\techo -e \"${PROJECT} config.yml exists. Will not pull a new file\"\r\nfi", "container": "debian:buster-slim", "entrypoint": "bash" } From 9bcb3451c4717cb77c4da37aa3ecc00a9096b958 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:36:58 +0200 Subject: [PATCH 136/251] update SvenCOOP --- .../svencoop/egg-sven-co-op.json | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json b/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json index 07374e03..4218b289 100644 --- a/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json +++ b/game_eggs/steamcmd_servers/svencoop/egg-sven-co-op.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-20T13:02:23-05:00", + "exported_at": "2023-07-28T16:36:08+02:00", "name": "Sven Co-op", "author": "pteroducktyl@yildri.nl", "description": "Sven Co-op is a co-operative game originally based around Valve Software's Half-Life. In this game players must work together against computer controlled enemies and solve puzzles as a team.", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/pterodactyl\/core:source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, "file_denylist": [], "startup": ".\/svends_run -console -port {{SERVER_PORT}} +maxplayers {{SC_PLAYERS}} +map {{SC_MAP}} +ip 0.0.0.0 -strictportbind -norestart", "config": { @@ -24,8 +24,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Sven co-op Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\ncd \/tmp\r\ncurl -sSL -o steamcmd.tar.gz http:\/\/media.steampowered.com\/installer\/steamcmd_linux.tar.gz\r\n\r\nmkdir -p \/mnt\/server\/steamcmd\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n.\/steamcmd.sh +login anonymous +force_install_dir \/mnt\/server +app_update 276060 validate +quit\r\n\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so", - "container": "ubuntu:16.04", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -37,7 +37,8 @@ "default_value": "svencoop1", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Max Players", @@ -46,7 +47,8 @@ "default_value": "12", "user_viewable": true, "user_editable": true, - "rules": "required|numeric|between:2,32" + "rules": "required|numeric|between:2,32", + "field_type": "text" }, { "name": "Server Name", @@ -55,7 +57,8 @@ "default_value": "Sven Co-op server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:40" + "rules": "required|string|max:40", + "field_type": "text" }, { "name": "Password", @@ -64,7 +67,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|string|max:20", + "field_type": "text" }, { "name": "Region", @@ -73,7 +77,8 @@ "default_value": "255", "user_viewable": true, "user_editable": true, - "rules": "required|numeric|between:-1,255" + "rules": "required|numeric|between:-1,255", + "field_type": "text" }, { "name": "Source AppID", @@ -82,7 +87,8 @@ "default_value": "276060", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" } ] -} +} \ No newline at end of file From 2e3acd1e2a556d57c3f5505baae26a9da1f5353e Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 29 Jul 2023 17:46:53 +0200 Subject: [PATCH 137/251] Magma: support ARM64 --- game_eggs/minecraft/java/magma/egg-magma.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/minecraft/java/magma/egg-magma.json b/game_eggs/minecraft/java/magma/egg-magma.json index f9c7276a..28bc9370 100644 --- a/game_eggs/minecraft/java/magma/egg-magma.json +++ b/game_eggs/minecraft/java/magma/egg-magma.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-17T23:20:29+01:00", + "exported_at": "2023-07-29T17:46:23+02:00", "name": "Magma", "author": "support@pterodactyl.io", "description": "Magma is most powerful Forge server providing you with Forge mods and Bukkit Plugins using Spigot and Paper for Performance Optimization and Stability.", @@ -30,8 +30,8 @@ }, "scripts": { "installation": { - "script": "apt update\r\napt install -y curl jq\r\n\r\ncd \/mnt\/server\/\r\n\r\n# Hard coded latest version as the magma API doesn't have an endpoint to query for it\r\nLATEST_VERSION=\"1.18.2\"\r\n\r\n# Default TAG_VERSION if empty\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION=\"latest\"\r\nfi\r\n\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n MC_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\necho \"Attempting to install Magma - Version ${MC_VERSION} - Tag ${TAG_VERSION}\"\r\n\r\nif [[ \"${TAG_VERSION}\" == \"latest\" ]]; then\r\n # Didn't ask for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\")\r\nelse\r\n # Asked for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\/${TAG_VERSION}\")\r\nfi\r\n\r\nDOWNLOAD_LINK=$(echo ${VERSION_JSON} | jq -r .link)\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n \r\n # Validate that link works\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"No download URL found. Terminating install.\"\r\n exit 2\r\nfi\r\n\r\n\r\n# Download server.jar\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\necho -e \"Install Complete\"", - "container": "ghcr.io\/parkervcp\/installers:debian", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install curl git jq\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\/\r\n\r\n# Hard coded latest version as the magma API doesn't have an endpoint to query for it\r\nLATEST_VERSION=\"1.18.2\"\r\n\r\n# Default TAG_VERSION if empty\r\nif [[ -z \"${TAG_VERSION}\" ]]; then\r\n TAG_VERSION=\"latest\"\r\nfi\r\n\r\n\r\nif [[ -z \"${MC_VERSION}\" ]] || [[ \"${MC_VERSION}\" == \"latest\" ]]; then\r\n echo -e \"Version not set. Defaulting to latest\"\r\n MC_VERSION=${LATEST_VERSION}\r\nfi\r\n\r\necho \"Attempting to install Magma - Version ${MC_VERSION} - Tag ${TAG_VERSION}\"\r\n\r\nif [[ \"${TAG_VERSION}\" == \"latest\" ]]; then\r\n # Didn't ask for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\")\r\nelse\r\n # Asked for a specific tag\r\n VERSION_JSON=$(curl --silent \"https:\/\/api.magmafoundation.org\/api\/v2\/${MC_VERSION}\/latest\/${TAG_VERSION}\")\r\nfi\r\n\r\nDOWNLOAD_LINK=$(echo ${VERSION_JSON} | jq -r .link)\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then\r\n \r\n # Validate that link works\r\n echo -e \"Validating download link\"\r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_LINK}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_LINK}\r\n else\r\n echo -e \"Download URL ${DOWNLOAD_LINK} is invalid. Terminating install.\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"No download URL found. Terminating install.\"\r\n exit 2\r\nfi\r\n\r\n\r\n# Download server.jar\r\necho -e \"running: curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\"\r\ncurl -sSL -o ${SERVER_JARFILE} -sSL ${DOWNLOAD_LINK}\r\necho -e \"Install Complete\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -67,4 +67,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 3f20e732b8c99bd549309a83ddc56a54a3d18c60 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 29 Jul 2023 17:53:35 +0200 Subject: [PATCH 138/251] Update JMusicBot --- bots/discord/jmusicbot/egg-j-music-bot.json | 50 +++++++++++++-------- 1 file changed, 31 insertions(+), 19 deletions(-) diff --git a/bots/discord/jmusicbot/egg-j-music-bot.json b/bots/discord/jmusicbot/egg-j-music-bot.json index 31f440c7..528dad38 100644 --- a/bots/discord/jmusicbot/egg-j-music-bot.json +++ b/bots/discord/jmusicbot/egg-j-music-bot.json @@ -1,16 +1,17 @@ { - "_comment": "Pterodactyl JMusicBot Egg ~ parkervcp, Software-Noob, Proxymiity, and Red-Thirten ~ 2021-11-29", + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, + "exported_at": "2023-07-29T17:52:45+02:00", "name": "JMusicBot", "author": "parker@parkervcp.com", "description": "A Discord music bot that's easy to set up and run yourself!", "features": null, - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_16" - ], + "docker_images": { + "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16" + }, "file_denylist": [], "startup": "java -Dnogui=true -jar JMusicBot.jar", "config": { @@ -21,8 +22,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE and VERSION\r\n## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nGITHUB_PACKAGE=\"jagrosh\/MusicBot\"\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/config.txt\"\r\nPLAYLIST_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/example_playlist.txt\"\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"No Github user set. Using anonymous API call...\"\r\nelse\r\n echo -e \"User and OAuth token set.\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n# get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i config)\r\n else\r\n echo -e \"Defaulting to the latest release.\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n## JMusicBot Setup\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_LINK}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_LINK}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] && mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\"", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/config.txt\"\r\nPLAYLIST_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/example_playlist.txt\"\r\n\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\")\r\nMATCH=JMusicBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n## JMusicBot Setup\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] && mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\"", + "container": "debian:bullseye-slim", "entrypoint": "\/bin\/bash" } }, @@ -31,10 +32,11 @@ "name": "[REQUIRED] Discord Bot Token", "description": "The token for your Discord bot. Learn how to obtain a token and configure your bot application properly here: https:\/\/jmusicbot.com\/getting-a-bot-token\/", "env_variable": "BOT_TOKEN", - "default_value": "You need to get a token", + "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "[REQUIRED] Bot Owner ID", @@ -43,7 +45,8 @@ "default_value": "Change This To Your Discord User ID", "user_viewable": true, "user_editable": true, - "rules": "required|digits:18" + "rules": "required|digits:18", + "field_type": "text" }, { "name": "Bot Prefix", @@ -52,7 +55,8 @@ "default_value": "@mention", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|string|max:20", + "field_type": "text" }, { "name": "Bot Alternate Prefix", @@ -61,7 +65,8 @@ "default_value": "NONE", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Bot Default Game", @@ -70,7 +75,8 @@ "default_value": "DEFAULT", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" + "rules": "nullable|string|max:20", + "field_type": "text" }, { "name": "Bot Default Status", @@ -79,7 +85,8 @@ "default_value": "ONLINE", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:ONLINE,IDLE,DND,INVISIBLE" + "rules": "required|string|in:ONLINE,IDLE,DND,INVISIBLE", + "field_type": "text" }, { "name": "Bot Show Song in Status", @@ -88,7 +95,8 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Bot Show Images for \"Now Playing\"", @@ -97,7 +105,8 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Bot Stay In Channel", @@ -106,7 +115,8 @@ "default_value": "false", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:true,false" + "rules": "required|string|in:true,false", + "field_type": "text" }, { "name": "Bot Alone Time Until Disconnect", @@ -115,7 +125,8 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|integer" + "rules": "required|integer", + "field_type": "text" }, { "name": "Bot Max Song Length", @@ -124,7 +135,8 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|integer" + "rules": "required|integer", + "field_type": "text" } ] } From 95d7f016607a3516daddc893db377ac5bff37fd9 Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sun, 30 Jul 2023 10:09:34 -0500 Subject: [PATCH 139/251] AssaultCube (#2394) Add: AssaultCube --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 3 + game_eggs/README.md | 3 + game_eggs/cubeengine/assaultcube/README.md | 30 +++++ .../assaultcube/egg-assault-cube.json | 112 ++++++++++++++++++ 4 files changed, 148 insertions(+) create mode 100644 game_eggs/cubeengine/assaultcube/README.md create mode 100644 game_eggs/cubeengine/assaultcube/egg-assault-cube.json diff --git a/README.md b/README.md index 6cd1060f..0605f64a 100644 --- a/README.md +++ b/README.md @@ -114,6 +114,9 @@ If you are reading this it looks like you are looking to add an egg to your serv * [MCGalaxy](game_eggs/classicube/mcgalaxy) +[Cube Engine](game_eggs/cubeengine) +* [AssaultCube](game_eggs/cubeengine/assaultcube) + [DDRaceNetwork](game_eggs/ddracenetwork) [Doom](game_eggs/doom) diff --git a/game_eggs/README.md b/game_eggs/README.md index 3dc06826..88a9b2ee 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -16,6 +16,9 @@ [CS2D](cs2d) +[Cube Engine](cubeengine) +* [AssaultCube](cubeengine/assaultcube) + [DDRaceNetwork](ddracenetwork/) [Doom](doom) diff --git a/game_eggs/cubeengine/assaultcube/README.md b/game_eggs/cubeengine/assaultcube/README.md new file mode 100644 index 00000000..cdcaceb9 --- /dev/null +++ b/game_eggs/cubeengine/assaultcube/README.md @@ -0,0 +1,30 @@ +# AssaultCube +[assault.cubers.net](https://assault.cubers.net/) + +AssaultCube is a FREE, multiplayer, first-person shooter game, based on the CUBE engine. + +Taking place in realistic environments, with fast, arcade gameplay, it's addictive and fun! + +With efficient bandwidth usage, it's low-latency and can even run over a 56 Kbps connection. +It's tiny too, weighing in at a lightweight about 50 MB package available for Windows, Mac and Linux. +On the correct settings, it can even run on old hardware (Pentium III and above). + +--- + +## Server Ports + +Ports required to run the server. + +| Port | default | +|---------|---------| +| Game | 25510 | +| Game +1 | 255101 | + +The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.) + +**Must be Game +1!** + +### Notes + + +25510 is the default port, but any port can be used. \ No newline at end of file diff --git a/game_eggs/cubeengine/assaultcube/egg-assault-cube.json b/game_eggs/cubeengine/assaultcube/egg-assault-cube.json new file mode 100644 index 00000000..f9dad6b4 --- /dev/null +++ b/game_eggs/cubeengine/assaultcube/egg-assault-cube.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-30T10:56:35+02:00", + "name": "AssaultCube", + "author": "holeintheseat@gmail.com", + "description": "AssaultCube is a FREE, multiplayer, first-person shooter game, based on the CUBE engine.\r\n\r\nTaking place in realistic environments, with fast, arcade gameplay, it's addictive and fun!", + "features": null, + "docker_images": { + "Debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/bin_unix\/linux_64_server -Y{{ASSAULT_SERVER_KEY}} -n\"{{ASSAULT_SERVER_DESCRIPTION}}\" -o\"{{ASSAULT_SERVER_MOTD}}\" -c{{ASSAULT_SERVER_MAXPLAYERS}} -x{{ASSAULT_SERVER_ADMINPASSWORD}} -f{{SERVER_PORT}} -p{{ASSAULT_SERVER_PLAYERPASSWORD}} -m{{ASSAULT_SERVER_MASTERSERVER}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) <|-|> (https:\/\/assault.cubers.net\/)\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n#######-|Dependencies|-#######\r\napt update\r\napt -y install tar make bzip2 build-essential clang libclang-dev libclang1 llvm llvm-dev clang-tools libz-dev curl jq\r\n\r\n#######-|Downloading files|-#######\r\ncd \/mnt\/server\r\n## get release info and download links\r\n\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/assaultcube\/AC\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/assaultcube\/AC\/releases\")\r\nMATCH=tar.bz2\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | head -1)\r\n fi\r\nfi\r\n\r\n\r\ncurl -sSL -o AssaultCube.tar.bz2 ${DOWNLOAD_URL}\r\ntar -xf AssaultCube.tar.bz2\r\nrm AssaultCube.tar.bz2\r\n\r\n#######-|Setting Up Server|-#######\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nrm -rf bin_win32\/ *.sh\r\n\r\nif [ \"$(uname -m)\" = \"x86_64\" ]; then\r\n echo -e \"x86 System\"\r\nelse\r\n cd \/mnt\/server\/source\/src\r\n make server_install\r\nfi\r\n#######-|Insert Server Authkey|-#######\r\ncd \/mnt\/server\r\nsed -i 's\/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\/{{ASSAULT_SERVER_KEY}}\/' .\/config\/servercmdline.txt\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Auth Key", + "description": "You must provide your own key for the server to register on the masterserver.\r\nTo generate a key you can run the client and issue the command:\r\n\r\n authkey new server \r\n \r\nSee: (https:\/\/assault.cubers.net\/docs\/server.html)", + "env_variable": "ASSAULT_SERVER_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|required|string|max:64", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "", + "env_variable": "ASSAULT_SERVER_DESCRIPTION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Message of the Day", + "description": "", + "env_variable": "ASSAULT_SERVER_MOTD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Set the limit on amount of players able to join (MAX 16)", + "env_variable": "ASSAULT_SERVER_MAXPLAYERS", + "default_value": "16", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|integer|max:16", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "", + "env_variable": "ASSAULT_SERVER_ADMINPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512|min:5", + "field_type": "text" + }, + { + "name": "Player Password", + "description": "Password need to join the server.", + "env_variable": "ASSAULT_SERVER_PLAYERPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Master Server", + "description": "Forces the server to register with the hostname or IP address of a different masterserver.\r\nThe default is ms.cubers.net\r\nIf you want your server to be hidden and not report to the masterserver, use -mlocalhost", + "env_variable": "ASSAULT_SERVER_MASTERSERVER", + "default_value": "ms.cubers.net", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version of the engine you want to download.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 875192991cc157da1597bfd94419838e819d5a5b Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sun, 30 Jul 2023 10:11:19 -0500 Subject: [PATCH 140/251] Cube 2 sauerbraten (#2395) Add: Cube 2 sauerbraten --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 5 ++ game_eggs/README.md | 2 + game_eggs/cubeengine/cube2/README.md | 23 ++++++ .../cube2/egg-cube2--sauerbraten.json | 72 +++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 game_eggs/cubeengine/cube2/README.md create mode 100644 game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json diff --git a/README.md b/README.md index 0605f64a..0edd7045 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,11 @@ If you are reading this it looks like you are looking to add an egg to your serv [CS2D](game_eggs/cs2d) +[Cube Engine](cubeengine) + +* [AssaultCube](cubeengine/assaultcube) +* [Cube 2: Sauerbraten](cubeengine/cube2) + * [MCGalaxy](game_eggs/classicube/mcgalaxy) [Cube Engine](game_eggs/cubeengine) diff --git a/game_eggs/README.md b/game_eggs/README.md index 88a9b2ee..43c296f0 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -18,6 +18,8 @@ [Cube Engine](cubeengine) * [AssaultCube](cubeengine/assaultcube) +* [Cube 2: Sauerbraten](cubeengine/cube2) + [DDRaceNetwork](ddracenetwork/) diff --git a/game_eggs/cubeengine/cube2/README.md b/game_eggs/cubeengine/cube2/README.md new file mode 100644 index 00000000..0ef76d33 --- /dev/null +++ b/game_eggs/cubeengine/cube2/README.md @@ -0,0 +1,23 @@ +# Cube 2: Sauerbraten +[sauerbraten.org](http://sauerbraten.org/) + +Cube 2: Sauerbraten is a free multiplayer & singleplayer first person shooter, the successor of the Cube FPS. +Much like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also to allow map/geometry editing to be done cooperatively in-game. + +## Server Ports + +Ports required to run the server. + +| Port | default | +|---------|---------| +| Game | 25510 | +| Game +1 | 255101 | + +The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.) + +**Must be Game +1!** + +### Notes + + +25510 is the default port, but any port can be used. \ No newline at end of file diff --git a/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json b/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json new file mode 100644 index 00000000..063cd22a --- /dev/null +++ b/game_eggs/cubeengine/cube2/egg-cube2--sauerbraten.json @@ -0,0 +1,72 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-30T11:20:16+02:00", + "name": "Cube 2: Sauerbraten", + "author": "holeintheseat@gmail.com", + "description": "Cube 2: Sauerbraten is a free multiplayer & singleplayer first person shooter, the successor of the Cube FPS.\r\nMuch like the original Cube, the aim of this game is fun, old school deathmatch gameplay and also to allow map\/geometry editing to be done cooperatively in-game.", + "features": null, + "docker_images": { + "Debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/bin_unix\/linux_64_server -j{{SERVER_PORT}} -n{{CUBE_SERVERDESCRIPTION}} -c{{CUBE_MAXPLAYERS}} -m{{CUBE_MASTERSERVER}} -p{{CUBE_ADMINPASSWORD}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"dedicated server started, waiting for clients...\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# AssaultCube Server Egg (By HoleInTheSeat) <|-|> (https:\/\/assault.cubers.net\/)\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\napt update \r\n#######-|Dependencies|-#######\r\napt -y install tar curl bzip2\r\n#######-|Downloading files|-#######\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\necho -e \"###############################################\"\r\necho -e \"## Downloading and unarchiving Sauerbraten ##\"\r\necho -e \"## THIS WILL TAKE A WHILE. PLEASE BE PATIENT ##\"\r\necho -e \"###############################################\"\r\necho -e \"\\n\"\r\necho -e \"\\n\"\r\ncurl -sSL -o sauerbraten_2020_12_29_linux.tar.bz2 https:\/\/cfhcable.dl.sourceforge.net\/project\/sauerbraten\/sauerbraten\/2020_11_29\/sauerbraten_2020_12_29_linux.tar.bz2\r\ntar -xf sauerbraten_2020_12_29_linux.tar.bz2 -strip-components=1\r\nrm sauerbraten_2020_12_29_linux.tar.bz2\r\nchmod +x bin_unix\/linux_64_server\r\n\r\n#######-|Alert Completion|-#######\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:stable", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Description", + "description": "", + "env_variable": "CUBE_SERVERDESCRIPTION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:512", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Sets the max number of clients to N. The default is 4. If you want to set it higher, be aware that bandwidth usage almost doubles with each extra client, so only do this if the server runs on a serious pipe (not your home DSL or Cable connection).", + "env_variable": "CUBE_MAXPLAYERS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:16", + "field_type": "text" + }, + { + "name": "Master Server", + "description": "Sets the master server to use for either server (registering) and client (updating) to S. (default: sauerbraten.org).", + "env_variable": "CUBE_MASTERSERVER", + "default_value": "sauerbraten.org", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "", + "env_variable": "CUBE_ADMINPASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:512", + "field_type": "text" + } + ] +} \ No newline at end of file From e501dd4ae055a9712b111686f7d69c975cb111fa Mon Sep 17 00:00:00 2001 From: Panda260 <52088459+Panda260@users.noreply.github.com> Date: Sun, 30 Jul 2023 17:24:53 +0200 Subject: [PATCH 141/251] add Folia (#2345) * add Folia --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/minecraft/README.md | 1 + game_eggs/minecraft/java/README.md | 6 ++ game_eggs/minecraft/java/folia/README.MD | 13 ++++ game_eggs/minecraft/java/folia/egg-folia.json | 77 +++++++++++++++++++ 6 files changed, 99 insertions(+) create mode 100644 game_eggs/minecraft/java/folia/README.MD create mode 100644 game_eggs/minecraft/java/folia/egg-folia.json diff --git a/README.md b/README.md index 0edd7045..9b4cd446 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Mohist](game_eggs/minecraft/java/mohist) * [NanoLimbo](game_eggs/minecraft/java/nanolimbo) * [Paper](game_eggs/minecraft/java/paper) + * [Folia](game_eggs/minecraft/java/folia) * [Purpur](game_eggs/minecraft/java/purpur) * [Spigot](game_eggs/minecraft/java/spigot) * [SpongeForge](game_eggs/minecraft/java/spongeforge) diff --git a/game_eggs/README.md b/game_eggs/README.md index 43c296f0..5d1c58d2 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -80,6 +80,7 @@ * [Mohist](minecraft/java/mohist) * [NanoLimbo](minecraft/java/nanolimbo) * [Paper](minecraft/java/paper) + * [Folia](minecraft/java/folia) * [Purpur](minecraft/java/purpur) * [Spigot](minecraft/java/spigot) * [SpongeForge](minecraft/java/spongeforge) diff --git a/game_eggs/minecraft/README.md b/game_eggs/minecraft/README.md index 7814da60..9e374b05 100644 --- a/game_eggs/minecraft/README.md +++ b/game_eggs/minecraft/README.md @@ -29,6 +29,7 @@ It’s set in infinitely-generated worlds of wide open terrain - icy mountains, * [Mohist](java/mohist) * [NanoLimbo](java/nanolimbo) * [Paper](java/paper) +* [Folia](java/folia) * [Purpur](java/purpur) * [Quilt](java/quilt/) * [Spigot](java/spigot) diff --git a/game_eggs/minecraft/java/README.md b/game_eggs/minecraft/java/README.md index 1a741073..11f583f3 100644 --- a/game_eggs/minecraft/java/README.md +++ b/game_eggs/minecraft/java/README.md @@ -114,6 +114,12 @@ A collection of spigot and forked spigot eggs. High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies Currently the default on pterodactyl for many reasons. First being that you don't need to build the jar. +### [Folia](folia) + +[Folia GitHub](https://github.com/PaperMC/Folia) +High performance Fork of Paper which adds regionised multithreading to the dedicated server. designed for many players. +Spigot Plugins are not compatible with this fork. unless they are optimised for Folia. + ### [Purpur](purpur) [Purpur Website](https://purpurmc.org/) diff --git a/game_eggs/minecraft/java/folia/README.MD b/game_eggs/minecraft/java/folia/README.MD new file mode 100644 index 00000000..ab62b844 --- /dev/null +++ b/game_eggs/minecraft/java/folia/README.MD @@ -0,0 +1,13 @@ +# Folia + +Fork of Paper which adds regionised multithreading to the dedicated server. + +Check out the [Folia Website](https://papermc.io/) for more information. + +## Server Ports + +The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server. + +| Port | default | +|-------|---------| +| Game | 25565 | diff --git a/game_eggs/minecraft/java/folia/egg-folia.json b/game_eggs/minecraft/java/folia/egg-folia.json new file mode 100644 index 00000000..9b232860 --- /dev/null +++ b/game_eggs/minecraft/java/folia/egg-folia.json @@ -0,0 +1,77 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-07-24T16:49:48+02:00", + "name": "Folia", + "author": "Hosting@NeverStopGaming.net", + "description": "Fork of Paper which adds regionised multithreading to the dedicated server.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "logs": "{}", + "stop": "stop" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/ash\r\n# Folia Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=folia\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\n\tLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Specified version not found. Defaulting to the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\r\n\tBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\n\tLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi", + "container": "ghcr.io\/pterodactyl\/installers:alpine", + "entrypoint": "ash" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of minecraft to download. \r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/", + "field_type": "text" + }, + { + "name": "Download Path", + "description": "A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.", + "env_variable": "DL_PATH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "The build number for the folia release.\r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest.", + "env_variable": "BUILD_NUMBER", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 71d876f7f24d3ce6020cfc8cdff844cc1c3c4816 Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sun, 30 Jul 2023 10:33:28 -0500 Subject: [PATCH 142/251] Read me fix (#2396) Fix some README's --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 9 +++------ game_eggs/README.md | 3 ++- game_eggs/cubeengine/assaultcube/README.md | 6 +++--- game_eggs/cubeengine/cube2/README.md | 7 ++++--- generic/README.md | 2 +- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 9b4cd446..3b9510fc 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ If you are reading this it looks like you are looking to add an egg to your serv ## [Generic Languages](/generic) -* [C#](/generic/c#/) +* [C#](/generic/c%23/) * [dart](/generic/dart/) * [deno](/generic/deno/) * [golang](/generic/golang/) @@ -108,6 +108,8 @@ If you are reading this it looks like you are looking to add an egg to your serv [ClassiCube](game_eggs/classicube) +* [MCGalaxy](game_eggs/classicube/mcgalaxy) + [Clone Hero](game_eggs/clone_hero) [CS2D](game_eggs/cs2d) @@ -117,11 +119,6 @@ If you are reading this it looks like you are looking to add an egg to your serv * [AssaultCube](cubeengine/assaultcube) * [Cube 2: Sauerbraten](cubeengine/cube2) -* [MCGalaxy](game_eggs/classicube/mcgalaxy) - -[Cube Engine](game_eggs/cubeengine) -* [AssaultCube](game_eggs/cubeengine/assaultcube) - [DDRaceNetwork](game_eggs/ddracenetwork) [Doom](game_eggs/doom) diff --git a/game_eggs/README.md b/game_eggs/README.md index 5d1c58d2..52ae1908 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -12,6 +12,8 @@ [ClassiCube](classicube) +* [MCGalaxy](classicube/mcgalaxy) + [Clone Hero](clone_hero) [CS2D](cs2d) @@ -20,7 +22,6 @@ * [AssaultCube](cubeengine/assaultcube) * [Cube 2: Sauerbraten](cubeengine/cube2) - [DDRaceNetwork](ddracenetwork/) [Doom](doom) diff --git a/game_eggs/cubeengine/assaultcube/README.md b/game_eggs/cubeengine/assaultcube/README.md index cdcaceb9..fcf5d50a 100644 --- a/game_eggs/cubeengine/assaultcube/README.md +++ b/game_eggs/cubeengine/assaultcube/README.md @@ -17,8 +17,8 @@ Ports required to run the server. | Port | default | |---------|---------| -| Game | 25510 | -| Game +1 | 255101 | +| Game | 28763 | +| Game +1 | 28764 | The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.) @@ -27,4 +27,4 @@ The second port is only used for the server master list to be able to update the ### Notes -25510 is the default port, but any port can be used. \ No newline at end of file +28763 & 28764 is the default ports, but any port can be used. diff --git a/game_eggs/cubeengine/cube2/README.md b/game_eggs/cubeengine/cube2/README.md index 0ef76d33..e22ee5bd 100644 --- a/game_eggs/cubeengine/cube2/README.md +++ b/game_eggs/cubeengine/cube2/README.md @@ -10,8 +10,8 @@ Ports required to run the server. | Port | default | |---------|---------| -| Game | 25510 | -| Game +1 | 255101 | +| Game | 28785 | +| Game +1 | 28786 | The second port is only used for the server master list to be able to update the server info. (Description, player count, etc.) @@ -20,4 +20,5 @@ The second port is only used for the server master list to be able to update the ### Notes -25510 is the default port, but any port can be used. \ No newline at end of file +28785 & 28786 is the default ports, but any port can be used. +Port 28784 must be available for pinging servers over a LAN to work. diff --git a/generic/README.md b/generic/README.md index d3ddba3c..f18701ea 100644 --- a/generic/README.md +++ b/generic/README.md @@ -1,6 +1,6 @@ # Generic Language -### [C#](c#) +### [C#](c%23) [C#](https://learn.microsoft.com/en-us/dotnet/csharp//) A generic C# language egg running with dotnet From 2d2e88900f49a7dba7c4f000dbe5b31e3cb32f30 Mon Sep 17 00:00:00 2001 From: HoleInTheSeat <58385663+HoleInTheSeat@users.noreply.github.com> Date: Sun, 30 Jul 2023 13:14:06 -0500 Subject: [PATCH 143/251] Update egg-project-zomboid.json startup (#2399) Project-zomboid: Do not use a script as startup and do some cleanup --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- .../project_zomboid/egg-project-zomboid.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json index 88fb636c..45844dc4 100644 --- a/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json +++ b/game_eggs/steamcmd_servers/project_zomboid/egg-project-zomboid.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-10T03:31:04+02:00", + "exported_at": "2023-07-30T20:12:08+02:00", "name": "Project Zomboid", "author": "iamkubi@gmail.com", "description": "Project Zomboid is an open world survival horror video game in alpha stage development by British and Canadian independent developer, The Indie Stone. The game is set in a post apocalyptic, zombie infested world where the player is challenged to survive for as long as possible before inevitably dying.", @@ -12,10 +12,10 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/games:source": "ghcr.io\/parkervcp\/games:source" + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": "\/home\/container\/start-server.sh -port {{SERVER_PORT}} -udpport {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", + "startup": "export PATH=\".\/jre64\/bin:$PATH\" ; export LD_LIBRARY_PATH=\".\/linux64:.\/natives:.:.\/jre64\/lib\/amd64:${LD_LIBRARY_PATH}\" ; JSIG=\"libjsig.so\" ; LD_PRELOAD=\"${LD_PRELOAD}:${JSIG}\" .\/ProjectZomboid64 -port {{SERVER_PORT}} -udpport {{STEAM_PORT}} -cachedir=\/home\/container\/.cache -servername \"{{SERVER_NAME}}\" -adminusername {{ADMIN_USER}} -adminpassword \"{{ADMIN_PASSWORD}}\"", "config": { "files": "{}", "startup": "{\r\n \"done\": \"SERVER STARTED\"\r\n}", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\ncd \/mnt\/server\r\nrm start-server.sh\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -54,7 +54,7 @@ "name": "Admin Password", "description": "Password for the admin account", "env_variable": "ADMIN_PASSWORD", - "default_value": "password", + "default_value": "", "user_viewable": true, "user_editable": true, "rules": "required|string|max:32", From a8c477b10366e4cc62b5d2ecb23d1167727f88d4 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Tue, 1 Aug 2023 16:54:25 +0200 Subject: [PATCH 144/251] Update mohaa --- game_eggs/mohaa/egg-mohaa.json | 72 +++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/game_eggs/mohaa/egg-mohaa.json b/game_eggs/mohaa/egg-mohaa.json index 832621d3..65e6e7ea 100644 --- a/game_eggs/mohaa/egg-mohaa.json +++ b/game_eggs/mohaa/egg-mohaa.json @@ -1,104 +1,112 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-09-29T23:01:20+02:00", + "exported_at": "2023-08-01T16:53:44+02:00", "name": "mohaa", "author": "th3dilli@gmx.at", - "description": null, + "description": "Medal of Honor: Allied Assault", "features": null, - "images": [ - "ghcr.io\/parkervcp\/games:mohaa" - ], + "docker_images": { + "Mohaa": "ghcr.io\/parkervcp\/games:mohaa" + }, "file_denylist": [], "startup": ".\/mohaa_lnxded +set sv_punkbuster 0 +set fs_basepath {{BASE_PATH}} +set fs_outputpath {{LOG_DIR}} +set dedicated 2 +set sv_maxclients {{SERVER_MAXCLIENTS}} +set net_ip 0.0.0.0 +set net_port {{SERVER_PORT}} +exec server.cfg", "config": { "files": "{\r\n \"main\/server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"seta sv_hostname\": \"seta sv_hostname \\\"{{env.SERVER_NAME}}\\\"\",\r\n \"seta sv_maxClients\": \"seta sv_maxClients \\\"{{env.SERVER_MAXCLIENTS}}\\\"\",\r\n \"seta rconPassword\": \"seta rconPassword \\\"{{env.RCON_PASSWORD}}\\\"\",\r\n \"seta g_password\": \"seta g_password \\\"{{env.SERVER_PASSWORD}}\\\"\",\r\n \"Map\": \"Map {{env.SERVER_MAP}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"------ Server Initialization Complete ------\"\r\n}", "logs": "{}", "stop": "quit" }, "scripts": { "installation": { - "script": "apk --no-cache add curl\r\n\r\nif [[ ! -d \/mnt\/server\/ ]]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nDOWNLOAD_URL=https:\/\/linuxgsm.download\/MedalofHonorAlliedAssault\/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main\/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main\/server.cfg\r\n\r\necho -e \"running 'chmod +x .\/mohaa_lnxded'\"\r\nchmod +x .\/mohaa_lnxded", - "container": "alpine:3.4", + "script": "#!\/bin\/ash\r\n\r\napk --no-cache add curl\r\n\r\nif [[ ! -d \/mnt\/server\/ ]]; then\r\n mkdir -p \/mnt\/server\/\r\nfi\r\n\r\ncd \/mnt\/server\/\r\n\r\nDOWNLOAD_URL=http:\/\/linuxgsm.download\/MedalofHonorAlliedAssault\/moh_revival_v1.12_RC3.5.1.tar.xz\r\n\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\necho -e \"running 'curl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz'\" \r\ncurl -sSL ${DOWNLOAD_LINK} -o mohaaserver.tar.xz\r\n\r\necho -e \"Unpacking server files\"\r\ntar xvf mohaaserver.tar.xz\r\n\r\nrm mohaaserver.tar.xz\r\n\r\necho -e \"checking for default server.cfg\"\r\n[[ -f main\/server.cfg ]] || curl -sSL ${CONFIG_URL} -o main\/server.cfg\r\n\r\necho -e \"running 'chmod +x .\/mohaa_lnxded'\"\r\nchmod +x .\/mohaa_lnxded\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "alpine:latest", "entrypoint": "ash" } }, "variables": [ { - "name": "SERVER_MAXCLIENTS", + "name": "Max clients", "description": "", "env_variable": "SERVER_MAXCLIENTS", "default_value": "14", "user_viewable": true, "user_editable": true, - "rules": "required|integer" + "rules": "required|integer", + "field_type": "text" }, { - "name": "CONFIG_URL", + "name": "Config URL", "description": "URL from where to get the initial server.cfg", "env_variable": "CONFIG_URL", "default_value": "https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/mohaa\/game_eggs\/mohaa\/server.cfg", - "user_viewable": true, - "user_editable": true, - "rules": "required|string" + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" }, { - "name": "SERVER_NAME", + "name": "Server name", "description": "The name of the server", "env_variable": "SERVER_NAME", "default_value": "MOHAA Server running on Pterodactyl", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { - "name": "RCON_PASSWORD", + "name": "Rcon password", "description": "Admin password for rcon", "env_variable": "RCON_PASSWORD", - "default_value": "ADMINPASSWORD", + "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { - "name": "SERVER_MAP", - "description": "Select the map\r\n\r\nobj\/obj_team2\r\ndm\/mohdm7\r\ndm\/mohdm1\r\ndm\/mohdm3\r\ndm\/mohdm2\r\ndm\/mohdm6", + "name": "Server map", + "description": "Select the map", "env_variable": "SERVER_MAP", "default_value": "dm\/mohdm7", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string|in:obj\/obj_team2,dm\/mohdm7,dm\/mohdm1,dm\/mohdm3,dm\/mohdm2,dm\/mohdm6", + "field_type": "text" }, { - "name": "LOG_DIR", + "name": "Logs dir", "description": "", "env_variable": "LOG_DIR", "default_value": "\/home\/container\/Logs", "user_viewable": true, - "user_editable": true, - "rules": "required|string" + "user_editable": false, + "rules": "required|string", + "field_type": "text" }, { - "name": "BASE_PATH", + "name": "Base PATH", "description": "", "env_variable": "BASE_PATH", "default_value": "\/home\/container", "user_viewable": true, - "user_editable": true, - "rules": "required|string" + "user_editable": false, + "rules": "required|string", + "field_type": "text" }, { - "name": "SERVER_PASSWORD", + "name": "Server password", "description": "", "env_variable": "SERVER_PASSWORD", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" } ] -} \ No newline at end of file +} From 4e708487158c53e2e0923af448c7e68079a07e93 Mon Sep 17 00:00:00 2001 From: HttpRafa Date: Tue, 1 Aug 2023 20:58:38 +0200 Subject: [PATCH 145/251] Updated java version used in the installation of modrinth packs from 8 to 17 --- game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json index 2938c759..e13e624b 100644 --- a/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json +++ b/game_eggs/minecraft/java/modrinth/egg-modrinth-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-06T12:29:46-07:00", + "exported_at": "2023-08-01T20:54:48+02:00", "name": "Modrinth Generic", "author": "contact@chromozone.dev", "description": "A generic egg for a Modrinth modpack.", @@ -30,7 +30,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# shellcheck disable=SC2155\r\n#\r\n# Modrinth Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n\r\n: \"${SERVER_DIR:=\/mnt\/server}\"\r\n: \"${PROJECT_ID:=}\"\r\n: \"${VERSION_ID:=}\"\r\n\r\nif [[ ! -d $SERVER_DIR ]]; then\r\n mkdir -p \"$SERVER_DIR\"\r\nfi\r\n\r\nif ! cd \"$SERVER_DIR\"; then\r\n echo -e \"Failed to change directory to ${SERVER_DIR}\"\r\n exit 1\r\nfi\r\n\r\nfunction install_required {\r\n echo -e \"Installing required packages...\"\r\n\r\n echo -e \"\\tRunning apt update\"\r\n if ! apt update > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt update failed!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tRunning apt install\"\r\n if ! apt install -y wget jq unzip dos2unix > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: apt install failed!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nMODRINTH_API_URL=\"https:\/\/api.modrinth.com\/v2\"\r\n\r\nfunction get_download {\r\n echo -e \"Retrieving Modrinth project information...\"\r\n local PROJECT_DATA=$(wget -q \"${MODRINTH_API_URL}\/project\/${PROJECT_ID}\" -O -)\r\n local PROJECT_TITLE=$(echo \"$PROJECT_DATA\" | jq -r '.title \/\/ empty')\r\n local PROJECT_SUPPORTED=$(echo \"$PROJECT_DATA\" | jq -r '.\"server_side\" \/\/ empty')\r\n\r\n if [[ -z \"${PROJECT_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve project data for project id '${PROJECT_ID}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ \"${PROJECT_SUPPORTED}\" == \"unsupported\" ]]; then\r\n echo -e \"\\tWARNING: The project '${PROJECT_TITLE}' is listed as unsupported for server use. Continuing anyway...\"\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" || \"${VERSION_ID}\" == \"latest\" ]]; then\r\n echo -e \"\\tNo version ID specified, using latest version\"\r\n VERSION_ID=$(echo \"$PROJECT_DATA\" | jq -r '.versions[-1] \/\/ empty')\r\n else\r\n echo -e \"\\tChecking if provided version id '${VERSION_ID}' exists\"\r\n if [[ $(echo \"$PROJECT_DATA\" | jq -r --arg VERSION_ID \"$VERSION_ID\" '.versions[]? | select(. == $VERSION_ID)') != \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: Version id '${VERSION_ID}' not found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n fi\r\n\r\n if [[ -z \"${VERSION_ID}\" ]]; then\r\n echo -e \"\\tERROR: No version id found for project '${PROJECT_TITLE}'\"\r\n exit 1\r\n fi\r\n\r\n # get json data to work with\r\n echo -e \"\\tRetrieving version information for '${VERSION_ID}'\"\r\n local JSON_DATA=$(wget -q \"${MODRINTH_API_URL}\/version\/${VERSION_ID}\" -O -)\r\n\r\n if [[ -z \"${JSON_DATA}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve version data for version id '${VERSION_ID}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tParsing Modrinth pack download url\"\r\n\r\n local DOWNLOAD_URL=$(echo \"$JSON_DATA\" | jq -r '.files[]? | select(.primary == true) | .url')\r\n\r\n if [[ -z \"${DOWNLOAD_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for version ${VERSION_ID}\"\r\n exit 1\r\n fi\r\n\r\n ## download modpack files\r\n echo -e \"\\tDownloading ${DOWNLOAD_URL}\"\r\n if ! wget -q \"${DOWNLOAD_URL}\" -O server.zip; then\r\n echo -e \"\\tERROR: Failed to download modpack files!\"\r\n exit 1\r\n fi\r\n}\r\n\r\nfunction unpack_zip {\r\n unzip -o server.zip\r\n rm -rf server.zip\r\n}\r\n\r\nfunction json_download_mods {\r\n echo \"Downloading mods...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n jq -c '.files[]? | select(.env.server == \"required\") | {name: .path, url: .downloads[0]}' \"${MANIFEST}\" | while read -r mod; do\r\n local FILE_URL=$(echo \"${mod}\" | jq -r '.url \/\/ empty')\r\n local FILE_NAME=$(echo \"${mod}\" | jq -r '.name \/\/ empty')\r\n\r\n if [[ -z \"${FILE_URL}\" ]]; then\r\n echo -e \"\\tERROR: No download url found for mod '${mod}'\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading ${FILE_URL}\"\r\n \r\n if ! wget -q \"${FILE_URL}\" -P \"${SERVER_DIR}\/mods\"; then\r\n echo -e \"\\tERROR: Failed to download mod '${FILE_NAME}'\"\r\n exit 1\r\n fi\r\n done\r\n}\r\n\r\nfunction json_download_overrides {\r\n echo \"Copying overrides...\"\r\n if [[ -d \"${SERVER_DIR}\/overrides\" ]]; then\r\n echo -e \"\\tCopying shared overrides\"\r\n cp -r \"${SERVER_DIR}\/overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/overrides\"\r\n fi\r\n\r\n if [[ -d \"${SERVER_DIR}\/server-overrides\" ]]; then\r\n echo -e \"\\tCopying server overrides\"\r\n cp -r \"${SERVER_DIR}\/server-overrides\/\"* \"${SERVER_DIR}\"\r\n rm -r \"${SERVER_DIR}\/server-overrides\"\r\n fi\r\n}\r\n\r\nFORGE_INSTALLER_URL=\"https:\/\/maven.minecraftforge.net\/net\/minecraftforge\/forge\/\"\r\n\r\nfunction json_download_forge {\r\n echo \"Downloading Forge...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FORGE_VERSION=$(jq -r '.dependencies.forge \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FORGE_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Forge version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=\"${MC_VERSION}-${FORGE_VERSION}\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" || \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n FORGE_VERSION=\"${FORGE_VERSION}-${MC_VERSION}\"\r\n fi\r\n\r\n local FORGE_JAR=\"forge-${FORGE_VERSION}.jar\"\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=\"forge-${FORGE_VERSION}-universal.jar\"\r\n fi\r\n\r\n local FORGE_URL=\"${FORGE_INSTALLER_URL}${FORGE_VERSION}\/forge-${FORGE_VERSION}\"\r\n\r\n echo -e \"\\tUsing Forge ${FORGE_VERSION} from ${FORGE_URL}\"\r\n\r\n local FORGE_INSTALLER=\"${FORGE_URL}-installer.jar\"\r\n echo -e \"\\tDownloading Forge Installer ${FORGE_VERSION} from ${FORGE_INSTALLER}\"\r\n\r\n if ! wget -q -O forge-installer.jar \"${FORGE_INSTALLER}\"; then\r\n echo -e \"\\tERROR: Failed to download Forge Installer ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n rm -rf libraries\/net\/minecraftforge\/forge\/\r\n rm -f unix_args.txt\r\n\r\n echo -e \"\\tInstalling Forge Server ${FORGE_VERSION}\"\r\n if ! java -jar forge-installer.jar --installServer > \/dev\/null 2>&1; then\r\n echo -e \"\\tERROR: Failed to install Forge Server ${FORGE_VERSION}\"\r\n exit 1\r\n fi\r\n\r\n if [[ $MC_VERSION =~ ^1\\.(17|18|19|20|21|22|23) || $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n echo -e \"\\tDetected Forge 1.17 or newer version. Setting up Forge Unix arguments\"\r\n ln -sf libraries\/net\/minecraftforge\/forge\/*\/unix_args.txt unix_args.txt\r\n else\r\n mv \"$FORGE_JAR\" forge-server-launch.jar\r\n echo \"forge-server-launch.jar\" > \".serverjar\"\r\n fi\r\n\r\n rm -f forge-installer.jar\r\n}\r\n\r\nFABRIC_INSTALLER_URL=\"https:\/\/meta.fabricmc.net\/v2\/versions\/installer\"\r\n\r\nfunction json_download_fabric {\r\n echo \"Downloading Fabric...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local FABRIC_VERSION=$(jq -r '.dependencies.\"fabric-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${FABRIC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric version found in manifest '${MANIFEST}'\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${FABRIC_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Fabric installer url found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O fabric-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Fabric Installer ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar fabric-installer.jar server -mcversion \"${MC_VERSION}\" -loader \"${FABRIC_VERSION}\" -downloadMinecraft; then\r\n echo -e \"\\tERROR: Failed to install Fabric Server ${MC_VERSION}-${FABRIC_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"fabric-server-launch.jar\" > \".serverjar\"\r\n\r\n rm -f fabric-installer.jar\r\n}\r\n\r\nQUILT_INSTALLER_URL=\"https:\/\/meta.quiltmc.org\/v3\/versions\/installer\"\r\n\r\nfunction json_download_quilt {\r\n echo \"Downloading Quilt...\"\r\n\r\n local MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n local MC_VERSION=$(jq -r '.dependencies.minecraft \/\/ empty' \"${MANIFEST}\")\r\n local QUILT_VERSION=$(jq -r '.dependencies.\"quilt-loader\" \/\/ empty' \"${MANIFEST}\")\r\n\r\n if [[ -z \"${MC_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Minecraft version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${QUILT_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n local INSTALLER_JSON=$(wget -q -O - ${QUILT_INSTALLER_URL} )\r\n local INSTALLER_VERSION=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].version \/\/ empty')\r\n local INSTALLER_URL=$(echo \"$INSTALLER_JSON\" | jq -r '.[0].url \/\/ empty')\r\n\r\n if [[ -z \"${INSTALLER_JSON}\" ]]; then\r\n echo -e \"\\tERROR: Failed to retrieve Quilt installer information from manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_VERSION}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer version found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n if [[ -z \"${INSTALLER_URL}\" ]]; then\r\n echo -e \"\\tERROR: No Quilt installer URL found in manifest!\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tDownloading Quilt Installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION}) from ${INSTALLER_URL}\"\r\n\r\n if ! wget -q -O quilt-installer.jar \"${INSTALLER_URL}\"; then\r\n echo -e \"\\tERROR: Failed to download Quilt installer ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo -e \"\\tInstalling Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n if ! java -jar quilt-installer.jar install server \"${MC_VERSION}\" \"${QUILT_VERSION}\" --download-server --install-dir=.\/; then\r\n echo -e \"\\tERROR: Failed to install Quilt Server ${MC_VERSION}-${QUILT_VERSION} (${INSTALLER_VERSION})\"\r\n exit 1\r\n fi\r\n\r\n echo \"quilt-server-launch.jar\" > \".serverjar\"\r\n\r\n rm quilt-installer.jar\r\n}\r\n\r\ninstall_required\r\n\r\nif [[ -z \"${PROJECT_ID}\" ]]; then\r\n echo \"ERROR: You must specify a PROJECT_ID environment variable!\"\r\n exit 1\r\nfi\r\n\r\nif [[ ! \"${PROJECT_ID}\" = \"zip\" ]]; then\r\n\tget_download\r\n\tunpack_zip\r\nelse\r\n\tunpack_zip\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n echo \"Found modrinth.index.json, installing mods\"\r\n json_download_mods\r\n json_download_overrides\r\nfi\r\n\r\nif [[ -f \"${SERVER_DIR}\/modrinth.index.json\" ]]; then\r\n MANIFEST=\"${SERVER_DIR}\/modrinth.index.json\"\r\n\r\n if [[ $(jq -r '.dependencies.forge' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_forge\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"fabric-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_fabric\r\n fi\r\n\r\n if [[ $(jq -r '.dependencies.\"quilt-loader\"' \"${MANIFEST}\") != \"null\" ]]; then\r\n json_download_quilt\r\n fi\r\nfi\r\n\r\necho -e \"\\nInstall completed succesfully, enjoy!\"", - "container": "openjdk:8-jdk-slim", + "container": "eclipse-temurin:17-jdk", "entrypoint": "bash" } }, From 612f17658da1ce4bfec77bc235fe17d32d9983c0 Mon Sep 17 00:00:00 2001 From: Red-Thirten Date: Tue, 1 Aug 2023 14:09:18 -0700 Subject: [PATCH 146/251] [Ground Branch] Fix Boot Freeze & Mod Directory - Changes the default Docker image to use `wine_latest`. `wine_staging` is causing the server to freeze on boot, but it is left as an optional Docker image to easily switch back if desired. - Added `GroundBranch/Config/DefaultModding.ini` to Configuration Files to direct the server to an accessible Mod Path. - Only change in the installation script is the Egg's date. - Updated the README's "Modding" section with more accurate information. --- game_eggs/steamcmd_servers/ground_branch/README.md | 8 +------- .../ground_branch/egg-ground-branch.json | 9 +++++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/game_eggs/steamcmd_servers/ground_branch/README.md b/game_eggs/steamcmd_servers/ground_branch/README.md index 0a681074..40c95595 100644 --- a/game_eggs/steamcmd_servers/ground_branch/README.md +++ b/game_eggs/steamcmd_servers/ground_branch/README.md @@ -89,10 +89,4 @@ ___ ### Modding -Modding has not been adequately explored at this time. If you have information on modding you would like to share, please submit a PR to update this README. - -What is currently known about modding: - -- The server seems to automatically look at the following directory for any available mods to load: `/home/workshop/content/16900/` -- This directory is un-accessible to Pterodactyl end-users, and I am unaware of a way to point the server to look in a different directory for mods. -- However, you may be able to set up a mount to this directory with mods in SteamCMD format. +At the time of writing this (2023/08/01), no workshop mods for Ground Branch exist. However, if they were to be introduced or you would like to install a mod, mods can be installed to `/home/container/steamapps/workshop/content/16900/`. The server should then stage them to `/home/container/GroundBranch/Mods` and show up as "Mod ID #" in the in-game modding menu. diff --git a/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json index f8534e13..d7c408fc 100644 --- a/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json +++ b/game_eggs/steamcmd_servers/ground_branch/egg-ground-branch.json @@ -4,25 +4,26 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-25T02:52:19+00:00", + "exported_at": "2023-08-01T20:51:33+00:00", "name": "Ground Branch", "author": "rehlmgaming@gmail.com", "description": "From one of the developers behind the original Rainbow Six\u00ae and Ghost Recon\u00ae games, comes a thinking-man's first-person shooter featuring in-depth character and weapon customization. Take your time. Think ahead. Get the job done.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "Wine [Latest]": "ghcr.io\/parkervcp\/yolks:wine_latest", + "Wine [Staging]": "ghcr.io\/parkervcp\/yolks:wine_staging" }, "file_denylist": [], "startup": "wine GroundBranch\/Binaries\/Win64\/GroundBranchServer-Win64-Shipping.exe MultiHome=0.0.0.0 Port={{SERVER_PORT}} QueryPort={{QUERY_PORT}} -log", "config": { - "files": "{\r\n \"GroundBranch\/ServerConfig\/Server.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName=\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", + "files": "{\r\n \"GroundBranch\/ServerConfig\/Server.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ServerName=\": \"ServerName={{server.build.env.SERVER_NAME}}\",\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n },\r\n \"GroundBranch\/Config\/DefaultModding.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"ModPath=\": \"ModPath=..\/steamapps\/workshop\/content\/16900\/\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Bringing up level for play took\"\r\n}", "logs": "{}", "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Ground Branch Egg - egg-ground-branch.json\r\n## Authors: David Wolfe (Red-Thirten)\r\n## Date: 2023\/05\/24\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Ground Branch setup\r\n# Make ServerConfig directory and default Server.ini file (since they are not initially present before first server start)\r\nmkdir -p $HOME\/GroundBranch\/ServerConfig\/ && cd \"$_\"\r\n\r\nif [[ ! -f Server.ini ]]; then\r\n echo -e '\\nCreating default \"Server.ini\" configuration file...'\r\n cat > Server.ini << EOF\r\n[\/Script\/RBZooKeeper.ZKServer]\r\n; Name of the server 64 characters max)\r\nServerName=Unnamed Ground Branch Server\r\n\r\n; The message of the day (512 characters max)\r\n; e.g. ServerMOTD=This text here is displayed
with the 'admin motd' command.\r\nServerMOTD=\"Welcome!\"\r\n\r\n; Set to a jpg image to act as a server banner in-game where possible.\r\n; (recommended resolution: 788 x 386)\r\nServerWebBanner=\"\"\r\n; e.g. ServerWebPage=www.images.com\/myimage.jpeg\r\n\r\n; Password required to join the server.\r\n;ServerPassword=\r\n\r\n; Password required to join the server as a permanent spectator.\r\n;SpectatorOnlyPassword=\r\n\r\n; Maximum number of players allowed on this server.\r\nMaxPlayers=16\r\nMaxSpectators=0\r\n\r\n; Set default match types for game modes and round limits:\r\n; Match types: Continuous, BestOf, FirstTo, Play, PlayUntilWin, TimeLimit.\r\n; Round limits = number of rounds, except Time Limit match type (minutes).\r\n; PVE \/ Co-op:\r\nPVEMatchType=Continuous\r\nPVERoundLimit=2\r\n; PVP:\r\nPVPMatchType=Continuous\r\nPVPRoundLimit=3\r\n; PVP FFA (Free-for-all):\r\nPVPFFAMatchType=Continuous\r\nPVPFFARoundLimit=1\r\nGameRules=((\"AllowCheats\", False),(\"AllowDeadChat\", True),(\"AllowUnrestrictedRadio\", False),(\"AllowUnrestrictedVoice\", False),(\"SpectateEnemies\", True),(\"SpectateForceFirstPerson\", False),(\"SpectateFreeCam\", True),(\"UseTeamRestrictions\", False))\r\nEOF\r\nfi\r\n\r\necho -e \"\\nGround Branch Dedicated Server successfully installed!\\n\"", + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl Ground Branch Egg - egg-ground-branch.json\r\n## Authors: David Wolfe (Red-Thirten)\r\n## Date: 2023\/08\/01\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/pterodactyl\/installers:debian'\r\n\r\n# Download and install SteamCMD\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) validate +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n## Ground Branch setup\r\n# Make ServerConfig directory and default Server.ini file (since they are not initially present before first server start)\r\nmkdir -p $HOME\/GroundBranch\/ServerConfig\/ && cd \"$_\"\r\n\r\nif [[ ! -f Server.ini ]]; then\r\n echo -e '\\nCreating default \"Server.ini\" configuration file...'\r\n cat > Server.ini << EOF\r\n[\/Script\/RBZooKeeper.ZKServer]\r\n; Name of the server 64 characters max)\r\nServerName=Unnamed Ground Branch Server\r\n\r\n; The message of the day (512 characters max)\r\n; e.g. ServerMOTD=This text here is displayed
with the 'admin motd' command.\r\nServerMOTD=\"Welcome!\"\r\n\r\n; Set to a jpg image to act as a server banner in-game where possible.\r\n; (recommended resolution: 788 x 386)\r\nServerWebBanner=\"\"\r\n; e.g. ServerWebPage=www.images.com\/myimage.jpeg\r\n\r\n; Password required to join the server.\r\n;ServerPassword=\r\n\r\n; Password required to join the server as a permanent spectator.\r\n;SpectatorOnlyPassword=\r\n\r\n; Maximum number of players allowed on this server.\r\nMaxPlayers=16\r\nMaxSpectators=0\r\n\r\n; Set default match types for game modes and round limits:\r\n; Match types: Continuous, BestOf, FirstTo, Play, PlayUntilWin, TimeLimit.\r\n; Round limits = number of rounds, except Time Limit match type (minutes).\r\n; PVE \/ Co-op:\r\nPVEMatchType=Continuous\r\nPVERoundLimit=2\r\n; PVP:\r\nPVPMatchType=Continuous\r\nPVPRoundLimit=3\r\n; PVP FFA (Free-for-all):\r\nPVPFFAMatchType=Continuous\r\nPVPFFARoundLimit=1\r\nGameRules=((\"AllowCheats\", False),(\"AllowDeadChat\", True),(\"AllowUnrestrictedRadio\", False),(\"AllowUnrestrictedVoice\", False),(\"SpectateEnemies\", True),(\"SpectateForceFirstPerson\", False),(\"SpectateFreeCam\", True),(\"UseTeamRestrictions\", False))\r\nEOF\r\nfi\r\n\r\necho -e \"\\nGround Branch Dedicated Server successfully installed!\\n\"", "container": "ghcr.io\/pterodactyl\/installers:debian", "entrypoint": "\/bin\/bash" } From ab46b489faa9157df071e2aa97bd63de64e9f537 Mon Sep 17 00:00:00 2001 From: vp-en <67713433+vp-en@users.noreply.github.com> Date: Wed, 2 Aug 2023 16:28:31 +0200 Subject: [PATCH 147/251] Add PowerNukkitX to the readme The previous PR (https://github.com/parkervcp/eggs/pull/2354) forgot to edit the `README.md`. So here's a little fix for that. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3b9510fc..95ad3868 100644 --- a/README.md +++ b/README.md @@ -170,6 +170,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [LiteLoaderBDS](game_eggs/bedrock/LiteLoader-bedrock) * [Nukkit](game_eggs/minecraft/bedrock/nukkit) * [PocketMine MP](game_eggs/minecraft/bedrock/pocketmine_mp) + * [PowerNukkitX](game_eggs/minecraft/bedrock/PowerNukkitX) * [Java](game_eggs/minecraft/java) Servers for Java Minecraft * [CurseForge](game_eggs/minecraft/java/curseforge) From 424915300f447bb588dc6849323615dccd74a1a9 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Thu, 3 Aug 2023 09:43:05 +0200 Subject: [PATCH 148/251] updated unturned --- game_eggs/steamcmd_servers/unturned/README.md | 9 +- .../unturned/egg-unturned.json | 84 ++++++++++++------- 2 files changed, 59 insertions(+), 34 deletions(-) diff --git a/game_eggs/steamcmd_servers/unturned/README.md b/game_eggs/steamcmd_servers/unturned/README.md index 3376abb0..ad425f9b 100644 --- a/game_eggs/steamcmd_servers/unturned/README.md +++ b/game_eggs/steamcmd_servers/unturned/README.md @@ -7,12 +7,17 @@ You're one of the few not yet turned zombie. Keeping it that way will be a chall - Take a subtle approach sneaking around and making use of distractions. - Confront and learn to counter special abilities ranging from invisibility to fire breathing to lightning attacks. +## GSLT + +You can manually create GSLTs while logged in with your Steam account here: https://steamcommunity.com/dev/managegameservers + +Use Unturned's app ID 304930, and a memo to remind you which server the token is for. + ## Server Ports -Rocketmod requires 3 ports to run properly. +Unturned requires 2 ports to run properly. | Port | default | |---------|---------| | Game | 27015 | | Game +1 | 27016 | -| Game +2 | 27017 | diff --git a/game_eggs/steamcmd_servers/unturned/egg-unturned.json b/game_eggs/steamcmd_servers/unturned/egg-unturned.json index ac3293fa..bda91e0b 100644 --- a/game_eggs/steamcmd_servers/unturned/egg-unturned.json +++ b/game_eggs/steamcmd_servers/unturned/egg-unturned.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-02T17:36:50+02:00", + "exported_at": "2023-08-03T09:39:35+02:00", "name": "Unturned", "author": "parker@parkervcp.com", "description": "Vanilla Unturned with the included RockerMod.", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": ".\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}}", + "startup": ".\/Unturned_Headless.x86_64 -batchmode -nographics -bind 0.0.0.0 -port {{SERVER_PORT}} -GSLT {{GSLT}} -Name \"{{SRV_NAME}}\" -Password {{SRV_PW}} +InternetServer\/{{SRV_ID}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Loading level: 100%\"\r\n}", @@ -30,6 +30,56 @@ } }, "variables": [ + { + "name": "Server Name", + "description": "", + "env_variable": "SRV_NAME", + "default_value": "Pterodactyl hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "string|max:50", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "", + "env_variable": "SRV_PW", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "GSLT", + "description": "", + "env_variable": "GSLT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server ID", + "description": "ID of the server for savegames", + "env_variable": "SRV_ID", + "default_value": "PterodactylUnturned", + "user_viewable": false, + "user_editable": false, + "rules": "string", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update on restart", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, { "name": "Steam App ID", "description": "Steam App ID require for install and startup update", @@ -49,36 +99,6 @@ "user_editable": false, "rules": "required|string", "field_type": "text" - }, - { - "name": "Steam User", - "description": "Should be left blank for anon user", - "env_variable": "STEAM_USER", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Steam Password", - "description": "", - "env_variable": "STEAM_PASS", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Auto update", - "description": "Auto update on restart", - "env_variable": "AUTO_UPDATE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean", - "field_type": "text" } ] } \ No newline at end of file From d59fbda74db101a2ec2c2dad3dda9bacef66a047 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Fri, 4 Aug 2023 08:41:45 +0200 Subject: [PATCH 149/251] add version selection --- voice_servers/lavalink/egg-lavalink.json | 37 ++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/voice_servers/lavalink/egg-lavalink.json b/voice_servers/lavalink/egg-lavalink.json index 6ac3512e..7d68dc65 100644 --- a/voice_servers/lavalink/egg-lavalink.json +++ b/voice_servers/lavalink/egg-lavalink.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-04T22:10:59+02:00", + "exported_at": "2023-08-04T08:40:49+02:00", "name": "Lavalink", "author": "damuffin36@gmail.com", "description": "A standalone audio sending node based on Lavaplayer and Koe. Allows for sending audio without it ever reaching any of your shards.\r\nDescription taken from https:\/\/github.com\/freyacodes\/Lavalink", @@ -22,10 +22,41 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# NodeJS Bot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\ncurl -L -o Lavalink.jar https:\/\/github.com\/freyacodes\/Lavalink\/releases\/latest\/download\/Lavalink.jar\r\n\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho -e \"install complete\"\r\nexit 0", + "script": "## this is a simple script to use the github API for release versions.\r\n## this requires the egg has a variable for GITHUB_PACKAGE, VERSION and MATCH (match is to match the filename in some way)\r\n## this supports using oauth\/personal access tokens via GITHUB_USER and GITHUB_OAUTH_TOKEN (both are required.)\r\n## if you are getting hit with GitHub API limit issues then you need to have the user and token set.\r\napt update\r\napt install -y curl jq git\r\n\r\ncd \/mnt\/server\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\nif [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output \/dev\/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -L -o Lavalink.jar ${DOWNLOAD_URL}\r\ncurl -L -o application.yml https:\/\/raw.githubusercontent.com\/freyacodes\/Lavalink\/master\/LavalinkServer\/application.yml.example\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", "container": "debian:bullseye-slim", "entrypoint": "bash" } }, - "variables": [] + "variables": [ + { + "name": "Version", + "description": "", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "GITHUB_PACKAGE", + "description": "", + "env_variable": "GITHUB_PACKAGE", + "default_value": "lavalink-devs\/Lavalink", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Match", + "description": "", + "env_variable": "MATCH", + "default_value": "Lavalink.jar", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] } \ No newline at end of file From 5211f38ae7f5daf0b0330a9d0d0831f9604e701d Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 5 Aug 2023 10:50:50 +0200 Subject: [PATCH 150/251] update redbot --- bots/discord/redbot/egg-red.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/bots/discord/redbot/egg-red.json b/bots/discord/redbot/egg-red.json index 9a8c1052..cc75b41e 100644 --- a/bots/discord/redbot/egg-red.json +++ b/bots/discord/redbot/egg-red.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-04T15:34:30-07:00", + "exported_at": "2023-08-05T10:50:21+02:00", "name": "Red", "author": "parker@parkervcp.com", "description": "A multifunction Discord bot \r\n\r\nhttps:\/\/github.com\/Cog-Creators\/Red-DiscordBot", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-11-jre\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\ncurl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\necho -e \"install finished\"", + "script": "#!\/bin\/bash\r\n# red-discordbot install script\r\n\r\n## install deps\r\nmkdir -p \/usr\/share\/man\/man1\r\napt update\r\napt -y install git ca-certificates dnsutils iproute2 make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev libgdbm-dev uuid-dev git openjdk-17-jre-headless\r\n\r\n## config folder layouts\r\necho -e \"generating config folder layout\"\r\nmkdir -p \/mnt\/server\/.config\/{Red-DiscordBot,share}\/ \/mnt\/server\/.local\/share\/Red-DiscordBot\/data\/pterodactyl\/\r\ncd \/mnt\/server\/\r\nln -s .local\/share\/Red-DiscordBot\/data\/pterodactyl\/ .\/configs\r\n\r\n## install red\r\necho -e \"add container user to install\"\r\nln -s \/mnt\/server\/ \/home\/container\r\nuseradd -m -d \/home\/container container\r\nchown -R container \/mnt\/server\/\r\necho -e \"install red locally as user\"\r\npip install --upgrade pip\r\nsu - container -c 'pip install -U pip wheel'\r\nsu - container -c 'pip install -U Red-DiscordBot'\r\n\r\n## ensure the config is in place if it doesn't exist\r\nif [ ! -f \/mnt\/server\/.config\/Red-DiscordBot\/config.json ]; then\r\n curl https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/redbot\/config.json -o \/mnt\/server\/.config\/Red-DiscordBot\/config.json\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", "container": "python:3.11-slim", "entrypoint": "bash" } @@ -47,6 +47,16 @@ "user_editable": true, "rules": "required|string", "field_type": "text" + }, + { + "name": "Owner", + "description": "Owner of the Bot to use special commands", + "env_variable": "OWNER", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:30", + "field_type": "text" } ] -} +} \ No newline at end of file From 2d6c215de76dbfb3da90a6aba7f134628fa6bd78 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Sun, 6 Aug 2023 21:31:20 +0200 Subject: [PATCH 151/251] Update README.md --- bots/discord/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bots/discord/README.md b/bots/discord/README.md index 2640948c..1793f497 100644 --- a/bots/discord/README.md +++ b/bots/discord/README.md @@ -27,6 +27,11 @@ The bot that runs as the fragforce `@Fragbot` offering looking-for-group service [jagrosh/MusicBot](https://github.com/jagrosh/MusicBot) A Discord music bot that's easy to set up and run yourself! +### [Muse](muse) + +[codetheweb/muse](https://github.com/codetheweb/muse) +🎧 a self-hosted midwestern Discord music bot that doesn't suck + ### [parkertron](parkertron) [parkervcp/parkertron](https://github.com/parkervcp/parkertron) From 3abb20e996fe62198929c41bee3127bb8d1fc579 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Sun, 6 Aug 2023 21:37:41 +0200 Subject: [PATCH 152/251] Muse music bot Added Egg for Muse music bot (discord) --- bots/discord/muse/README.md | 9 ++++ bots/discord/muse/egg-muse.json | 82 +++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 bots/discord/muse/README.md create mode 100644 bots/discord/muse/egg-muse.json diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md new file mode 100644 index 00000000..0e784539 --- /dev/null +++ b/bots/discord/muse/README.md @@ -0,0 +1,9 @@ +# ATLBot + +## Their [Github](https://github.com/codetheweb/muse) + +Muse is a highly-opinionated midwestern self-hosted Discord music bot that doesn't suck. + +## Server Ports + +There are no ports required for the atl bot diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json new file mode 100644 index 00000000..c6d7772c --- /dev/null +++ b/bots/discord/muse/egg-muse.json @@ -0,0 +1,82 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-08-06T19:26:29+00:00", + "name": "Muse", + "author": "hello@apollo.moe", + "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", + "features": null, + "docker_images": { + "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16": "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16" + }, + "file_denylist": [], + "startup": "npm start", + "config": { + "files": "{\r\n \".env\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISCORD_TOKEN\": \"DISCORD_TOKEN={{env.discord_token}}\",\r\n \"DATA_DIR\": \"DATA_DIR={{env.data_dir}}\",\r\n \"YOUTUBE_API_KEY\": \"YOUTUBE_API_KEY={{env.api_key}}\",\r\n \"SPOTIFY_CLIENT_ID\": \"SPOTIFY_CLIENT_ID={{env.client_id}}\",\r\n \"SPOTIFY_CLIENT_SECRET\": \"SPOTIFY_CLIENT_SECRET={{env.client_secret}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Running version \"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "apt-get update\r\napt-get install openssl git ffmpeg -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile", + "container": "node:lts-bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "TOKEN", + "description": "Discord Bot Token", + "env_variable": "discord_token", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Data directory", + "description": "Default: .\/data", + "env_variable": "data_dir", + "default_value": ".\/data", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "YouTube API Key", + "description": "You can get it here: https:\/\/console.developers.google.com\/", + "env_variable": "api_key", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Spotify Client ID", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", + "env_variable": "client_id", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Spotify Client Secret", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", + "env_variable": "client_secret", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file From ac234e4cb4bfefa37a50e9938616523430356ce3 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Sun, 6 Aug 2023 21:47:27 +0200 Subject: [PATCH 153/251] Update README.md --- bots/discord/muse/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md index 0e784539..80026370 100644 --- a/bots/discord/muse/README.md +++ b/bots/discord/muse/README.md @@ -6,4 +6,4 @@ Muse is a highly-opinionated midwestern self-hosted Discord music bot that doesn ## Server Ports -There are no ports required for the atl bot +There are no ports required for the Muse bot From dfea0391a542b9280f2970c5a32f17ff6286d078 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Sun, 6 Aug 2023 22:18:05 +0200 Subject: [PATCH 154/251] Fix See: https://github.com/TimeForANinja/node-ytsr/issues/180 --- bots/discord/muse/egg-muse.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index c6d7772c..e7801db1 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-06T19:26:29+00:00", + "exported_at": "2023-08-06T20:16:08+00:00", "name": "Muse", "author": "hello@apollo.moe", "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "apt-get update\r\napt-get install openssl git ffmpeg -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile", + "script": "apt-get update\r\napt-get install openssl git ffmpeg -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js", "container": "node:lts-bullseye-slim", "entrypoint": "bash" } From 91871ea5c5e4652544343310d0008a25701632f1 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Sun, 6 Aug 2023 22:23:49 +0200 Subject: [PATCH 155/251] Replaced Replaced --- bots/discord/muse/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md index 80026370..e9fd5d4d 100644 --- a/bots/discord/muse/README.md +++ b/bots/discord/muse/README.md @@ -1,4 +1,4 @@ -# ATLBot +# Muse ## Their [Github](https://github.com/codetheweb/muse) From e98b8878a6021da1e5ba1b70d69c740fdf46ea11 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Mon, 7 Aug 2023 12:26:38 +0200 Subject: [PATCH 156/251] replace repo --- bots/discord/muse/egg-muse.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index e7801db1..f65302d8 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -4,13 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-06T20:16:08+00:00", + "exported_at": "2023-08-07T10:22:41+00:00", "name": "Muse", "author": "hello@apollo.moe", "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", "features": null, "docker_images": { - "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16": "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16" + "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16" }, "file_denylist": [], "startup": "npm start", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "apt-get update\r\napt-get install openssl git ffmpeg -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js", + "script": "apt-get update\r\napt-get install openssl git -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js", "container": "node:lts-bullseye-slim", "entrypoint": "bash" } From d2ce5690cba4c90687851b9076eebe55b6ac50d4 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Tue, 8 Aug 2023 19:24:12 +0200 Subject: [PATCH 157/251] Updating Readme / Install Script Update --- bots/discord/muse/README.md | 26 ++++++++++++++++++++++++++ bots/discord/muse/egg-muse.json | 16 +++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md index e9fd5d4d..20c3dee7 100644 --- a/bots/discord/muse/README.md +++ b/bots/discord/muse/README.md @@ -1,3 +1,29 @@ +### Authors / Contributors + + + + + + + +
+ +
TubaApollo +
+
+ 💻 + 🔨 +
+ +
Red-Thirten +
+
+ 💻 + 💡 +
+ + + # Muse ## Their [Github](https://github.com/codetheweb/muse) diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index e7801db1..5ec059d9 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -4,13 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-06T20:16:08+00:00", + "exported_at": "2023-08-08T17:23:08+00:00", "name": "Muse", "author": "hello@apollo.moe", "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", "features": null, "docker_images": { - "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16": "ghcr.io\/software-noob\/pterodactyl-images:nodejs_16" + "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16" }, "file_denylist": [], "startup": "npm start", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "apt-get update\r\napt-get install openssl git ffmpeg -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/codetheweb\/muse.git .;\r\nfi;\r\ncp .env.example .env\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js", + "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", "container": "node:lts-bullseye-slim", "entrypoint": "bash" } @@ -77,6 +77,16 @@ "user_editable": true, "rules": "required|string", "field_type": "text" + }, + { + "name": "Version", + "description": "Specify a version, for example: \"v2.4.1\"\r\nFor the latest version, type \"latest\"", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" } ] } \ No newline at end of file From a99b4e861aa2a9af7d08804cb59d8832e9fd2691 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Tue, 8 Aug 2023 19:25:58 +0200 Subject: [PATCH 158/251] Updating install script --- bots/discord/muse/egg-muse.json | 92 +++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 bots/discord/muse/egg-muse.json diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json new file mode 100644 index 00000000..0517e7d6 --- /dev/null +++ b/bots/discord/muse/egg-muse.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-08-08T17:25:35+00:00", + "name": "Muse", + "author": "hello@apollo.moe", + "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16" + }, + "file_denylist": [], + "startup": "npm start", + "config": { + "files": "{\r\n \".env\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"DISCORD_TOKEN\": \"DISCORD_TOKEN={{env.discord_token}}\",\r\n \"DATA_DIR\": \"DATA_DIR={{env.data_dir}}\",\r\n \"YOUTUBE_API_KEY\": \"YOUTUBE_API_KEY={{env.api_key}}\",\r\n \"SPOTIFY_CLIENT_ID\": \"SPOTIFY_CLIENT_ID={{env.client_id}}\",\r\n \"SPOTIFY_CLIENT_SECRET\": \"SPOTIFY_CLIENT_SECRET={{env.client_secret}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Running version \"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", + "container": "node:lts-bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "TOKEN", + "description": "Discord Bot Token", + "env_variable": "discord_token", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Data directory", + "description": "Default: .\/data", + "env_variable": "data_dir", + "default_value": ".\/data", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "YouTube API Key", + "description": "You can get it here: https:\/\/console.developers.google.com\/", + "env_variable": "api_key", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Spotify Client ID", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", + "env_variable": "client_id", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Spotify Client Secret", + "description": "You can get it here: https:\/\/developer.spotify.com\/dashboard\/applications", + "env_variable": "client_secret", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Version", + "description": "Specify a version, for example: \"v2.4.1\"\r\nFor the latest version, type \"latest\"", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file From dd0727693baf748676dde0a5d328c317a9bfa91e Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Tue, 8 Aug 2023 22:15:36 +0000 Subject: [PATCH 159/251] Update README.md --- bots/discord/muse/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md index 20c3dee7..4c84437f 100644 --- a/bots/discord/muse/README.md +++ b/bots/discord/muse/README.md @@ -1,3 +1,5 @@ +# Muse + ### Authors / Contributors @@ -24,8 +26,6 @@ -# Muse - ## Their [Github](https://github.com/codetheweb/muse) Muse is a highly-opinionated midwestern self-hosted Discord music bot that doesn't suck. From f23b01f3849327f4d06f6197e57e68df4e9f1ff0 Mon Sep 17 00:00:00 2001 From: TubaApollo <86665265+TubaApollo@users.noreply.github.com> Date: Wed, 9 Aug 2023 20:04:25 +0000 Subject: [PATCH 160/251] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 95ad3868..1f7de48e 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Dynamica](/bots/discord/dynamica) Node JS * [fragbot](/bots/discord/fragbot) Golang * [JMusicBot](/bots/discord/jmusicbot) Java +* [Muse](/bots/discord/muse) Node JS * [parkertron](/bots/discord/parkertron) Golang * [pixel-bot](/bots/discord/pixelbot) Python * [Redbot](/bots/discord/redbot) Python From 6b98069d1a8f7c66e7ddb871ade007b2235188f0 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 10 Aug 2023 18:09:55 +0200 Subject: [PATCH 161/251] Update Vintage Story --- game_eggs/vintage_story/egg-vintage-story.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game_eggs/vintage_story/egg-vintage-story.json b/game_eggs/vintage_story/egg-vintage-story.json index aad82472..d9ff2f7f 100644 --- a/game_eggs/vintage_story/egg-vintage-story.json +++ b/game_eggs/vintage_story/egg-vintage-story.json @@ -4,16 +4,16 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-09T19:41:11+01:00", + "exported_at": "2023-08-10T18:09:03+02:00", "name": "Vintage Story", "author": "mail@wuffy.eu", "description": "Vintage Story is an uncompromising wilderness survival sandbox game inspired by lovecraftian horror themes. Find yourself in a ruined world reclaimed by nature and permeated by unnerving temporal disturbances. Relive the advent of human civilization, or take your own path.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:mono_latest": "ghcr.io\/parkervcp\/yolks:mono_latest" + "Dotnet 7": "ghcr.io\/parkervcp\/yolks:dotnet_7" }, "file_denylist": [], - "startup": "mono VintagestoryServer.exe --dataPath .\/data --port={{SERVER_PORT}} --maxclients={{MAX_CLIENTS}} {{OPTIONS}}", + "startup": ".\/VintagestoryServer --dataPath .\/data --port={{SERVER_PORT}} --maxclients={{MAX_CLIENTS}} {{OPTIONS}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Dedicated Server now running on Port \"\r\n}", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Vintage Story Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl jq\r\n\r\nBRANCH=\"${FILES_BRANCH}\"\r\n\r\n# Fetching latest stable server release\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n case \"${BRANCH}\" in\r\n \"stable\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n ;;\r\n \"unstable\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/unstable.json\"\r\n ;;\r\n \"pre\")\r\n API_URL=\"http:\/\/api.vintagestory.at\/pre.json\"\r\n ;;\r\n *)\r\n echo \"Invalid stage; fallback to stable\"\r\n API_URL=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n ;;\r\n esac\r\n DOWNLOAD_URL=$(curl -SsL \"$API_URL\" | jq -r 'if ([.[]] | .[0].server.urls.cdn) != null then [.[]] | .[0].server.urls.cdn else [.[]] | .[0].server.urls.local end');\r\n# Use specified server release\r\nelse\r\n case \"${BRANCH}\" in\r\n \"stable\")\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n \"unstable\")\r\n DOWNLOAD_URL=https:\/\/account.vintagestory.at\/files\/unstable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n \"pre\")\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/pre\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n *)\r\n echo \"Invalid stage; fallback to stable\"\r\n DOWNLOAD_URL=https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\r\n ;;\r\n esac\r\nfi\r\n\r\ncd \/mnt\/server\/ || exit\r\n\r\ncurl -o vs_server.tar.gz \"${DOWNLOAD_URL}\"\r\ntar -xzf vs_server.tar.gz\r\n\r\nrm vs_server.tar.gz\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# Vintage Story Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl jq\r\n\r\n#!\/bin\/bash\r\n\r\ndeclare -A API_URLS=(\r\n [\"stable\"]=\"http:\/\/api.vintagestory.at\/stable.json\"\r\n [\"unstable\"]=\"http:\/\/api.vintagestory.at\/unstable.json\"\r\n [\"pre\"]=\"http:\/\/api.vintagestory.at\/pre.json\"\r\n)\r\n\r\ndeclare -A DOWNLOAD_URLS=(\r\n [\"stable\"]=\"https:\/\/cdn.vintagestory.at\/gamefiles\/stable\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n [\"unstable\"]=\"https:\/\/account.vintagestory.at\/files\/unstable\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n [\"pre\"]=\"https:\/\/cdn.vintagestory.at\/gamefiles\/pre\/vs_server_${RELEASE_VERSION}.tar.gz\"\r\n)\r\n\r\nBRANCH=\"${FILES_BRANCH}\"\r\n\r\nif [ -z \"${RELEASE_VERSION}\" ] || [ \"${RELEASE_VERSION}\" == \"latest\" ]; then\r\n API_URL=\"${API_URLS[$BRANCH]}\"\r\n DOWNLOAD_URL=$(curl -SsL \"$API_URL\" | jq -r 'if ([.[]] | .[0].linuxserver.urls.cdn) != null then [.[]] | .[0].linuxserver.urls.cdn else [.[]] | .[0].linuxserver.urls.local end')\r\nelse\r\n API_URL=\"${API_URLS[$BRANCH]}\"\r\n DOWNLOAD_URL=\"${DOWNLOAD_URLS[$BRANCH]}\"\r\nfi\r\n\r\n# Fallback to stable API URL if the branch is not recognized\r\nif [ -z \"$API_URL\" ]; then\r\n echo \"Invalid stage; fallback to stable\"\r\n API_URL=\"${API_URLS[\"stable\"]}\"\r\nfi\r\n\r\necho \"API URL: $API_URL\"\r\necho \"Download URL: $DOWNLOAD_URL\"\r\n\r\n\r\ncd \/mnt\/server\/ || exit\r\n\r\ncurl -o vs_server.tar.gz \"${DOWNLOAD_URL}\"\r\ntar -xzf vs_server.tar.gz\r\n\r\nrm vs_server.tar.gz\r\nrm server.sh\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "debian:bullseye-slim", "entrypoint": "bash" } @@ -69,4 +69,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From b8adc9556e98650034bf20d5f57369a25e645546 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 10 Aug 2023 18:31:45 +0200 Subject: [PATCH 162/251] Update: Swords 'n Magic and Stuff --- .../egg-swords-n-magic-and-stuff.json | 18 +-- .../swords_'n_Magic_and_Stuff/wrapper | Bin 17784 -> 0 bytes .../swords_'n_Magic_and_Stuff/wrapper.c | 133 ------------------ 3 files changed, 4 insertions(+), 147 deletions(-) delete mode 100644 game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper delete mode 100644 game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json index f731ae45..0e9cd8f5 100644 --- a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json +++ b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/egg-swords-n-magic-and-stuff.json @@ -4,16 +4,16 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-06T10:38:52+02:00", + "exported_at": "2023-08-10T18:31:24+02:00", "name": "Swords 'n Magic and Stuff", "author": "josdekurk@gmail.com", "description": "Grab your friends and set out for adventure in a world of swords, magic, and stuff. Discover tons of cool loot, uncover hidden secrets, and meet new friends and foes along the way. Make your mark and find a place to call home in this cute, multiplayer, open world RPG", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "Wine": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": ".\/wrapper \/usr\/bin\/wine \/home\/container\/SNM2020\/Binaries\/Win64\/SNMASServer-Win64-Shipping.exe -port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}}", + "startup": "wine \/home\/container\/SNM2020\/Binaries\/Win64\/SNMASServer-Win64-Shipping.exe -port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Succeeded to create Steam session with ID\"\r\n}", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/\r\n\r\nif [ ! -f \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini ]\r\nthen\r\n echo \"The config file does not yet exists, making a new one\"\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nelse\r\n echo \"Old config file found. Replacing it with a up to date one but a backup will be made\"\r\n mv \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game-$(date \"+%Y.%m.%d-%H.%M.%S\").ini.old\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nfi\r\n\r\nif [ ! -f \/mnt\/server\/wrapper ]\r\nthen\r\n echo \"The wrapper does not yet exists, download a new one\"\r\n curl -sSL -o \/mnt\/server\/wrapper \"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/swords_'n_Magic_and_Stuff\/wrapper\"\r\n chmod +x wrapper\r\nelse\r\n echo \"wrapper found. skipping\"\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/\r\n\r\nif [ ! -f \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini ]\r\nthen\r\n echo \"The config file does not yet exists, making a new one\"\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nelse\r\n echo \"Old config file found. Replacing it with a up to date one but a backup will be made\"\r\n mv \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game-$(date \"+%Y.%m.%d-%H.%M.%S\").ini.old\r\n mv \/mnt\/server\/SNM2020\/Content\/Docs\/Dedicated-Server-Game.ini \/mnt\/server\/SNM2020\/Saved\/Config\/WindowsServer\/Game.ini\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -157,16 +157,6 @@ "user_editable": true, "rules": "required|string|max:20", "field_type": "text" - }, - { - "name": "logs dir", - "description": "", - "env_variable": "LOGS_DIR", - "default_value": "\/home\/container\/SNM2020\/Saved\/Logs", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|", - "field_type": "text" } ] } \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper deleted file mode 100644 index dc959e19edd2d38aa7e0fd37c49ba270a18afaac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17784 zcmeHPeQ;dWb-$~{wlMZe_$vZCctbEX6s;r&TpMs%$y)oFk&R z4?$hy{ni49O%jo+M=w`sH+5520>sW3UXw@VMNq0zZ;g}IYTOMcDE-%*SRpp|D9@hRdwd+xAa*awar{l+TQtJr{1SRbk!K62( z^*HWKC&(crrW{X-3H@Htc1vkHDIqZ>SxTFKo(fZb!51VujdmzlFlD_jLy!FYtckVe*BfiJJ-CNCcnuCvPUwMNS>R4=wke+T%Fg~z|>0&kXZitCziZv zz0pVca_Rd3=anhAy#oFgaBmrTYR__ZZmocaD&SwNfZtaEPgKCyR=}UGfS(8M#ji9` z#LJ!64=do*p5^54uYgm#m6IQ+fZtdFud9IXu7FH z__g9XG44kOiN}Fq zbSf#jzt)fyE^qGLxxbB4zdkBQepPum~Oigc?vtm-kAszGFk% zT62Z3<@REBh3^hwZrHZb3|k4SCz4EAiESI#M&mJSTd*riMtb_TvaqGbgUrW!d0 z(9!;nMh81jc_quJim(g#kC5f@?U`>pi{Zm9{#Ik@>myf_-f1N+c>L$~+NV3iq@Eub z_iKF2uM`<)e*7MV(^%zJS$UkW;n&#koDH92!zXR{A{#zs!+8#-V(xD=m(qC2sll&u zG>y`=$jR$hIl?J|oR<4lj&Pn+2x<1yQ3%52d@VU4R{2$ia5X+F-fzRHjFaJ4Il?%0 zglzWHQQ1es6w?mB%96akg^<95HhiuUk;h&e?y=$hHk`&1P6K|GBm3M}2-)YSqw+`J za!LM={gTKy%u`u;JZQt`+wkXXIE|g04*OM(>Rren=nwpgA^dYHE00I~iXpr~W##cj zzhVf#PG#lsgkLd)U$3&&V>JTR2vj3bjllnd2pGfXYK@T@XL0{&>_3sJDU2DzuhgC@ zdS1BWT@)3Ty@zAnQa^IU_fmO&qJXsQr^M5gpC6O_Tg2B8e?s!F6Hm7&`6H5lnRuG= z^M@t>67e+E=MPH$uZX89KEF@$FAz`DOTJ(7-zA==^!$U8{}%BymFG80{%PWA3eWo` z|8?T&Rw&;r`9CC{Zh`V%$v;9oP3`%5$tQ@XDLpSFzl-=f;wLWySk^^6P2u?o$^Sm_ zGcT|b(tTw3l%|k>lLWJOyiVkn%SL9>IC=gaH@zC=QSoH0C<6LtH??WL!2Qn#T+ zUnHH}w;-8+4IR=L2}~HnC+6c^Z$+t*8O=S4h#MoFfM1?(tRAb|PjR=&&DC<-Ne=N# z$+E05-xxV0J<0ALBmc5@P<;Gzs=l=nhCdy?P zN6;YxQ*}?iL>OF0JwKrs6&=3}jZEO3;h}fLpjS&68M3;nX!TyQI;gD5HX5lN3B2=? zvhxP~Tn&NIzy%3pvt#EA1zCjAaCNMrcG%o6%JPWZAFgcg;T;0*fXOQ^av(qb# zk-4jHlSM{oj64DU6B=bG5`Tmm&?y@rK8#RvpwsHn$P$^1^H7-;&J`VxbSLQ}@@BdobDmjC?XHL`|J&_4q zkf-_7CkXZM&;^m6eVm4-+^bUQ9cl<6n*dI^;1v3m>i0FpHtU=+GWCccBz^&{4_pUd zJ0≤d7faL&uCv`pEFmG1p^@&`N&+6>B&r?_T%^(bgD;H)E+V?w1+Rjmi{uF6Hqv>~ z2)$*TeAjJc@126ixZ!%;KtIdW3*xpx10>_|Ab!0a~3btKi#wgi=A?S<* zP?Nku{+=AjuDO9uV+yS8E^dOz&QY!m?v1}L0j^991`$%^*Fec582F^&D zopCkfaZVFPw)2dU-AD~Pq5Huw;-PA2m-S8)=z_opXJ0#oLGN)gCt826BfI7=Z$@VO zhRoZoof|Trwr*?9T0{oDbC&b9V}_P) zRS(q&R3lK0Ks5r@2vj3bjlgG)0KLDU6i6iE2`|0EiNt!mc#UI)Qt`x~cUf|_*c#i| zZiTld_B0A#G~OeYC7YHdbq$;1UO?XNNYqMtyW{Ct*c*wJ=sRtbs5C1rbS8s6)}7vm zBQfjYM6kc#O31v~A58VCTrkm-^x_qjf+$0Xb~qYL$3ng2GFkBUC*mP1$%XV1i;5Vf z3Y&W4eO6N_9!uekla*-Nx@qHz<`vCNTZ4P7a8pMdmW6Av`z`~r^pIiBFA9ZcK=)1- z3dca701bma^iiSkkD%YZP$+L4(g|SVo&`#Ps6=+*F0RiPuz3;UAKPerW?r! z>9^zeBK#)*Ig#%D_#HxhE%Y>|)l+|{S8J@+W4rdzuf-G(4+@XRY`6cX?K|dYW53%iBEO zHctcO+dQ?>zxSZt06SC-C#(*|Mf~c4Q@)z25vWF>8i8sAsu8G0pc;W{1ga6JM&N%R z0shX6zboT=Z~AtP5?=49q;J0Q;!CC@`r{z}=7+yu<8Qxsjltjk@ONxWv_6-AdbtoM zsFv0qNc6&&Qch?1o33VEj%W5VeNH=ijpiFPwSUV*kX94IuLRVp7V8O};dK?gNT$T! zJQ>so)3zpDBkZ#-mmrXa!&FbXDqvvye`M1e90I6*7f{f z6aKEewBD7vAFR`KyQbZm?$Pvsrq62nyrxGrJ+0~6n*O_{ztnW5{^)IyrZ;Q4Qqy&s zZr8M1(>`CFP>TAEp_Jayws zM&6fTm!L00`TKe&?iM-jc(wvJzHsDzZ-dciX9(`^PJCwZx^Uv?Ji7ll@mj(C&WT?w zxIa7b*@FAM6USAi+r^2`5#F-+Tyd}@{-oy?p5p!yr=2>%@U zuH`QCr6i3LSBZ}bb~(z^xLkvHj+MmOqj7}7kti%A&*MB7{thxOe7QN{R|wTdX)S)P zGV$33ob2o?vA;*kPml8<;N|?UbYAo<$pz=XeIqg@shpj8Fhu?w)&nFqv<>%0cLpr&0f@N*vgJgEKTIM)+iGu?lh z-%3I(Jy~7>zZT$j2{Mr#s+}i$OJ)ZEh=RW~X z@}=$jBQ3vQH=2BQ3|lX2{HVSWlh2HSk4oHGCvoEy@N*ULOBL{X+%QqQl=`^@xOaNB zVkPi${mlS=V;T8S1^ILZ{6GaB;F%7um5{*_Iw8#keyi(Y{5P>pSji zYwa-aTeog&V4JzEwXGvSR^{%VP%*ITk2B5DJe12WC7WKz2+ zcYm4DV9H9SOnS>Fw`9=^L5GUoCFa0rGnoTWJHQ-}X<~yG_c+?QRdzd;+$dI}XWumD zD3aUO90To{lXWErz~GjEbZ$`N3i2G64p>_ z+lIzeut&(U-XONq`ND%S*i#gHr`3*AoYu zvIcOZYaBvx*=K!LufD2#!!W{}QdO6?(%?L52=+xns6L(|%W#hRz7K6Jd>CN*Fm99? z`Tl1Rt^YBl;vPsPUMDf-^}jBbvYaRSMf_+f!}`3QVtNw^*%HsE46Q`QuFvZ(rd}4* zv{b(xI9}1xbSo3D&zLUPI6tT0=K&fPn~HLxo$9`)mx#yKcSfAJFOgmUm)6)8n1Gnq*dY-BOH`M-SO>tLv*8evYP!q8}uQU1YHcV*$xfxlH z`_FUGB@x!==MCdc0Fjm}QarLgQ?)L=qA&bfv{}(JMNO4qJ*J-kw%5<=qBB~b{bVz& z$NaC5A*|@XUzLo1M*YhWr~0+HQpS<>f2)Y7j1H&NA%uADdrCqdTNK@)9j1B6hadaT o<1bww?7PxX#~rH`{bora*Uz%Fd@2!R diff --git a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c b/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c deleted file mode 100644 index c38eadb5..00000000 --- a/game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff/wrapper.c +++ /dev/null @@ -1,133 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include -#include - -void print_latest_log(const char* log_directory, off_t* last_pos, time_t* last_time) { - DIR *dir; - struct dirent *entry; - time_t latest_time = 0; - char latest_file[256]; - - dir = opendir(log_directory); - if (dir == NULL) { - printf("Error opening directory %s\n", log_directory); - return; - } - - while ((entry = readdir(dir)) != NULL) { - if (strstr(entry->d_name, "SnMDedSrv-") == entry->d_name && - strstr(entry->d_name, ".log") != NULL) { - char filename[256]; - sprintf(filename, "%s/%s", log_directory, entry->d_name); - struct stat file_stat; - stat(filename, &file_stat); - if (file_stat.st_mtime > latest_time) { - latest_time = file_stat.st_mtime; - strcpy(latest_file, filename); - } - } - } - - if (latest_time == 0) { - printf("No log files found in directory %s\n", log_directory); - return; - } - - if (latest_time <= *last_time) { - return; - } - - int fd = open(latest_file, O_RDONLY); - if (fd < 0) { - printf("Error opening file %s\n", latest_file); - return; - } - - // Move the file pointer to the last printed position - lseek(fd, *last_pos, SEEK_SET); - - char buffer[4096]; - int bytes_read; - int last_line_printed = 0; // Flag to check whether we have printed the last line - do { - bytes_read = read(fd, buffer, sizeof(buffer)); - if (bytes_read > 0) { - // Check if the last character is a newline - if (buffer[bytes_read - 1] == '\n') { - fwrite(buffer, 1, bytes_read, stdout); - fflush(stdout); - } else { - // If the last character is not a newline, add one - char* temp = (char*) malloc(bytes_read + 1); - memcpy(temp, buffer, bytes_read); - temp[bytes_read] = '\n'; - fwrite(temp, 1, bytes_read + 1, stdout); - fflush(stdout); - free(temp); - } - last_line_printed = (buffer[bytes_read - 1] == '\n'); - } - } while (bytes_read > 0); - - // If the last line was not printed, print it now - if (!last_line_printed) { - printf("\n"); - } - - // Remember the last position and time that was read - *last_pos = lseek(fd, 0, SEEK_CUR); - *last_time = latest_time; - - close(fd); -} - - - - -int main(int argc, char** argv) { - if (argc < 2) { - printf("Usage: winewrapper wine_path wine_args exe_path exe_args\n"); - return 0; - } - - char* wine_path = argv[1]; - - pid_t pid = fork(); - if (pid == 0) { - char** wine_argv = (char**) malloc(sizeof(char*) * (argc - 1)); - wine_argv[0] = wine_path; - for (int i = 2; i < argc; i++) { - wine_argv[i - 1] = argv[i]; - } - wine_argv[argc - 1] = NULL; - execv(wine_path, wine_argv); - printf("Error launching wine process\n"); - exit(1); - } else if (pid < 0) { - printf("Error forking process\n"); - exit(1); - } - - sleep(30); - - off_t last_pos = 0; - off_t last_size = 0; - char* log_directory = "/home/container/SNM2020/Saved/Logs"; - print_latest_log(log_directory, &last_pos, &last_size); - - - while (1) { - sleep(1); - print_latest_log(log_directory, &last_pos, &last_size); - } - - kill(pid, SIGTERM); - - return 0; -} \ No newline at end of file From 3d0013edc6efa1e75d68e7d3ac9fa2275acd0b9d Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Fri, 11 Aug 2023 21:41:18 +0200 Subject: [PATCH 163/251] update pixark --- .../pixark/egg-pix-a-r-k.json | 102 ++++++++++++++---- 1 file changed, 81 insertions(+), 21 deletions(-) diff --git a/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json b/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json index 9c93cc3d..60d943e5 100644 --- a/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json +++ b/game_eggs/steamcmd_servers/pixark/egg-pix-a-r-k.json @@ -1,30 +1,31 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-01-01T19:35:46+01:00", + "exported_at": "2023-08-11T21:40:04+02:00", "name": "PixARK", "author": "hello@venatus.digital", "description": "A simple Docker container with Wine to run PixARK using Pterodactyl Panel", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:ubuntu_wine-source" - ], - "startup": "wine64 .\/ShooterGame\/Binaries\/Win64\/PixARKServer.exe CubeWorld_Light?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SRV_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QPORT}}?RCONPort={{RCPORT}}?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?CULTUREFORCOOKING=en -NoBattlEye -CubePort={{CUBEPORT}} -cubeworld=world -nosteamclient -NoHangDetection -game -server -log", + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_devel": "ghcr.io\/parkervcp\/yolks:wine_devel" + }, + "file_denylist": [], + "startup": "wine64 .\/ShooterGame\/Binaries\/Win64\/PixARKServer.exe \"CubeWorld_Light?listen?DelayRegisterServer=True?bRawSockets=True?SessionName=\"{{SRV_NAME}}\"?AltSaveDirectoryName=PteroPixArk?ServerPassword={{ARK_PASSWORD}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}?MaxPlayers={{MAX_PLAYERS}}?RCONEnabled=True?RCONPort={{RCPORT}}\" -Seed=12345 -OreSeed=1234 -ConfigsUseAltDir -server -gameplaylogging -log -CULTUREFORCOOKING=en -NoBattlEye -QueryPort={{QPORT}} -Port={{SERVER_PORT}} -CubePort={{CUBEPORT}} -cubeworld={{SRV_NAME}} -nosteamclient -NoHangDetection", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"Full Startup:\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": false,\r\n \"location\": \"Logs\/\"\r\n}", - "stop": "^C" + "startup": "{\r\n \"done\": \"Full Startup:\"\r\n}", + "logs": "{}", + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id ffound here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# EXTRA_FLAGS - when a server has extra glas for things like beta installs or updates.\r\n#\r\n##\r\n\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -36,7 +37,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|alpha_dash|between:1,100" + "rules": "nullable|alpha_dash|between:1,100", + "field_type": "text" }, { "name": "Admin Password", @@ -45,7 +47,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|alpha_dash|between:1,100" + "rules": "nullable|alpha_dash|between:1,100", + "field_type": "text" }, { "name": "Maximum Players", @@ -54,7 +57,8 @@ "default_value": "10", "user_viewable": true, "user_editable": false, - "rules": "required|numeric|digits_between:1,4" + "rules": "required|numeric|digits_between:1,4", + "field_type": "text" }, { "name": "Query Port", @@ -63,7 +67,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|numeric|digits_between:1,5" + "rules": "required|numeric|digits_between:1,5", + "field_type": "text" }, { "name": "RCON Port", @@ -72,7 +77,8 @@ "default_value": "", "user_viewable": true, "user_editable": false, - "rules": "required|numeric|digits_between:1,5" + "rules": "required|numeric|digits_between:1,5", + "field_type": "text" }, { "name": "Cube Port", @@ -81,7 +87,8 @@ "default_value": "", "user_viewable": true, "user_editable": false, - "rules": "required|numeric|digits_between:1,5" + "rules": "required|numeric|digits_between:1,5", + "field_type": "text" }, { "name": "App ID", @@ -90,7 +97,8 @@ "default_value": "824360", "user_viewable": false, "user_editable": false, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "WINDOWS_INSTALL", @@ -99,7 +107,8 @@ "default_value": "1", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Server Name", @@ -108,7 +117,58 @@ "default_value": "PteroPixARKServer", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:30" + "rules": "required|string|max:30", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "XVFB", + "description": "XVFB", + "env_variable": "XVFB", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2019 dotnet6", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" } ] -} +} \ No newline at end of file From c85a141eabf16e9d656cc1edd2a74b0b10a87dcf Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 13 Aug 2023 10:45:58 +0200 Subject: [PATCH 164/251] Generic nodejs: Add typescript support --- generic/nodejs/egg-node-js-generic.json | 30 ++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index fab9c874..6f5ecec3 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,32 +4,32 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-19T17:43:09+02:00", + "exported_at": "2023-08-13T10:45:06+02:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:nodejs_19": "ghcr.io\/parkervcp\/yolks:nodejs_19", - "ghcr.io\/parkervcp\/yolks:nodejs_18": "ghcr.io\/parkervcp\/yolks:nodejs_18", - "ghcr.io\/parkervcp\/yolks:nodejs_17": "ghcr.io\/parkervcp\/yolks:nodejs_17", - "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16", - "ghcr.io\/parkervcp\/yolks:nodejs_15": "ghcr.io\/parkervcp\/yolks:nodejs_15", - "ghcr.io\/parkervcp\/yolks:nodejs_14": "ghcr.io\/parkervcp\/yolks:nodejs_14", - "ghcr.io\/parkervcp\/yolks:nodejs_12": "ghcr.io\/parkervcp\/yolks:nodejs_12" + "Nodejs 20": "ghcr.io\/parkervcp\/yolks:nodejs_20", + "Nodejs 19": "ghcr.io\/parkervcp\/yolks:nodejs_19", + "Nodejs 18": "ghcr.io\/parkervcp\/yolks:nodejs_18", + "Nodejs 17": "ghcr.io\/parkervcp\/yolks:nodejs_17", + "Nodejs 16": "ghcr.io\/parkervcp\/yolks:nodejs_16", + "Nodejs 14": "ghcr.io\/parkervcp\/yolks:nodejs_14", + "Nodejs 12": "ghcr.io\/parkervcp\/yolks:nodejs_12" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}}", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == *.js ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\"; else \/usr\/local\/bin\/ts-node \"${MAIN_FILE}\"; fi", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"change this part\"\r\n}", + "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", "logs": "{}", "stop": "^^C" }, "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\necho -e \"updating npm. please wait...\"\r\nnpm install npm@latest -g\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0", - "container": "node:14-buster-slim", + "container": "node:14-bullseye-slim", "entrypoint": "bash" } }, @@ -75,9 +75,9 @@ "field_type": "text" }, { - "name": "JS file", - "description": "The file that starts the app", - "env_variable": "JS_FILE", + "name": "Main file", + "description": "The file that starts the app.\r\nCan be .js and .ts", + "env_variable": "MAIN_FILE", "default_value": "index.js", "user_viewable": true, "user_editable": true, @@ -125,4 +125,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 295e769a05a2ce4de21305d87b4c24b05091da54 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 13 Aug 2023 19:34:23 +0200 Subject: [PATCH 165/251] Generic nodejs: change installer image to nodejs 18 --- generic/nodejs/egg-node-js-generic.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index 6f5ecec3..ae495ddb 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-13T10:45:06+02:00", + "exported_at": "2023-08-13T19:33:59+02:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -29,7 +29,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\necho -e \"updating npm. please wait...\"\r\nnpm install npm@latest -g\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0", - "container": "node:14-bullseye-slim", + "container": "node:18-bullseye-slim", "entrypoint": "bash" } }, From 90d0642ed5c5623331ed8d004350d529a3d0c7f9 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 13 Aug 2023 19:49:51 +0200 Subject: [PATCH 166/251] Update egg-mohist.json --- .../minecraft/java/mohist/egg-mohist.json | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/game_eggs/minecraft/java/mohist/egg-mohist.json b/game_eggs/minecraft/java/mohist/egg-mohist.json index 3ffe1a49..d66da2c0 100644 --- a/game_eggs/minecraft/java/mohist/egg-mohist.json +++ b/game_eggs/minecraft/java/mohist/egg-mohist.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-05-17T23:20:29+01:00", + "exported_at": "2023-08-13T19:49:14+02:00", "name": "Mohist", "author": "alex.chang-lam@protonmail.com", "description": "Spigot fork with performance optimizations.", @@ -14,24 +14,24 @@ "pid_limit" ], "docker_images": { - "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", - "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", - "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", "Java 17": "ghcr.io\/pterodactyl\/yolks:java_17", + "Java 16": "ghcr.io\/pterodactyl\/yolks:java_16", + "Java 11": "ghcr.io\/pterodactyl\/yolks:java_11", + "Java 8": "ghcr.io\/pterodactyl\/yolks:java_8", "Java 18": "ghcr.io\/pterodactyl\/yolks:java_18" }, "file_denylist": [], - "startup": "java -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} pause", + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", "config": { "files": "{\r\n \"server.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"server-ip\": \"0.0.0.0\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", "logs": "{}", "stop": "stop" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Mohist Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y curl\r\n\r\n#Go into main direction\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nif [ ! -z ${BUILD_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_VERSION}\/download\r\nelse\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_TYPE}\/download\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\necho -e \"Downloading build version ${BUILD_VERSION}\"\r\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \r\n if curl --output \/dev\/null --silent --fail ${DOWNLOAD_LINK}; then\r\n echo -e \"Download link is valid.\"\r\n else\r\n echo -e \"Link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -s -o server.jar -sS ${DOWNLOAD_LINK}\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/server.jar ]; then\r\n echo \"!!! Error downloading build version ${BUILD_VERSION} !!!\"\r\n exit\r\nfi", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Mohist Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt -y install curl\r\n\r\n#Go into main direction\r\nif [ ! -d \/mnt\/server ]; then\r\n mkdir -p \/mnt\/server\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\nif [ ! -z ${BUILD_VERSION} ]; then\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/${BUILD_VERSION}\/download\r\nelse\r\n DOWNLOAD_LINK=https:\/\/mohistmc.com\/api\/${MC_VERSION}\/latest\/download\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\necho -e \"Downloading build version ${BUILD_VERSION}\"\r\n\r\ncurl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_LINK}\r\n\r\n#Checking if downloaded jars exist\r\nif [ ! -f .\/${SERVER_JARFILE} ]; then\r\n echo \"!!! Error downloading build version ${BUILD_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -43,16 +43,18 @@ "default_value": "server.jar", "user_viewable": true, "user_editable": false, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Minecraft Version", "description": "The version of Minecraft to download.", "env_variable": "MC_VERSION", - "default_value": "1.16.5", + "default_value": "1.19.4", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|string|max:20", + "field_type": "text" }, { "name": "Build Number", @@ -61,16 +63,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:20" - }, - { - "name": "Build Type", - "description": "The type of server jar to download from Mohist.\r\n\r\nValid types are \"recommended\" and \"latest\".", - "env_variable": "BUILD_TYPE", - "default_value": "latest", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|max:20" + "rules": "nullable|string|max:20", + "field_type": "text" } ] } From 4c2b97eacbe59d80952580eb3d85b14151fbdfb5 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 14 Aug 2023 15:15:28 +0200 Subject: [PATCH 167/251] Update sinusbot. --- bots/discord/sinusbot/egg-sinusbot.json | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/bots/discord/sinusbot/egg-sinusbot.json b/bots/discord/sinusbot/egg-sinusbot.json index 00e5f239..7ddb20f3 100644 --- a/bots/discord/sinusbot/egg-sinusbot.json +++ b/bots/discord/sinusbot/egg-sinusbot.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-11-04T12:46:17+01:00", + "exported_at": "2023-08-14T15:15:05+02:00", "name": "Sinusbot", "author": "support@pterodactyl.io", "description": "Musicbot for Discord and Teamspeak.", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\n\r\nif [ \"${PRE_RELEASE}\" == \"1\" ]; then\r\necho \"pre\"\r\nDOWNLOAD_URL=$(curl -sSL https:\/\/forum.sinusbot.com\/threads\/upcoming-changes.8659\/ | grep -Eo \"(http|https):\/\/[a-zA-Z0-9.\/?=_-]*\" | sort -u | grep pre\/)\r\nwget -qO - ${DOWNLOAD_URL} | tar xj \r\nelse\r\necho \"release\"\r\nwget -qO - https:\/\/www.sinusbot.com\/dl\/sinusbot.current.tar.bz2 | tar xj\r\nfi\r\n\r\n#Download Latest TeamSpeak Client\r\nTS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.version')\r\nTS_DL_LINK=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n.\/TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64\/xcbglintegrations\/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"\/home\/container\/TeamSpeak3-Client-linux_amd64\/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"\/home\/container\/youtube-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n# Sinusbot Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt -y update\r\napt -y --no-install-recommends install ca-certificates bzip2 wget tar curl jq\r\napt -q clean all\r\n\r\n#Create needed directories\r\nmkdir -p \/mnt\/server\/TeamSpeak3-Client-linux_amd64\/plugins\r\nmkdir \/mnt\/server\/youtube-dlp\r\n\r\ncd \/mnt\/server\r\n\r\n#Download Sinusbot\r\nwget -qO - https:\/\/www.sinusbot.com\/dl\/sinusbot.current.tar.bz2 | tar xj\r\n\r\n\r\n#Download Latest TeamSpeak Client\r\n#TS_VERSION=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.version')\r\n#TS_DL_LINK=$(curl https:\/\/teamspeak.com\/versions\/client.json | jq -r '.linux.x86_64.mirrors.\"teamspeak.com\"')\r\n\r\n# Sinusbot is not yet updated...\r\nTS_VERSION=3.5.6\r\nTS_DL_LINK=https:\/\/files.teamspeak-services.com\/releases\/client\/3.5.6\/TeamSpeak3-Client-linux_amd64-3.5.6.run\r\n\r\necho -e \"downloading teamspeak version ${TS_VERSION}\"\r\necho -e \"running 'wget ${TS_DL_LINK}'\"\r\n\r\nwget ${TS_DL_LINK}\r\n\r\n# Install TeamSpeak Client\r\nchmod 0755 TeamSpeak3-Client-linux_amd64*.run\r\n.\/TeamSpeak3-Client-linux_amd64*.run --tar xfv -C TeamSpeak3-Client-linux_amd64\r\n\r\n## Cleaning up \r\n\r\nrm TeamSpeak3-Client-linux_amd64*.run\r\n# Remove glx-integration lib\r\nrm TeamSpeak3-Client-linux_amd64\/xcbglintegrations\/libqxcb-glx-integration.so\r\n\r\n#Install Sinusbot\r\nchmod +x sinusbot\r\ncp config.ini.dist config.ini\r\nsed -i \"s|^TS3Path.*|TS3Path = \\\"\/home\/container\/TeamSpeak3-Client-linux_amd64\/ts3client_linux_amd64\\\"|g\" config.ini\r\necho 'YoutubeDLPath = \"\/home\/container\/youtube-dlp\/youtube-dlp\"' >> config.ini\r\n\r\n#Install Sinusbot plugin\r\ncp plugin\/libsoundbot_plugin.so TeamSpeak3-Client-linux_amd64\/plugins\r\n\r\n#Download youtube-dlp\r\ncd \/mnt\/server\/youtube-dlp\r\nwget https:\/\/github.com\/yt-dlp\/yt-dlp\/releases\/latest\/download\/yt-dlp -O youtube-dlp\r\nchmod a+rx youtube-dlp\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "debian:bullseye-slim", "entrypoint": "bash" } @@ -37,16 +37,6 @@ "user_editable": true, "rules": "required|string|max:20", "field_type": "text" - }, - { - "name": "Pre release", - "description": "Download the pre-release version?", - "env_variable": "PRE_RELEASE", - "default_value": "0", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean", - "field_type": "text" } ] } From a2f29cd3b73263dca35cdcfee460646031a1f44a Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 17 Aug 2023 18:58:24 +0200 Subject: [PATCH 168/251] Update: Conan Exiles --- .../steamcmd_servers/conan_exiles/README.md | 15 +++- .../conan_exiles/egg-conan-exiles.json | 80 ++++++++++++------- 2 files changed, 62 insertions(+), 33 deletions(-) diff --git a/game_eggs/steamcmd_servers/conan_exiles/README.md b/game_eggs/steamcmd_servers/conan_exiles/README.md index d0236fee..10ab080f 100644 --- a/game_eggs/steamcmd_servers/conan_exiles/README.md +++ b/game_eggs/steamcmd_servers/conan_exiles/README.md @@ -14,8 +14,17 @@ Ports required to run the server in a table format. | Port | default | |---------|---------| -| Game | 7777 | -| UDP Query | 7778 | -| Steam Query | 27015 | +| Game | 7777 | +| Game +1 | 7778 | +| UDP Server query| 27015 | +| RCON| 25575 | + + +## Mods + +If you want mods download you have to allocated 1 extra port and manualy set Engine.ini. + +See: [Here](https://www.conanexiles.com/dedicated-servers/) + ## More information can be found [here](https://forums.funcom.com/t/conan-exiles-dedicated-server-app-latest-version-1-0-21/21699) diff --git a/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json b/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json index 3b043f51..84fa01b2 100644 --- a/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json +++ b/game_eggs/steamcmd_servers/conan_exiles/egg-conan-exiles.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-23T13:08:22+02:00", + "exported_at": "2023-08-17T16:55:04+02:00", "name": "Conan Exiles", "author": "brycea@terrahost.cloud", "description": "Conan Exiles is an open-world survival game set in the brutal lands of Conan the Barbarian. Survive in a savage world, build your kingdom, and dominate your enemies in brutal combat and epic warfare.", @@ -12,15 +12,15 @@ "steam_disk_space" ], "docker_images": { - "Wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": "export WINEDEBUG=-all; xvfb-run --auto-servernum wine \/home\/container\/ConanSandboxServer.exe ConanSandbox?listen?PVPEnabled={{PVP}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}} -ServerName=\"{{SRV_NAME}}\" -ServerPassword={{SRV_PW}} -console -log", + "startup": "xvfb-run --auto-servernum wine \/home\/container\/ConanSandbox\/Binaries\/Win64\/ConanSandboxServer-Win64-Shipping.exe -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -RconPort={{RCON_PORT}} -ServerName=\"{{SRV_NAME}}\" -ServerPassword=\"{{SRV_PW}}\" -console -log", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Started SourceServerQueries\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { @@ -31,33 +31,13 @@ }, "variables": [ { - "name": "Game ID", + "name": "App id", "description": "The ID corresponding to the game to download.", "env_variable": "SRCDS_APPID", "default_value": "443030", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:7", - "field_type": "text" - }, - { - "name": "XVFB Enable", - "description": "MUST BE 1", - "env_variable": "XVFB", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "required|numeric|min:0|max:1", - "field_type": "text" - }, - { - "name": "Windows install variable", - "description": "Required for windows applications to install with steam.\r\n\r\n1 to enable auto-updates", - "env_variable": "WINDOWS_INSTALL", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "required|boolean", + "rules": "required|string|in:443030", "field_type": "text" }, { @@ -101,14 +81,54 @@ "field_type": "text" }, { - "name": "PvP Enabled", + "name": "WINEDEBUG", "description": "", - "env_variable": "PVP", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2013 vcrun2015 corefonts", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Windows", + "description": "", + "env_variable": "WINDOWS_INSTALL", "default_value": "1", - "user_viewable": true, - "user_editable": true, + "user_viewable": false, + "user_editable": false, "rules": "required|boolean", "field_type": "text" + }, + { + "name": "Rcon port", + "description": "Remote administrative access", + "env_variable": "RCON_PORT", + "default_value": "25575", + "user_viewable": true, + "user_editable": false, + "rules": "required|numeric", + "field_type": "text" } ] } \ No newline at end of file From 78f4e8f36b63559c8ad0ed1b7268106c433e3178 Mon Sep 17 00:00:00 2001 From: Loki <59907407+Loki-101@users.noreply.github.com> Date: Thu, 17 Aug 2023 18:38:17 -0700 Subject: [PATCH 169/251] Fix error in startup command Changed ``if [[ "${MAIN_FILE}" == *.js ]]`` To ``if [[ "${MAIN_FILE}" == "*.js" ]]`` The *.js without quotes compared MAIN_FILE to all files in the current directory that end with .js, resulting in errors like: ```bash :/home/container$ if [[ -d .git ]] && [[ ${AUTO_UPDATE} == "1" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then /usr/local/bin/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then /usr/local/bin/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f /home/container/package.json ]; then /usr/local/bin/npm install; fi; if [[ "${MAIN_FILE}" == start.js test.js ]]; then /usr/local/bin/node "/home/container/${MAIN_FILE}"; else /usr/local/bin/ts-node "${MAIN_FILE}"; fi /entrypoint.sh: eval: line 16: syntax error in conditional expression /entrypoint.sh: eval: line 16: syntax error near `test.js' /entrypoint.sh: eval: line 16: `if [[ -d .git ]] && [[ ${AUTO_UPDATE} == "1" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then /usr/local/bin/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then /usr/local/bin/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f /home/container/package.json ]; then /usr/local/bin/npm install; fi; if [[ "${MAIN_FILE}" == start.js test.js ]]; then /usr/local/bin/node "/home/container/${MAIN_FILE}"; else /usr/local/bin/ts-node "${MAIN_FILE}"; fi' ``` because it's interpreted as ``if [[ "${MAIN_FILE}" == start.js test.js ]];`` --- generic/nodejs/egg-node-js-generic.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index ae495ddb..8cc30526 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-13T19:33:59+02:00", + "exported_at": "2023-08-17T18:34:59-07:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -19,7 +19,7 @@ "Nodejs 12": "ghcr.io\/parkervcp\/yolks:nodejs_12" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == *.js ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\"; else \/usr\/local\/bin\/ts-node \"${MAIN_FILE}\"; fi", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\"; else \/usr\/local\/bin\/ts-node \"${MAIN_FILE}\"; fi", "config": { "files": "{}", "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", @@ -74,16 +74,6 @@ "rules": "required|boolean", "field_type": "text" }, - { - "name": "Main file", - "description": "The file that starts the app.\r\nCan be .js and .ts", - "env_variable": "MAIN_FILE", - "default_value": "index.js", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, { "name": "Additional Node packages", "description": "Install additional node packages.\r\n\r\nUse spaces to separate.", @@ -123,6 +113,16 @@ "user_editable": true, "rules": "nullable|string", "field_type": "text" + }, + { + "name": "Main file", + "description": "The file that starts the app.\r\nCan be .js and .ts", + "env_variable": "MAIN_FILE", + "default_value": "index.js", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" } ] } From 4dc87d6044f0eda9957ac76c7e908361de4bd056 Mon Sep 17 00:00:00 2001 From: diedyesterday <81169193+diedyesterdaywashere@users.noreply.github.com> Date: Fri, 18 Aug 2023 18:05:58 +0300 Subject: [PATCH 170/251] Update the egg to run dynamica-v2 (#2435) * Update the egg to run dynamica-v2 --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- bots/discord/dynamica/README.md | 7 ++- bots/discord/dynamica/egg-dynamica.json | 77 +++++++++++++++++++------ 2 files changed, 65 insertions(+), 19 deletions(-) diff --git a/bots/discord/dynamica/README.md b/bots/discord/dynamica/README.md index ef2e45e4..377918ac 100644 --- a/bots/discord/dynamica/README.md +++ b/bots/discord/dynamica/README.md @@ -1,5 +1,8 @@ # Dynamica -### Their [Github](https://github.com/dynamicabot/dynamica) +## Their [Github](https://github.com/dynamicabot/dynamica-v2) -This is a discord bot for dynamically managing voice channels. +An easy-to-use dynamic voice channel bot. + +## Port +You will manual have to change the web port in the src/main.ts on line 24. \ No newline at end of file diff --git a/bots/discord/dynamica/egg-dynamica.json b/bots/discord/dynamica/egg-dynamica.json index 185beb40..063b1bdb 100644 --- a/bots/discord/dynamica/egg-dynamica.json +++ b/bots/discord/dynamica/egg-dynamica.json @@ -1,29 +1,29 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-12-13T10:34:52+11:00", + "exported_at": "2023-08-18T17:01:43+02:00", "name": "Dynamica", "author": "sebastian.pietschner@gmail.com", - "description": "The dynamica discord bot", + "description": "An easy-to-use dynamic voice channel bot.", "features": null, - "images": [ - "ghcr.io\/parkervcp\/yolks:nodejs_16" - ], + "docker_images": { + "Nodejs 18": "ghcr.io\/parkervcp\/yolks:nodejs_18" + }, "file_denylist": [], - "startup": "yarn deploy && yarn prisma migrate deploy && yarn start", + "startup": "npx prisma migrate deploy && yarn start", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"Ready! Logged in as \"\r\n}", + "startup": "{\r\n \"done\": \"Bot logged in as \"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "apt-get update\r\napt-get install openssl git -y -qq\r\ncd \/mnt\/server\r\nif [[ -d .git\/ ]]; then\r\n git pull\r\nelse\r\n git clone https:\/\/github.com\/dynamicabot\/dynamica.git .;\r\nfi;\r\nyarn install --frozen-lockfile", - "container": "node:lts-buster-slim", + "script": "#!\/bin\/bash\r\n\r\napt update\r\napt -y install tar curl jq git\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nGITHUB_PACKAGE=\"DynamicaBot\/Dynamica-V2\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\ncurl -sSL -o dynamica.tar.gz ${DOWNLOAD_URL}\r\ntar xvf dynamica.tar.gz --strip-components=1\r\nrm dynamica.tar.gz\r\n\r\n#curl -sSL -o tsconfig.json https:\/\/pteropaste.com\/xqhjja443pbm\r\n\r\nyarn add tsup --dev\r\nyarn install --frozen-lockfile\r\n\r\nyarn generate\r\nyarn build\r\n\r\nrm -rf .github\/ .vscode\/ Dockerfile partial.Dockerfile entrypoint.sh dynamica-egg.json\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "node:18-bullseye-slim", "entrypoint": "bash" } }, @@ -35,7 +35,8 @@ "default_value": "file:\/home\/container\/dynamica\/db.sqlite", "user_viewable": true, "user_editable": false, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Token", @@ -44,16 +45,58 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { - "name": "Client ID", - "description": "The client ID of your discord bot.", - "env_variable": "CLIENT_ID", + "name": "Guild ID", + "description": "Add only if using the bot in a single guild.", + "env_variable": "GUILD_ID", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|size:18" + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "Sentry DSN", + "description": "The DSN for Sentry.", + "env_variable": "SENTRY_DSN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "MQTT URL", + "description": "The URL for the MQTT broker.", + "env_variable": "MQTT_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "MQTT Username", + "description": "The username for the MQTT broker.", + "env_variable": "MQTT_USER", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "MQTT Password", + "description": "The password for the MQTT broker.", + "env_variable": "MQTT_PASS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" } ] } \ No newline at end of file From 3a0712b8f90355894dad2d1f7942379cfa51c0fe Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Fri, 18 Aug 2023 17:14:40 +0200 Subject: [PATCH 171/251] Generic Nodejs: allow for extra node args --- generic/nodejs/egg-node-js-generic.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index 8cc30526..0b1dc2bb 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-17T18:34:59-07:00", + "exported_at": "2023-08-18T17:13:50+02:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -19,7 +19,7 @@ "Nodejs 12": "ghcr.io\/parkervcp\/yolks:nodejs_12" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\"; else \/usr\/local\/bin\/ts-node \"${MAIN_FILE}\"; fi", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; else \/usr\/local\/bin\/ts-node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; fi", "config": { "files": "{}", "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", @@ -121,7 +121,17 @@ "default_value": "index.js", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|max:16", + "field_type": "text" + }, + { + "name": "Additional Arguments.", + "description": "Any extra arguments for nodejs or ts-node", + "env_variable": "NODE_ARGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", "field_type": "text" } ] From f082b76d974eeaccf21de9a640963ab6bd3d037a Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Tue, 22 Aug 2023 19:14:50 +0200 Subject: [PATCH 172/251] Fix muse (#2427) * Fix muse * Update README.md * Remove wrapper --- bots/discord/muse/README.md | 8 ++++++++ bots/discord/muse/egg-muse.json | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bots/discord/muse/README.md b/bots/discord/muse/README.md index 4c84437f..0ffa88ed 100644 --- a/bots/discord/muse/README.md +++ b/bots/discord/muse/README.md @@ -21,6 +21,14 @@
💻 💡 + + +
QuintenQVD0 +
+
+ 💻 + 💡 + diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index 0517e7d6..4aea39a8 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-08T17:25:35+00:00", + "exported_at": "2023-08-22T18:48:00+02:00", "name": "Muse", "author": "hello@apollo.moe", "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --frozen-lockfile\r\nsed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", + "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", "container": "node:lts-bullseye-slim", "entrypoint": "bash" } From 633b084c6054ca017ad57c89ebec20648395c222 Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 00:53:51 +0100 Subject: [PATCH 173/251] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e9e8a74c..84756656 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [java](/generic/java/) * [lua](/generic/lua/) * [nodejs](/generic/nodejs/) +* [bun](/generic/bun/) * [nodemon](/generic/nodemon/) * [python](/generic/python/) * [rust](/generic/rust/) From 3d8d7aacfcb259f82892f18ec4b40cf5752bd7b4 Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 00:57:12 +0100 Subject: [PATCH 174/251] Create egg-bun.json --- generic/bun/egg-bun.json | 122 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 generic/bun/egg-bun.json diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json new file mode 100644 index 00000000..96a90df0 --- /dev/null +++ b/generic/bun/egg-bun.json @@ -0,0 +1,122 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-08-27T01:47:23+02:00", + "name": "Bun", + "author": "mratox@protonmail.com", + "description": "Bun is an incredibly fast JavaScript runtime, transpiler bundler, and npm package manager all-in-one.", + "features": null, + "docker_images": { + "ghcr.io\/mratox\/images:bun": "ghcr.io\/mratox\/images:bun" + }, + "file_denylist": [], + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; {{STARTUP_COMMAND}};", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Bun App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\necho -e \"assuming user knows what they are doing have a good day.\"\r\nexit 0\r\nfi\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\nGIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\nif [ -z \"${GIT_USERNAME}\" ] && [ -z \"${GIT_ACCESS_TOKEN}\" ]; then\r\necho -e \"using anon api call.\"\r\nelse\r\nGIT_ADDRESS=\"https:\/\/${USERNAME}:${GIT_ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\necho -e \"\/mnt\/server directory is not empty.\"\r\nif [ -d .git ]; then\r\necho -e \".git directory exists.\"\r\nif [ -f .git\/config ]; then\r\necho -e \"loading information from git config.\"\r\nORIGIN=$(git config --get remote.origin.url)\r\nelse\r\necho -e \"files found with no git config.\"\r\necho -e \"closing out without touching things to not break anything.\"\r\nexit 10\r\nfi\r\nfi\r\nif [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\necho \"pulling latest files from the git repository.\"\r\ngit pull\r\nfi\r\nelse\r\necho -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\nif [ -z ${GIT_BRANCH} ]; then\r\necho -e \"cloning default branch\"\r\ngit clone ${GIT_ADDRESS} .\r\nelse\r\necho -e \"cloning ${GIT_BRANCH}'\"\r\ngit clone --single-branch --branch ${GIT_BRANCH} ${GIT_ADDRESS} .\r\nfi\r\nfi\r\necho \"Installing bun packages\"\r\nif [[ ! -z ${BUN_PACKAGES} ]]; then\r\nbun install ${BUN_PACKAGES}\r\nfi\r\nif [ -f \/mnt\/server\/package.json ]; then\r\nbun install --production\r\nfi\r\necho -e \"install complete\"\r\nexit 0", + "container": "debian:buster-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Git Repository Address", + "description": "The Git repository address to clone .", + "env_variable": "GIT_ADDRESS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Branch", + "description": "The Git branch to install.", + "env_variable": "GIT_BRANCH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "User Uploaded Files", + "description": "Skip all the install stuff if you are letting a user upload files.\r\n0 = false (default)\r\n1 = true", + "env_variable": "USER_UPLOAD", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "Pull the latest files on startup when using a Git Repository.\r\n0 = false (default)\r\n1 = true", + "env_variable": "AUTO_UPDATE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Git Username", + "description": "Git username for authentication.", + "env_variable": "GIT_USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Access Token", + "description": "Git access token for authentication.", + "env_variable": "GIT_ACCESS_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Startup Command", + "description": "The command used to start the server.", + "env_variable": "STARTUP_COMMAND", + "default_value": "bun run index.js", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Additional Bun Packages", + "description": "Install additional bun packages.\r\nUse spaces to separate", + "env_variable": "BUN_PACKAGES", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Uninstall Bun Packages", + "description": "Uninstall bun packages.\r\nUse spaces to separate", + "env_variable": "RMBUN_PACKAGES", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} From e725261626c137d07eb2e9f7a5efdeb6ab59e63c Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 00:59:29 +0100 Subject: [PATCH 175/251] Create README.md --- generic/bun/README.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 generic/bun/README.md diff --git a/generic/bun/README.md b/generic/bun/README.md new file mode 100644 index 00000000..6f2b7adc --- /dev/null +++ b/generic/bun/README.md @@ -0,0 +1,24 @@ +# Bun - JavaScript & TypeScript Generic + +## From their [site](https://bun.sh/) + +This egg is designed to run any generic Bun application, allowing users to pull their own Bun source code from a Git repository. + +There is an option to allow a user to upload their own files to run a server. + +The startup configs and commands may need changing to actually function properly. + +## Configuration + +The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running. +![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png) + +You can use arrays to have multiple different values when different bots are being used + +```json +{ + "done":[ + "change this text 1", + "change this text 2" + ] +} From 9c31dec600813a554abb8c6d9c8c4712166015d9 Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 01:01:00 +0100 Subject: [PATCH 176/251] Update README.md --- generic/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/generic/README.md b/generic/README.md index f18701ea..a549b2d4 100644 --- a/generic/README.md +++ b/generic/README.md @@ -35,6 +35,11 @@ A generic Lua (Luvit) language egg [nodejs](https://nodejs.org) A generic Node.JS egg +### [Bun](bun) + +[bun](https://bun.sh) +A generic Bun egg + ### [nodemon](nodemon) [nodemon](https://nodemon.io/) From 66d0af68d80d46958b5cc43de0fb3be517aaaa30 Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 01:03:32 +0100 Subject: [PATCH 177/251] Update egg-bun.json --- generic/bun/egg-bun.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json index 96a90df0..9d932c32 100644 --- a/generic/bun/egg-bun.json +++ b/generic/bun/egg-bun.json @@ -16,7 +16,7 @@ "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; {{STARTUP_COMMAND}};", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"\"\r\n}", + "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", "logs": "{}", "stop": "^^C" }, From 640ff589f1a4d7379fb3adf00ab0f7567775b924 Mon Sep 17 00:00:00 2001 From: mratox <143298194+mratox@users.noreply.github.com> Date: Sun, 27 Aug 2023 01:50:13 +0100 Subject: [PATCH 178/251] Update egg-bun.json --- generic/bun/egg-bun.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json index 9d932c32..095b4695 100644 --- a/generic/bun/egg-bun.json +++ b/generic/bun/egg-bun.json @@ -10,7 +10,7 @@ "description": "Bun is an incredibly fast JavaScript runtime, transpiler bundler, and npm package manager all-in-one.", "features": null, "docker_images": { - "ghcr.io\/mratox\/images:bun": "ghcr.io\/mratox\/images:bun" + "ghcr.io\/parkervcp\/yolks:bun": "ghcr.io\/parkervcp\/yolks:bun" }, "file_denylist": [], "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; {{STARTUP_COMMAND}};", From abe8ed59311e07a28ebf03b3f6e41f9eb8237d99 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sun, 27 Aug 2023 11:48:11 +0200 Subject: [PATCH 179/251] cleanup --- generic/bun/egg-bun.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json index 095b4695..9ce16e7c 100644 --- a/generic/bun/egg-bun.json +++ b/generic/bun/egg-bun.json @@ -4,16 +4,17 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-27T01:47:23+02:00", + "exported_at": "2023-08-27T11:46:37+02:00", "name": "Bun", "author": "mratox@protonmail.com", "description": "Bun is an incredibly fast JavaScript runtime, transpiler bundler, and npm package manager all-in-one.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:bun": "ghcr.io\/parkervcp\/yolks:bun" + "Bun Latest": "ghcr.io\/parkervcp\/yolks:bun_latest", + "Bun Canary": "ghcr.io\/parkervcp\/yolks:bun_canary" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; {{STARTUP_COMMAND}};", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${BUN_PACKAGES} ]]; then bun install ${BUN_PACKAGES}; fi; if [[ ! -z ${RMBUN_PACKAGES} ]]; then bun remove ${RMBUN_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then bun install; fi; bun run {{MAIN_FILE}}", "config": { "files": "{}", "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", @@ -22,8 +23,8 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Bun App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\necho -e \"assuming user knows what they are doing have a good day.\"\r\nexit 0\r\nfi\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\nGIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\nif [ -z \"${GIT_USERNAME}\" ] && [ -z \"${GIT_ACCESS_TOKEN}\" ]; then\r\necho -e \"using anon api call.\"\r\nelse\r\nGIT_ADDRESS=\"https:\/\/${USERNAME}:${GIT_ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\necho -e \"\/mnt\/server directory is not empty.\"\r\nif [ -d .git ]; then\r\necho -e \".git directory exists.\"\r\nif [ -f .git\/config ]; then\r\necho -e \"loading information from git config.\"\r\nORIGIN=$(git config --get remote.origin.url)\r\nelse\r\necho -e \"files found with no git config.\"\r\necho -e \"closing out without touching things to not break anything.\"\r\nexit 10\r\nfi\r\nfi\r\nif [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\necho \"pulling latest files from the git repository.\"\r\ngit pull\r\nfi\r\nelse\r\necho -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\nif [ -z ${GIT_BRANCH} ]; then\r\necho -e \"cloning default branch\"\r\ngit clone ${GIT_ADDRESS} .\r\nelse\r\necho -e \"cloning ${GIT_BRANCH}'\"\r\ngit clone --single-branch --branch ${GIT_BRANCH} ${GIT_ADDRESS} .\r\nfi\r\nfi\r\necho \"Installing bun packages\"\r\nif [[ ! -z ${BUN_PACKAGES} ]]; then\r\nbun install ${BUN_PACKAGES}\r\nfi\r\nif [ -f \/mnt\/server\/package.json ]; then\r\nbun install --production\r\nfi\r\necho -e \"install complete\"\r\nexit 0", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Bun App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js bot repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n\r\necho \"Installing bun packages\"\r\nif [[ ! -z ${BUN_PACKAGES} ]]; then\r\n bun install ${BUN_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n bun install --production\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", "entrypoint": "bash" } }, @@ -89,10 +90,10 @@ "field_type": "text" }, { - "name": "Startup Command", - "description": "The command used to start the server.", - "env_variable": "STARTUP_COMMAND", - "default_value": "bun run index.js", + "name": "Main file", + "description": "The main file passed to the bun run command", + "env_variable": "MAIN_FILE", + "default_value": "index.js", "user_viewable": true, "user_editable": true, "rules": "required|string", @@ -119,4 +120,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From ad6bbb5602689a900337105645e2f377a2fe21e1 Mon Sep 17 00:00:00 2001 From: Smith Date: Sun, 27 Aug 2023 21:43:00 +0200 Subject: [PATCH 180/251] adds bots/discord/game-server-watcher --- README.md | 1 + bots/discord/README.md | 5 + bots/discord/game-server-watcher/README.md | 18 +++ .../egg-game-server-watcher.json | 114 ++++++++++++++++++ 4 files changed, 138 insertions(+) create mode 100644 bots/discord/game-server-watcher/README.md create mode 100644 bots/discord/game-server-watcher/egg-game-server-watcher.json diff --git a/README.md b/README.md index 84756656..a0dfc883 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [CorpBot](/bots/discord/corpbot) Python * [Dynamica](/bots/discord/dynamica) Node JS * [fragbot](/bots/discord/fragbot) Golang +* [Game Server Watcher](/bots/discord/game-server-watcher) Node JS * [JMusicBot](/bots/discord/jmusicbot) Java * [Muse](/bots/discord/muse) Node JS * [parkertron](/bots/discord/parkertron) Golang diff --git a/bots/discord/README.md b/bots/discord/README.md index 1793f497..070b5148 100644 --- a/bots/discord/README.md +++ b/bots/discord/README.md @@ -22,6 +22,11 @@ A very clumsy python bot for discord [fragforce/fragbot](https://github.com/fragforce/fragbot) The bot that runs as the fragforce `@Fragbot` offering looking-for-group services for now +### [Game Server Watcher](game-server-watcher) + +[a-sync/game-server-watcher](https://github.com/a-sync/game-server-watcher) +A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎 + ### [JMusicBot](jmusicbot) [jagrosh/MusicBot](https://github.com/jagrosh/MusicBot) diff --git a/bots/discord/game-server-watcher/README.md b/bots/discord/game-server-watcher/README.md new file mode 100644 index 00000000..7e668c4c --- /dev/null +++ b/bots/discord/game-server-watcher/README.md @@ -0,0 +1,18 @@ +# Game Server Watcher + +## From [Github](https://github.com/a-sync/game-server-watcher#readme) +A simple discord/telegram/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎 + +## Screenshots + + +## Running the bot +Refer to the wiki on how to acquire tokens for: + * [steam](https://github.com/a-sync/game-server-watcher/wiki/Steam-Web-API-key) + * [discord](https://github.com/a-sync/game-server-watcher/wiki/Discord-bot-token) + * [telegram](https://github.com/a-sync/game-server-watcher/wiki/Telegram-bot-token) + * [slack](https://github.com/a-sync/game-server-watcher/wiki/Slack-bot-token) + +## Server Ports +GSW Control Panel requires one port for http traffic. +(It can be any port.) diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json new file mode 100644 index 00000000..d503199f --- /dev/null +++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json @@ -0,0 +1,114 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-08-15T04:20:09+02:00", + "name": "Game Server Watcher", + "author": "a-sync@devs.space", + "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎", + "features": null, + "docker_images": { + "Node.js 20": "ghcr.io\/parkervcp\/yolks:nodejs_20" + }, + "file_denylist": [], + "startup": "env PORT={{SERVER_PORT}} \/usr\/local\/bin\/node \/home\/container\/dist\/server.js", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"starting loop...\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\napt-get update && apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\ngit clone https:\/\/github.com\/a-sync\/game-server-watcher.git . || git pull\r\nnpm install && npm run build\r\nnpm prune --omit=dev", + "container": "node:20-bookworm-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "SECRET", + "description": "Admin secret", + "env_variable": "SECRET", + "default_value": "secret", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:1|max:255" + }, + { + "name": "DATA_PATH", + "description": "Writable folder for data storage", + "env_variable": "DATA_PATH", + "default_value": ".\/data\/", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|min:1|max:255" + }, + { + "name": "REFRESH_TIME_MINUTES", + "description": "Game server info refresh interval in minutes", + "env_variable": "REFRESH_TIME_MINUTES", + "default_value": "2", + "user_viewable": true, + "user_editable": true, + "field_type": "integer", + "rules": "required|integer|min:1" + }, + { + "name": "DISCORD_BOT_TOKEN", + "description": "Discord bot token", + "env_variable": "DISCORD_BOT_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "TELEGRAM_BOT_TOKEN", + "description": "Telegram bot token", + "env_variable": "TELEGRAM_BOT_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "SLACK_BOT_TOKEN", + "description": "Slack bot token", + "env_variable": "SLACK_BOT_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "SLACK_APP_TOKEN", + "description": "Slack app token", + "env_variable": "SLACK_APP_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "STEAM_WEB_API_KEY", + "description": "Steam web API key", + "env_variable": "STEAM_WEB_API_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string" + }, + { + "name": "Debug Mode", + "description": "Enable or disable debug mode.", + "env_variable": "DBG", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|in:0,1" + } + ] +} From d8ceda1715dc3d509370a3346a18fbeee1a90b8b Mon Sep 17 00:00:00 2001 From: FreemoX Date: Sun, 3 Sep 2023 01:29:38 +0200 Subject: [PATCH 181/251] Update egg-phantom-bot.json Removed deprecated Java 11 Added Java 16 (deprecated after version 3.9.0.7) Added Java 19 --- bots/twitch/phantombot/egg-phantom-bot.json | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/bots/twitch/phantombot/egg-phantom-bot.json b/bots/twitch/phantombot/egg-phantom-bot.json index ede55fc3..81f85301 100644 --- a/bots/twitch/phantombot/egg-phantom-bot.json +++ b/bots/twitch/phantombot/egg-phantom-bot.json @@ -4,13 +4,14 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-10-02T18:28:42+02:00", + "exported_at": "2023-09-02T23:24:58+00:00", "name": "PhantomBot", "author": "mail@wuffy.eu", "description": "PhantomBot is an actively developed open source interactive Twitch bot with a vibrant community that provides entertainment and moderation for your channel, allowing you to focus on what matters the most to you - your game and your viewers.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:java_11": "ghcr.io\/parkervcp\/yolks:java_11" + "Java 16 [DEPRECATED]": "ghcr.io\/parkervcp\/yolks:java_16", + "Java 19": "ghcr.io\/parkervcp\/yolks:java_19" }, "file_denylist": [], "startup": "java --add-opens java.base\/java.lang=ALL-UNNAMED -Djava.security.policy=config\/security -Dinteractive -Xms1m -Dfile.encoding=UTF-8 -jar PhantomBot.jar", @@ -30,12 +31,12 @@ "variables": [ { "name": "Version", - "description": "latest = Latest Stable\r\nmaster = latest Github", + "description": "latest = Latest Stable\r\nmaster = latest Github\r\n3.9.0.7 = Latest known working with Java 16", "env_variable": "RELEASE_VERSION", "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:9", + "rules": "required|string|in:latest,master,3.9.0.7", "field_type": "text" }, { @@ -109,4 +110,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 1f6b552f669e6ff7618af1a3d44f57a7819359e0 Mon Sep 17 00:00:00 2001 From: FreemoX Date: Sun, 3 Sep 2023 01:36:07 +0200 Subject: [PATCH 182/251] Update egg-phantom-bot.json --- bots/twitch/phantombot/egg-phantom-bot.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/twitch/phantombot/egg-phantom-bot.json b/bots/twitch/phantombot/egg-phantom-bot.json index 81f85301..5acd461b 100644 --- a/bots/twitch/phantombot/egg-phantom-bot.json +++ b/bots/twitch/phantombot/egg-phantom-bot.json @@ -36,7 +36,7 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|in:latest,master,3.9.0.7", + "rules": "required|string|max:9", "field_type": "text" }, { From 6e17f7f25261a96550aa3fb239a12e69bafd7875 Mon Sep 17 00:00:00 2001 From: Alexander Ballauf Date: Sun, 3 Sep 2023 21:32:02 +0200 Subject: [PATCH 183/251] Update egg-icarus--dedicated (#2458) adjusted wine version from staging to latest to fix server not starting properly --- .../steamcmd_servers/icarus/egg-icarus--dedicated.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json b/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json index da78753b..c6def84a 100644 --- a/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json +++ b/game_eggs/steamcmd_servers/icarus/egg-icarus--dedicated.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-12-10T14:40:39+01:00", + "exported_at": "2023-09-03T21:07:28+02:00", "name": "Icarus-Dedicated", "author": "bolverblitz@ebg.pw", "description": "Icarus is a survival game that with dedicated servers as a public beta", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "Wine Staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "Wine Staging": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], "startup": "wine64 .\/Icarus\/Binaries\/Win64\/IcarusServer-Win64-Shipping.exe -Log -SteamServerName=${SERVER_NAME} -PORT=\"${SERVER_PORT}\" -QueryPort=\"${QUERY_PORT}\"", @@ -121,4 +121,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From ecaf733d7f718b95cdb50470500200a5aa290730 Mon Sep 17 00:00:00 2001 From: Cart <81428538+Cartrigger@users.noreply.github.com> Date: Fri, 8 Sep 2023 01:09:35 -0400 Subject: [PATCH 184/251] Fix Spelling in Astroneer egg --- game_eggs/steamcmd_servers/astroneer/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/astroneer/README.md b/game_eggs/steamcmd_servers/astroneer/README.md index ea3ee017..21857148 100644 --- a/game_eggs/steamcmd_servers/astroneer/README.md +++ b/game_eggs/steamcmd_servers/astroneer/README.md @@ -13,7 +13,7 @@ The following variables are required to prevent the server to crash on startup : Astroneer required at least 700MiB to run. If more than one player will connect, 1GiB seems to be a minimum. -## Minumim Sorage warning +## Minimum Storage warning Astroneer required at least 3GiB. The size may increase with larger save file. @@ -37,4 +37,4 @@ To be able to connect to the server you need to edit Engine.ini (located at %Loc ``` [SystemSettings] net.AllowEncryption=False -``` \ No newline at end of file +``` From 916a81a4e595801d9f701bed6ad4c7fdebc01819 Mon Sep 17 00:00:00 2001 From: Smith Date: Tue, 12 Sep 2023 20:38:17 +0200 Subject: [PATCH 185/251] use the yolks base image for the installer --- bots/discord/game-server-watcher/egg-game-server-watcher.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json index d503199f..3699b492 100644 --- a/bots/discord/game-server-watcher/egg-game-server-watcher.json +++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\napt-get update && apt-get install ca-certificates git -yq --no-install-suggests --no-install-recommends --allow-downgrades --allow-remove-essential --allow-change-held-packages\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\ngit clone https:\/\/github.com\/a-sync\/game-server-watcher.git . || git pull\r\nnpm install && npm run build\r\nnpm prune --omit=dev", - "container": "node:20-bookworm-slim", + "container": "node:20-bullseye-slim", "entrypoint": "bash" } }, From 83fa92a600a2a4a8c84012945903029345f65b2b Mon Sep 17 00:00:00 2001 From: Shinaii Date: Wed, 13 Sep 2023 17:53:08 +0200 Subject: [PATCH 186/251] Update egg-bun.json (#2466) Update Bun: to use the right variable names --- generic/bun/egg-bun.json | 64 ++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/generic/bun/egg-bun.json b/generic/bun/egg-bun.json index 9ce16e7c..97eeaad6 100644 --- a/generic/bun/egg-bun.json +++ b/generic/bun/egg-bun.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-27T11:46:37+02:00", + "exported_at": "2023-09-13T17:51:41+02:00", "name": "Bun", "author": "mratox@protonmail.com", "description": "Bun is an incredibly fast JavaScript runtime, transpiler bundler, and npm package manager all-in-one.", @@ -39,16 +39,6 @@ "rules": "nullable|string", "field_type": "text" }, - { - "name": "Git Branch", - "description": "The Git branch to install.", - "env_variable": "GIT_BRANCH", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, { "name": "User Uploaded Files", "description": "Skip all the install stuff if you are letting a user upload files.\r\n0 = false (default)\r\n1 = true", @@ -69,26 +59,6 @@ "rules": "required|boolean", "field_type": "text" }, - { - "name": "Git Username", - "description": "Git username for authentication.", - "env_variable": "GIT_USERNAME", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Git Access Token", - "description": "Git access token for authentication.", - "env_variable": "GIT_ACCESS_TOKEN", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, { "name": "Main file", "description": "The main file passed to the bun run command", @@ -118,6 +88,36 @@ "user_editable": true, "rules": "nullable|string", "field_type": "text" + }, + { + "name": "Git Branch", + "description": "The Git branch to install.", + "env_variable": "BRANCH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Username", + "description": "Git username for authentication.", + "env_variable": "USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Access Token", + "description": "Git access token for authentication.", + "env_variable": "ACCESS_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" } ] -} \ No newline at end of file +} From d89a95494eb0217ef16a1daea2f0c2c65e19f321 Mon Sep 17 00:00:00 2001 From: Smith Date: Wed, 13 Sep 2023 20:37:52 +0200 Subject: [PATCH 187/251] re-export json --- .../egg-game-server-watcher.json | 66 +++++++++++-------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json index 3699b492..820675ce 100644 --- a/bots/discord/game-server-watcher/egg-game-server-watcher.json +++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json @@ -4,10 +4,10 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-15T04:20:09+02:00", + "exported_at": "2023-09-13T18:34:19+00:00", "name": "Game Server Watcher", "author": "a-sync@devs.space", - "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. 😎", + "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. \ud83d\ude0e", "features": null, "docker_images": { "Node.js 20": "ghcr.io\/parkervcp\/yolks:nodejs_20" @@ -35,7 +35,8 @@ "default_value": "secret", "user_viewable": true, "user_editable": true, - "rules": "required|string|min:1|max:255" + "rules": "required|string|min:1|max:255", + "field_type": "text" }, { "name": "DATA_PATH", @@ -44,7 +45,8 @@ "default_value": ".\/data\/", "user_viewable": true, "user_editable": true, - "rules": "required|string|min:1|max:255" + "rules": "required|string|min:1|max:255", + "field_type": "text" }, { "name": "REFRESH_TIME_MINUTES", @@ -53,8 +55,8 @@ "default_value": "2", "user_viewable": true, "user_editable": true, - "field_type": "integer", - "rules": "required|integer|min:1" + "rules": "required|integer|min:1", + "field_type": "text" }, { "name": "DISCORD_BOT_TOKEN", @@ -63,7 +65,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "TELEGRAM_BOT_TOKEN", @@ -72,25 +75,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "SLACK_BOT_TOKEN", - "description": "Slack bot token", - "env_variable": "SLACK_BOT_TOKEN", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" - }, - { - "name": "SLACK_APP_TOKEN", - "description": "Slack app token", - "env_variable": "SLACK_APP_TOKEN", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "STEAM_WEB_API_KEY", @@ -99,7 +85,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" }, { "name": "Debug Mode", @@ -108,7 +95,28 @@ "default_value": "0", "user_viewable": true, "user_editable": true, - "rules": "required|in:0,1" + "rules": "required|in:0,1", + "field_type": "text" + }, + { + "name": "SLACK_BOT_TOKEN", + "description": "Slack bot token", + "env_variable": "SLACK_BOT_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "SLACK_APP_TOKEN", + "description": "Slack app token", + "env_variable": "SLACK_APP_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" } ] -} +} \ No newline at end of file From d18ea7979f4c6b484db97f5a3a8035e1f4f60e2a Mon Sep 17 00:00:00 2001 From: Chris Cox Date: Sun, 17 Sep 2023 13:38:41 +0100 Subject: [PATCH 188/251] Update README.md Added a sample ignore file that disallows anything that's pulled from the container image and restricts backups to the server's unique files. --- .../steamcmd_servers/7_days_to_die/README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/game_eggs/steamcmd_servers/7_days_to_die/README.md b/game_eggs/steamcmd_servers/7_days_to_die/README.md index 890b3d11..8b48da48 100644 --- a/game_eggs/steamcmd_servers/7_days_to_die/README.md +++ b/game_eggs/steamcmd_servers/7_days_to_die/README.md @@ -12,3 +12,18 @@ Set in a brutally unforgiving post-apocalyptic world overrun by the undead, 7 Da | Game | 26900 - 26902 | | RCON | 8080 - 8081 | | webmap | 8082 | + +## Sample ignore file for backups + +By default the backup includes a lot of files that can be reacquired by pulling the image. Using the following file limits backups to the files that are unique to your server: your config files, logs, saves and generated worlds. + +``` +# Ignore all +* +# Except server config file +!serverconfig.xml +# Except server data dir +!.local/ +# Except logs +!logs/ +``` From 5620a4ad8b96e160db5215b5ee0f49090658848c Mon Sep 17 00:00:00 2001 From: Philip T <2097483+phit@users.noreply.github.com> Date: Wed, 20 Sep 2023 23:31:29 +0200 Subject: [PATCH 189/251] Fix GH-2474 (#2475) * Fix GH-2474 * Update JMusicBot images switch to Java LTS and use the official installer image --- bots/discord/jmusicbot/egg-j-music-bot.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bots/discord/jmusicbot/egg-j-music-bot.json b/bots/discord/jmusicbot/egg-j-music-bot.json index 528dad38..8a640fd6 100644 --- a/bots/discord/jmusicbot/egg-j-music-bot.json +++ b/bots/discord/jmusicbot/egg-j-music-bot.json @@ -4,13 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-29T17:52:45+02:00", + "exported_at": "2023-09-20T21:17:10+02:00", "name": "JMusicBot", "author": "parker@parkervcp.com", "description": "A Discord music bot that's easy to set up and run yourself!", "features": null, "docker_images": { - "ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16" + "ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17" }, "file_denylist": [], "startup": "java -Dnogui=true -jar JMusicBot.jar", @@ -23,7 +23,7 @@ "scripts": { "installation": { "script": "#!\/bin\/bash\r\n\r\napt update\r\napt install -y jq curl\r\n\r\nCONFIG_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/config.txt\"\r\nPLAYLIST_LINK=\"https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/bots\/discord\/jmusicbot\/example_playlist.txt\"\r\n\r\n\r\nif [ -z \"${GITHUB_USER}\" ] && [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\nelse\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\nfi\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/jagrosh\/MusicBot\/releases\")\r\nMATCH=JMusicBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\n## JMusicBot Setup\r\n[ ! -d \/mnt\/server ] && mkdir \/mnt\/server\r\ncd \/mnt\/server\r\necho -e \"\\nInstalling\/Updating JMusicBot...\\n\"\r\n\r\nif [ -f JMusicBot.jar ]; then\r\n echo -e \"Updating JMusicBot.jar to latest version...\"\r\n echo -e '\\t(Old version can be found at \"JMusicBot.jar-old\")'\r\n mv -f JMusicBot.jar JMusicBot.jar-old\r\nfi\r\n\r\necho -e \"Running: curl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\\n\"\r\ncurl -sSLo JMusicBot.jar ${DOWNLOAD_URL}\r\n\r\nif [ -f config.txt ]; then\r\n echo -e \"Updating config.txt to latest version...\"\r\n echo -e '\\t(Old version can be found at \"config.txt-old\")'\r\n mv -f config.txt config.txt-old\r\nfi\r\necho -e \"Running: curl -sSLo config.txt ${CONFIG_LINK}\\n\"\r\ncurl -sSLo config.txt ${CONFIG_LINK}\r\n\r\n[ ! -d Playlists ] && mkdir Playlists\r\ncd Playlists\r\nif [ -f example_playlist.txt ]; then\r\n echo -e \"example_playlist.txt already exists. Skipping default download.\"\r\nelse\r\n echo -e \"example_playlist.txt not found. Downloading default example_playlist...\"\r\n echo -e \"Running: curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\"\r\n curl -sSLo example_playlist.txt ${PLAYLIST_LINK}\r\nfi\r\n\r\necho -e \"\\nJMusicBot Successfully Installed!\"", - "container": "debian:bullseye-slim", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "\/bin\/bash" } }, @@ -45,7 +45,7 @@ "default_value": "Change This To Your Discord User ID", "user_viewable": true, "user_editable": true, - "rules": "required|digits:18", + "rules": "required|digits_between:17,18", "field_type": "text" }, { From c8e214bc11b0a60b7b5f145ffa146e614956aebe Mon Sep 17 00:00:00 2001 From: mvw <73003273+meesvw@users.noreply.github.com> Date: Thu, 21 Sep 2023 09:08:15 +0200 Subject: [PATCH 190/251] Updated the muse egg (#2472) * Muse: Added git as package in the install script --- bots/discord/muse/egg-muse.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bots/discord/muse/egg-muse.json b/bots/discord/muse/egg-muse.json index 4aea39a8..bcb0554c 100644 --- a/bots/discord/muse/egg-muse.json +++ b/bots/discord/muse/egg-muse.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-22T18:48:00+02:00", + "exported_at": "2023-09-20T20:25:51+02:00", "name": "Muse", "author": "hello@apollo.moe", "description": "\ud83c\udfa7 a self-hosted midwestern Discord music bot that doesn't suck", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", + "script": "## Credits: Red-Thirten (https:\/\/github.com\/lilkingjr1) for providing most of the installation script\r\napt-get update\r\napt-get install git curl jq -y -qq\r\n\r\nGITHUB_PACKAGE=\"codetheweb\/muse\"\r\n\r\n# Find GitHub download URL for Muse for specified version\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/${GITHUB_PACKAGE}\/releases\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tarball_url')\r\n else\r\n echo -e \"Could not find version \\\"${VERSION}\\\" of Muse. Defaulting to latest release...\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq -r '.tarball_url')\r\n fi\r\nfi\r\n\r\n# Download Muse from GitHub & Extract\r\ncd \/mnt\/server\r\necho -e \"Downloading Muse from GitHub...\"\r\ncurl -L ${DOWNLOAD_URL} -o muse.tar.gz\r\necho -e \"Extracting Muse from tarball...\"\r\ntar -xvzf muse.tar.gz --strip-components=1\r\nrm muse.tar.gz\r\n\r\n# Verify and clean up Muse installation\r\nif [ ! -f .env.example ]; then\r\n echo -e \"\\nFailed to download release: ${DOWNLOAD_URL}\\n\"\r\n exit 1\r\nfi\r\ncp .env.example .env\r\nrm -rf .dockerignore Dockerfile .gitignore .github\/\r\nyarn install --prod #--frozen-lockfile\r\n#sed -i 's\/of filterWrapper[)]\/of filterWrapper|| [])\/g' \/mnt\/server\/node_modules\/ytsr\/lib\/utils.js\r\n\r\necho -e \"\\nMuse Successfully Installed!\"", "container": "node:lts-bullseye-slim", "entrypoint": "bash" } @@ -89,4 +89,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 5d9da83f28237b6f4d2fd89541fa27766340984a Mon Sep 17 00:00:00 2001 From: oliver408i <75344601+oliver408i@users.noreply.github.com> Date: Fri, 22 Sep 2023 10:57:33 -0700 Subject: [PATCH 191/251] Add KSP DMP Server (#2476) Add: KSP DMP Server --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- README.md | 2 + game_eggs/README.md | 2 + game_eggs/ksp/README.md | 12 ++++ game_eggs/ksp/egg-k-s-p-d-m-p.json | 92 ++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 game_eggs/ksp/README.md create mode 100644 game_eggs/ksp/egg-k-s-p-d-m-p.json diff --git a/README.md b/README.md index 84756656..1d14ea79 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,8 @@ If you are reading this it looks like you are looking to add an egg to your serv * GTA * [GTAC](game_eggs/gta/gtac) +[Kerbal Space Program](game_eggs/ksp) + [League Sandbox](game_eggs/leaguesandbox) [Los Angeles Crimes](game_eggs/losangelescrimes) diff --git a/game_eggs/README.md b/game_eggs/README.md index a31104aa..c3f173c3 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -53,6 +53,8 @@ * GTA * [GTAC](gta/gtac) +[Kerbal Space Program](ksp) + [Los Angeles Crimes](losangelescrimes) [League Sandbox](leaguesandbox) diff --git a/game_eggs/ksp/README.md b/game_eggs/ksp/README.md new file mode 100644 index 00000000..a789c820 --- /dev/null +++ b/game_eggs/ksp/README.md @@ -0,0 +1,12 @@ +# Kerbal Space Program + +[Dark Multiplayer](https://d-mp.org/) +Dark Multiplayer is an up-to-date mod adding the long awaited multiplayer feature to Kerbal Space Program while including support for other mods! + +## Server Ports + +Ports required to run the server in a table format. + +| Port | default | +|---------|---------| +| Game | 6702 | diff --git a/game_eggs/ksp/egg-k-s-p-d-m-p.json b/game_eggs/ksp/egg-k-s-p-d-m-p.json new file mode 100644 index 00000000..99c4f75a --- /dev/null +++ b/game_eggs/ksp/egg-k-s-p-d-m-p.json @@ -0,0 +1,92 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-09-22T19:54:35+02:00", + "name": "KSP DMP", + "author": "rufanyin29@gmail.com", + "description": "Dark Multiplayer mod server for Kerbal Space Program", + "features": null, + "docker_images": { + "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "mono DMPServer.exe", + "config": { + "files": "{\r\n \"Config\/Settings.txt\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"modpackMode\": \"{{server.build.env.MODPACKMODE}}\",\r\n \"warpMode\": \"{{server.build.env.WARPMODE}}\",\r\n \"gameMode\": \"{{server.build.env.GAMEMODE}}\",\r\n \"gameDifficulty\": \"{{server.build.env.DIFFICULTY}}\",\r\n \"whitelisted\": \"{{server.build.env.WHITELIST}}\",\r\n \"serverName\": \"{{server.build.env.SERVERNAME}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Ready!\"\r\n}", + "logs": "{}", + "stop": "\/exit" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nV=$(curl -s https:\/\/d-mp.org\/downloads | grep \"DMP Server\" | awk -F 'href=\"' 'NR==2 {print $2}' | awk -F '\"' '{print $1}') # \/builds\/release\/v0.3.8.3\/DMPServer.zip\r\n\r\necho \"Download link: https:\/\/d-mp.org${V}\"\r\ncurl -sSL -o DMPServer.zip https:\/\/d-mp.org${V}\r\n\r\nunzip -o DMPServer.zip\r\nmv DMPServer\/* .\/\r\n\r\nrm -rf DMPServer\r\nrm DMPServer.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Mod Pack Mode", + "description": "Specify the modpack type.", + "env_variable": "MODPACKMODE", + "default_value": "NONE", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:NONE,CKAN,GAMEDATA", + "field_type": "text" + }, + { + "name": "Warp Mode", + "description": "Specify the warp type.", + "env_variable": "WARPMODE", + "default_value": "SUBSPACE", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:MCW_FORCE,MCW_VOTE,MCW_LOWEST,SUBSPACE_SIMPLE,SUBSPACE,NONE", + "field_type": "text" + }, + { + "name": "Game Mode", + "description": "Specify the game type.", + "env_variable": "GAMEMODE", + "default_value": "SANDBOX", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:SANDBOX,CAREER,SCIENCE", + "field_type": "text" + }, + { + "name": "Game Difficulty", + "description": "Specify the gameplay difficulty of the server.", + "env_variable": "DIFFICULTY", + "default_value": "NORMAL", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:EASY,NORMAL,MODERATE,HARD,CUSTOM", + "field_type": "text" + }, + { + "name": "Whitelisted", + "description": "Enable white-listing.", + "env_variable": "WHITELIST", + "default_value": "False", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:True,False", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server.", + "env_variable": "SERVERNAME", + "default_value": "DMP Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:48", + "field_type": "text" + } + ] +} \ No newline at end of file From 2bd36bc2df94eae483ec076cad44eb7717878268 Mon Sep 17 00:00:00 2001 From: MrAvox <143508913+avoxmr@users.noreply.github.com> Date: Fri, 22 Sep 2023 19:08:48 +0100 Subject: [PATCH 192/251] Added Elixir Egg (#2450) Add: elixir --- README.md | 1 + generic/README.md | 5 ++ generic/elixir/README.md | 22 ++++++++ generic/elixir/egg-elixir.json | 96 ++++++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 generic/elixir/README.md create mode 100644 generic/elixir/egg-elixir.json diff --git a/README.md b/README.md index 1d14ea79..41258ca0 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ If you are reading this it looks like you are looking to add an egg to your serv ## [Generic Languages](/generic) * [C#](/generic/c%23/) +* [elixir](/generic/elixir/) * [dart](/generic/dart/) * [deno](/generic/deno/) * [golang](/generic/golang/) diff --git a/generic/README.md b/generic/README.md index a549b2d4..91cd1eb4 100644 --- a/generic/README.md +++ b/generic/README.md @@ -5,6 +5,11 @@ [C#](https://learn.microsoft.com/en-us/dotnet/csharp//) A generic C# language egg running with dotnet +### [Elixir](elixir) + +[elixir](https://elixir-lang.org/) +A generic Elixir language egg + ### [Dart](dart) [dart](https://dart.dev/) diff --git a/generic/elixir/README.md b/generic/elixir/README.md new file mode 100644 index 00000000..98a8c7ed --- /dev/null +++ b/generic/elixir/README.md @@ -0,0 +1,22 @@ +# Elixir Language Generic + +This egg is designed to run any generic Elixir application, allowing users to pull their own Elixir source code from a Git repository. + +There is an option to allow a user to upload their own files to run a server. + +The startup configs and commands may need changing to actually function properly. + +## Configuration + +The server will be stuck as `starting` until the egg Start Configuration is modified. You have to edit the text to match something your bot will print for Pterodactyl panel to detect it as running. +![image](https://user-images.githubusercontent.com/10975908/126516861-c5cb4630-9f25-405c-8199-97bf5ec15a7f.png) + +You can use arrays to have multiple different values when different bots are being used + +```json +{ + "done":[ + "change this text 1", + "change this text 2" + ] +} diff --git a/generic/elixir/egg-elixir.json b/generic/elixir/egg-elixir.json new file mode 100644 index 00000000..6142957d --- /dev/null +++ b/generic/elixir/egg-elixir.json @@ -0,0 +1,96 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-08-31T14:24:13+02:00", + "name": "Elixir", + "author": "mravox@proton.me", + "description": "Elixir is a functional, concurrent, high-level general-purpose programming language that runs on the BEAM virtual machine, which is also used to implement the Erlang programming language.", + "features": null, + "docker_images": { + "Elixir Latest": "ghcr.io\/parkervcp\/yolks:elixir_latest", + "Elixir 1.15": "ghcr.io\/parkervcp\/yolks:elixir_1.15", + "Elixir 1.14": "ghcr.io\/parkervcp\/yolks:elixir_1.14", + "Elixir 1.13": "ghcr.io\/parkervcp\/yolks:elixir_1.13", + "Elixir 1.12": "ghcr.io\/parkervcp\/yolks:elixir_1.12" + }, + "file_denylist": [], + "startup": "if [[ -d .git ]] && [[ 0 == \"1\" ]]; then git pull; fi; mix deps.get; mix run --no-halt", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# Elixir App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${GIT_USERNAME}\" ] && [ -z \"${GIT_ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${GIT_ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git elixir repository\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${GIT_BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${GIT_BRANCH}'\"\r\n git clone --single-branch --branch ${GIT_BRANCH} ${GIT_ADDRESS} .\r\n fi\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "debian:bullseye-slim", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Git Repository Address", + "description": "The Git repository address to clone .", + "env_variable": "GIT_ADDRESS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Branch", + "description": "The Git branch to install.", + "env_variable": "GIT_BRANCH", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "User Uploaded Files", + "description": "Skip all the install stuff if you are letting a user upload files.\r\n0 = false (default)\r\n1 = true", + "env_variable": "USER_UPLOAD", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Auto Update", + "description": "Pull the latest files on startup when using a Git Repository.\r\n0 = false (default)\r\n1 = true", + "env_variable": "AUTO_UPDATE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Git Username", + "description": "Git username for authentication.", + "env_variable": "GIT_USERNAME", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Git Access Token", + "description": "Git access token for authentication.", + "env_variable": "GIT_ACCESS_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} From 4a439b322cb500653bda360f7c475dccc241c643 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Tue, 26 Sep 2023 17:51:49 +0200 Subject: [PATCH 193/251] move uptimekuma to alpine (#2479) Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- software/uptime-kuma/egg-uptime-kuma.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/software/uptime-kuma/egg-uptime-kuma.json b/software/uptime-kuma/egg-uptime-kuma.json index a8ac9570..ea1da58a 100644 --- a/software/uptime-kuma/egg-uptime-kuma.json +++ b/software/uptime-kuma/egg-uptime-kuma.json @@ -4,13 +4,13 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-01-22T09:33:11+01:00", + "exported_at": "2023-09-25T18:09:50+02:00", "name": "Uptime Kuma", "author": "info@goover.de", "description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.", "features": null, "docker_images": { - "ghcr.io\/parkervcp\/yolks:nodejs_16": "ghcr.io\/parkervcp\/yolks:nodejs_16" + "ghcr.io\/parkervcp\/apps:uptimekuma": "ghcr.io\/parkervcp\/apps:uptimekuma" }, "file_denylist": [], "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}} --port={{SERVER_PORT}}", @@ -22,9 +22,9 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# NodeJS App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ python python-dev libtool\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\ncd \/mnt\/server\r\nnpm ci --production \r\nnpm run download-dist\r\n\r\n## add below your custom commands if needed\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", - "container": "node:16-bullseye-slim", - "entrypoint": "bash" + "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\n\r\nnpm install -g npm@latest\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\n## add below your custom commands if needed\r\n\r\ncd \/mnt\/server\r\nnpm ci --production \r\nnpm run download-dist\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", + "container": "node:18-alpine", + "entrypoint": "ash" } }, "variables": [ From e32bcfc472515393c393224d23fe30030cb3e221 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 28 Sep 2023 12:10:49 +0200 Subject: [PATCH 194/251] add Meilisearch --- README.md | 4 + software/meilisearch/README.md | 7 ++ software/meilisearch/egg-meilisearch.json | 112 ++++++++++++++++++++++ 3 files changed, 123 insertions(+) create mode 100644 software/meilisearch/README.md create mode 100644 software/meilisearch/egg-meilisearch.json diff --git a/README.md b/README.md index 41258ca0..afc174a2 100644 --- a/README.md +++ b/README.md @@ -403,6 +403,10 @@ If you are reading this it looks like you are looking to add an egg to your serv * [languagetool](/software/languagetool) +### Meilisearch + +* [Meilisearch](/software/meilisearch) + ### Owncast * [owncast](/software/owncast) diff --git a/software/meilisearch/README.md b/software/meilisearch/README.md new file mode 100644 index 00000000..b8e8a592 --- /dev/null +++ b/software/meilisearch/README.md @@ -0,0 +1,7 @@ +# [Meilisearch](https://www.meilisearch.com/) + +An open-source, lightning-fast, and hyper-relevant search engine that fits effortlessly into your workflow. + +## Server Ports + +One port needs to be allocated to run Meilisearch. diff --git a/software/meilisearch/egg-meilisearch.json b/software/meilisearch/egg-meilisearch.json new file mode 100644 index 00000000..376424b0 --- /dev/null +++ b/software/meilisearch/egg-meilisearch.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-09-12T11:04:11+02:00", + "name": "Meilisearch", + "author": "josdekurk@gmail.com", + "description": "A lightning-fast search engine that fits effortlessly into your apps, websites, and workflow.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], + "startup": ".\/meilisearch --http-addr \"0.0.0.0:{{SERVER_PORT}}\" --max-indexing-memory=\"{{SERVER_MEMORY}}mb\" $([ \"$NO_ANALYTICS\" -eq 1 ] && echo \"--no-analytics\")", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Actix runtime found; starting in Actix runtime\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/meilisearch\/meilisearch\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/meilisearch\/meilisearch\/releases\")\r\nMATCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] && echo \"linux-amd64\" || echo \"linux-aarch64\")\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_URL=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n## Config file\r\nFILE=\/mnt\/server\/config.toml\r\nif [ -f \"$FILE\" ]; then\r\n echo \"Config file exits\"\r\nelse \r\n echo \"Config does not exist. Making one\"\r\n curl -sSL -o config.toml https:\/\/raw.githubusercontent.com\/meilisearch\/meilisearch\/latest\/config.toml\r\nfi\r\n\r\ncurl -sSL -o meilisearch ${DOWNLOAD_URL}\r\nchmod +x meilisearch\r\n\r\n# Make the needed directory's \r\nmkdir -p \/mnt\/server\/dumps\r\nmkdir -p \/mnt\/server\/data.ms\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Master key", + "description": "In production, a Master key of at least 16 bytes is mandatory\r\nSets the instance's master key, automatically protecting all routes except GET \/health. This means you will need a valid API key to access all other endpoints.", + "env_variable": "MEILI_MASTER_KEY", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:64", + "field_type": "text" + }, + { + "name": "Environment", + "description": "Configures the instance's environment. Value must be either production or development.", + "env_variable": "MEILI_ENV", + "default_value": "development", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:development,production", + "field_type": "text" + }, + { + "name": "Disable analytics", + "description": "Deactivates Meilisearch's built-in telemetry when provided.", + "env_variable": "NO_ANALYTICS", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Dumps dir", + "description": "Sets the directory where Meilisearch will create dump files.", + "env_variable": "MEILI_DUMP_DIR", + "default_value": "\/home\/container\/dumps", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "DB PATH", + "description": "Designates the location where database files will be created and retrieved.", + "env_variable": "MEILI_DB_PATH", + "default_value": "\/home\/container\/data.ms", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "Log level", + "description": "Defines how much detail should be present in Meilisearch's logs.", + "env_variable": "MEILI_LOG_LEVEL", + "default_value": "INFO", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:INFO,WARN,ERROR,TRACE", + "field_type": "text" + }, + { + "name": "Config Path", + "description": "Designates the location of the configuration file to load at launch.", + "env_variable": "MEILI_CONFIG_FILE_PATH", + "default_value": "\/home\/container\/config.toml", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Max threads", + "description": "Sets the maximum number of threads Meilisearch can use during indexing", + "env_variable": "MEILI_MAX_INDEXING_THREADS", + "default_value": "2", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + } + ] +} \ No newline at end of file From 08e6ba7ce1c6e513a73fffbb18d958c580deecda Mon Sep 17 00:00:00 2001 From: nateloeffel <60140854+nateloeffel@users.noreply.github.com> Date: Sat, 30 Sep 2023 22:23:53 -0400 Subject: [PATCH 195/251] Fixed Typo in Readme --- software/uptime-kuma/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/uptime-kuma/README.md b/software/uptime-kuma/README.md index 3ba818df..e8619a28 100644 --- a/software/uptime-kuma/README.md +++ b/software/uptime-kuma/README.md @@ -17,7 +17,7 @@ After installation and successful start, browse to your : and setup th ## Server Ports -Uptime Kuma requires 1 port. You can choose every port you want +Uptime Kuma requires 1 port. You can choose any port you want | Port | default | |---------|---------------| From 8a71caf41f5364369e673763af930dace575f8b9 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Sun, 1 Oct 2023 17:00:33 +0200 Subject: [PATCH 196/251] Uptime Kuma - fix DB und cleanup (#2484) Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- software/uptime-kuma/README.md | 19 ++++++++++++ software/uptime-kuma/egg-uptime-kuma.json | 36 ++--------------------- 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/software/uptime-kuma/README.md b/software/uptime-kuma/README.md index e8619a28..bcf2444e 100644 --- a/software/uptime-kuma/README.md +++ b/software/uptime-kuma/README.md @@ -22,3 +22,22 @@ Uptime Kuma requires 1 port. You can choose any port you want | Port | default | |---------|---------------| | default | 3000 | + +## Cloudflared, Apprise & Chromium + +The latest image provides support for Cloudflared and Apprise. + +### Cloudflared +With Cloudflared it is possible to create a proxy over Cloudflare without having to use an nginx proxy. More info here: +https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy-with-Cloudflare-Tunnel + +### Apprise +Apprise provides notifications for all kinds of services. Uptime Kuma has a built-in support for Apprise. +More info's here: +https://github.com/caronc/apprise#supported-notifications + +### Monitor HTTP(s) - Browser Engine (Chromium) +The image supports the monitor "HTTP(s) - Browser Engine". +To use this monitor, enter the following path in the settings under "General -> Chrome/Chromium Executable" (at the bottom): + +/usr/bin/chromium-browser \ No newline at end of file diff --git a/software/uptime-kuma/egg-uptime-kuma.json b/software/uptime-kuma/egg-uptime-kuma.json index ea1da58a..5bc89ffa 100644 --- a/software/uptime-kuma/egg-uptime-kuma.json +++ b/software/uptime-kuma/egg-uptime-kuma.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-09-25T18:09:50+02:00", + "exported_at": "2023-10-01T10:06:16+02:00", "name": "Uptime Kuma", "author": "info@goover.de", "description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/apps:uptimekuma": "ghcr.io\/parkervcp\/apps:uptimekuma" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; \/usr\/local\/bin\/node \/home\/container\/{{JS_FILE}} --port={{SERVER_PORT}}", + "startup": "node \/home\/container\/server\/server.js --port={{SERVER_PORT}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"[SERVER] INFO: Listening on \"\r\n}", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\n\r\nnpm install -g npm@latest\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\necho \"Installing nodejs packages\"\r\nif [[ ! -z ${NODE_PACKAGES} ]]; then\r\n \/usr\/local\/bin\/npm install ${NODE_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/package.json ]; then\r\n \/usr\/local\/bin\/npm install --production\r\nfi\r\n\r\n## add below your custom commands if needed\r\n\r\ncd \/mnt\/server\r\nnpm ci --production \r\nnpm run download-dist\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", + "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\n\r\nif [ -d \"\/mnt\/server\/node_modules\" ]; then\r\n rm -fR \/mnt\/server\/node_modules\r\n npm cache verify\r\nfi\r\n\r\nnpm install -g npm@latest\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\n## add below your custom commands if needed\r\ncd \/mnt\/server\r\nmkdir -p \/mnt\/server\/data\r\ngit config --global --add safe.directory \/mnt\/server\r\n\r\nnpm run setup\r\n\r\nif [ ! -f \"\/mnt\/server\/data\/kuma.db\" ]; then\r\n cp \/mnt\/server\/db\/kuma.db \/mnt\/server\/data\/kuma.db\r\nfi\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", "container": "node:18-alpine", "entrypoint": "ash" } @@ -38,16 +38,6 @@ "rules": "nullable|string", "field_type": "text" }, - { - "name": "Auto Update", - "description": "Pull the latest files on startup when using a GitHub repo.", - "env_variable": "AUTO_UPDATE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "required|boolean", - "field_type": "text" - }, { "name": "JS file", "description": "The file that starts the app", @@ -57,26 +47,6 @@ "user_editable": false, "rules": "required|string", "field_type": "text" - }, - { - "name": "Additional Node packages", - "description": "Install additional node packages.\r\n\r\nUse spaces to separate.", - "env_variable": "NODE_PACKAGES", - "default_value": "", - "user_viewable": false, - "user_editable": false, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Uninstall Node packages", - "description": "Uninstall node packages.\r\n\r\nUse spaces to separate.", - "env_variable": "UNNODE_PACKAGES", - "default_value": "", - "user_viewable": false, - "user_editable": false, - "rules": "nullable|string", - "field_type": "text" } ] } \ No newline at end of file From c791eb2261a340ee2dc5082b1b9e37a06e8b05e5 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Thu, 5 Oct 2023 18:47:50 +0200 Subject: [PATCH 197/251] gOOvER changed my email to new one (#2489) Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- bots/twitch/sogebot/egg-soge-bot.json | 4 ++-- .../impostor_server/egg-among-us--impostor-server.json | 2 +- .../citadel/egg-citadel-forged-with-fire.json | 2 +- game_eggs/steamcmd_servers/craftopia/egg-craftopia.json | 2 +- game_eggs/steamcmd_servers/eco/egg-eco.json | 2 +- .../empyrion/egg-empyrion--galactic-survival.json | 2 +- .../rising_world/legacy/egg-rising-world-legacy.json | 2 +- .../rising_world/unity/egg-rising-world-unity.json | 2 +- game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json | 2 +- .../steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json | 2 +- .../multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json | 2 +- .../steamcmd_servers/solace_crafting/egg-solace-crafting.json | 2 +- game_eggs/steamcmd_servers/soldat/egg-soldat.json | 2 +- .../sonsoftheforest/egg-sons-of-the-forest.json | 2 +- .../space_engineers/default/egg-space-engineers.json | 2 +- .../torch/egg-space-engineers--torch-server.json | 2 +- game_eggs/steamcmd_servers/stationeers/egg-stationeers.json | 2 +- .../valheim/valheim_bepinex/egg-valheim-bep-i-nex.json | 2 +- .../valheim/valheim_plus/egg-valheim-plus-mod.json | 2 +- software/uptime-kuma/egg-uptime-kuma.json | 2 +- voice_servers/ts3_manager/egg-t-s3-manager.json | 2 +- 21 files changed, 22 insertions(+), 22 deletions(-) diff --git a/bots/twitch/sogebot/egg-soge-bot.json b/bots/twitch/sogebot/egg-soge-bot.json index 4e68d540..2cd2c32f 100644 --- a/bots/twitch/sogebot/egg-soge-bot.json +++ b/bots/twitch/sogebot/egg-soge-bot.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-04-23T18:47:53+02:00", "name": "SogeBot", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "sogeBot - Free Twitch Bot built on Node.js https:\/\/sogebot.xyz\/", "features": null, "docker_images": { @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: info@goover.de\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip jq python3 build-essential ca-certificates\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\")\r\nMATCH=sogeBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\ncurl -sSL -o sogeBot.zip ${DOWNLOAD_LINK}\r\n\r\nunzip -o sogeBot.zip\r\nrm -rf sogeBot.zip\r\n\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm install -g npm@8\r\n\r\nnpm install --verbose --force\r\n\r\necho -e \"install completed\"\r\nexit 0", + "script": "#\/bin\/bash\r\n# Installscript for sogeBot | Author: eggs@goover.dev\r\n\r\nexport DEBIAN_FRONTEND=noninteractive\r\n\r\napt -y update\r\napt install -y curl unzip jq python3 build-essential ca-certificates\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\nexport NODE_OPTIONS=--max-old-space-size=8192\r\nchown -R root:root \/mnt\r\n\r\n#Backup database & config\r\nmkdir -p .backup\r\ncp -f .env \/mnt\/server\/.backup\r\ncp -f sogebot.db \/mnt\/server\/.backup\r\n\r\n#delete old dir's to prevent errors on update\r\nrm -fR dest\r\nrm -fR public\r\nrm -fR node-modules\r\nrm -fR tools\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\/latest\")\r\nRELEASES=$(curl --silent \"https:\/\/api.github.com\/repos\/sogebot\/sogeBot\/releases\")\r\nMATCH=sogeBot\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\nelse\r\n VERSION_CHECK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url' | grep -i ${MATCH})\r\n else\r\n echo -e \"defaulting to latest release\"\r\n DOWNLOAD_LINK=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url)\r\n fi\r\nfi\r\n\r\necho -e \"Downloading from $DOWNLOAD_LINK\"\r\ncurl -sSL -o sogeBot.zip ${DOWNLOAD_LINK}\r\n\r\nunzip -o sogeBot.zip\r\nrm -rf sogeBot.zip\r\n\r\n\r\necho \"--------------------------------------------------------------------------\"\r\necho \"Installing dependencies, this will take some time so sit back and relax...\"\r\necho \"IGNORE WARNINGS. THESE ARE NOT ERRORS !!!\"\r\necho \"--------------------------------------------------------------------------\"\r\n\r\nnpm install -g npm@8\r\n\r\nnpm install --verbose --force\r\n\r\necho -e \"install completed\"\r\nexit 0", "container": "node:18-bullseye-slim", "entrypoint": "bash" } diff --git a/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json b/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json index ba3d3b54..c93e5617 100644 --- a/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json +++ b/game_eggs/among_us/impostor_server/egg-among-us--impostor-server.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-03-04T15:04:21+01:00", "name": "Among Us - Impostor Server", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Impostor is one of the first Among Us private servers, written in C#.\r\n\r\nThere are no special features at this moment, the goal is aiming to be as close as possible to the real server, for now. In a later stage, making modifications to game logic by modifying GameData packets can be looked at.", "features": null, "docker_images": { diff --git a/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json b/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json index 1c294c12..5b3f1232 100644 --- a/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json +++ b/game_eggs/steamcmd_servers/citadel/egg-citadel-forged-with-fire.json @@ -6,7 +6,7 @@ }, "exported_at": "2021-11-26T14:44:12+01:00", "name": "Citadel: Forged with Fire", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Citadel: Forged With Fire is a massive online sandbox RPG set in the mystical world of Ignus. Featuring magic, spellcasting, building, exploring and crafting as you fight to make a name for yourself and achieve notoriety across the land.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json b/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json index 6d16a070..bdf3df8e 100644 --- a/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json +++ b/game_eggs/steamcmd_servers/craftopia/egg-craftopia.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-10-07T17:08:45+02:00", "name": "Craftopia", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Craftopia is the brand new multiplayer survival action game made in Japan. We combined many features we find enjoyable, such as hunting, farming, hack-and-slash, building, automation to develop this game.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/eco/egg-eco.json b/game_eggs/steamcmd_servers/eco/egg-eco.json index f91c6fed..3f8cfcb0 100644 --- a/game_eggs/steamcmd_servers/eco/egg-eco.json +++ b/game_eggs/steamcmd_servers/eco/egg-eco.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-01-04T11:28:40+01:00", "name": "Eco", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Eco is an online world from Strange Loop Games where players must build civilization using resources from an ecosystem that can be damaged and destroyed. The world of Eco is an incredibly reactive one, and whatever any player does in the world affects the underlying ecosystem.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json index f9a5ec94..4b5b780d 100644 --- a/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json +++ b/game_eggs/steamcmd_servers/empyrion/egg-empyrion--galactic-survival.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-04-25T19:31:11+02:00", "name": "Empyrion: Galactic Survival", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Empyrion: Galactic Survival dedicated server", "features": null, "docker_images": { diff --git a/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json b/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json index 1f3fdf6c..da1fc498 100644 --- a/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json +++ b/game_eggs/steamcmd_servers/rising_world/legacy/egg-rising-world-legacy.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-10-16T09:21:36+02:00", "name": "Rising World Java Legacy", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Rising World is a voxel based open-world sandbox game, featuring a procedurally generated world, playable in single and multi-player.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json b/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json index 3f12eae8..07edfdc0 100644 --- a/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json +++ b/game_eggs/steamcmd_servers/rising_world/unity/egg-rising-world-unity.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-10-23T09:33:48+02:00", "name": "Rising World Unity", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Rising World is a voxel based open-world sandbox game, featuring a procedurally generated world, playable in single and multi-player.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json b/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json index d6f12f63..4c0af7df 100644 --- a/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json +++ b/game_eggs/steamcmd_servers/scpsl/dedicated/egg-scpsl.json @@ -6,7 +6,7 @@ }, "exported_at": "2021-11-14T11:16:57+01:00", "name": "SCP:SL", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Egg for SCP: Secret Laboratory Dedicated Linux Server", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json b/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json index 2a881b69..00d43318 100644 --- a/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json +++ b/game_eggs/steamcmd_servers/scpsl/exiled/egg-s-c-p--s-l--exiled.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-01-09T14:18:18+01:00", "name": "SCP:SL - Exiled", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Egg for SCP: Secret Laboratory Dedicated Linux Server with Exiled Plugin Framework", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json b/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json index e422fd4b..75f402c4 100644 --- a/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json +++ b/game_eggs/steamcmd_servers/scpsl/multiadmin/egg-s-c-p--secret-laboratory--multi-admin.json @@ -6,7 +6,7 @@ }, "exported_at": "2021-11-14T11:18:28+01:00", "name": "SCP: Secret Laboratory - MultiAdmin", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "The latest vanilla version of SCP:SL running through MultiAdmin for compatibility. LocalAdmin does not work. No SMod2.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json b/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json index d60353e0..b05c26fb 100644 --- a/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json +++ b/game_eggs/steamcmd_servers/solace_crafting/egg-solace-crafting.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-10-24T20:12:31+02:00", "name": "Solace Crafting", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Open-world fantasy survival RPG. Borderless distance-based difficulty with player built fast-travel, modular-building, and town management.", "features": null, "docker_images": { diff --git a/game_eggs/steamcmd_servers/soldat/egg-soldat.json b/game_eggs/steamcmd_servers/soldat/egg-soldat.json index 235aaa83..13cb12f4 100644 --- a/game_eggs/steamcmd_servers/soldat/egg-soldat.json +++ b/game_eggs/steamcmd_servers/soldat/egg-soldat.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-01-20T12:58:19-05:00", "name": "Soldat", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Soldat is a unique 2D (side-view) multiplayer action game. It has been influenced by the best of games such as Liero, Worms, Quake, and Counter-Strike and provides a fast-paced gaming experience with tons of blood and flesh. Soldiers fight against each other in 2D battle arenas using a deadly arsenal of military weapons, across 7 default game modes. It features 18 different weapons and 60 maps to frag away on, with full support for user created content.\r\n\r\nSteam: https:\/\/store.steampowered.com\/app\/638490\/Soldat\/", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json index 98660cc5..789d688c 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-07-23T04:57:30-04:00", "name": "Sons Of The Forest", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json index 05aaccf1..e4e9d49c 100644 --- a/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json +++ b/game_eggs/steamcmd_servers/space_engineers/default/egg-space-engineers.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-07-22T12:57:51+02:00", "name": "Space Engineers", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Space Engineers is a voxel-based sandbox game set in space and on planets.", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json b/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json index 5f9e6e30..e1fa6c30 100644 --- a/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json +++ b/game_eggs/steamcmd_servers/space_engineers/torch/egg-space-engineers--torch-server.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-11-26T17:31:15+01:00", "name": "Space Engineers - Torch Server", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Torch is the successor to SE Server Extender and gives server admins the tools they need to keep their Space Engineers servers running smoothly. It features a user interface with live management tools and a plugin system so you can run your server exactly how you'd like. Torch is still in early development so there may be bugs and incomplete features.\r\n\r\n!!!!! DO NOT CANCEL THE FIRST START, OR YOU NEED TO DELETE THE SERVER AND CREATE FROM SCRATCH !!!!", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json b/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json index 21c62948..780f11fa 100644 --- a/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json +++ b/game_eggs/steamcmd_servers/stationeers/egg-stationeers.json @@ -6,7 +6,7 @@ }, "exported_at": "2022-12-30T11:39:51+01:00", "name": "Stationeers", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Stationeers Server", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json index b2f3879f..ab2dca35 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_bepinex/egg-valheim-bep-i-nex.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-03-03T16:16:01+01:00", "name": "Valheim BepINex", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture incl the Plugin Framework BepInEx", "features": [ "steam_disk_space" diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json index 82968fc1..1f339ffe 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-03-03T16:15:23+01:00", "name": "Valheim Plus Mod", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.", "features": [ "steam_disk_space" diff --git a/software/uptime-kuma/egg-uptime-kuma.json b/software/uptime-kuma/egg-uptime-kuma.json index 5bc89ffa..ced614ae 100644 --- a/software/uptime-kuma/egg-uptime-kuma.json +++ b/software/uptime-kuma/egg-uptime-kuma.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-10-01T10:06:16+02:00", "name": "Uptime Kuma", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.", "features": null, "docker_images": { diff --git a/voice_servers/ts3_manager/egg-t-s3-manager.json b/voice_servers/ts3_manager/egg-t-s3-manager.json index c20c8b53..515bc972 100644 --- a/voice_servers/ts3_manager/egg-t-s3-manager.json +++ b/voice_servers/ts3_manager/egg-t-s3-manager.json @@ -5,7 +5,7 @@ }, "exported_at": "2020-12-05T08:58:33+01:00", "name": "TS3 Manager", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "The Open Source Webinterface For TeamSpeak Servers", "features": null, "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian", From 0b41aa10f634a01426e7e6b42f3574afa86b0807 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 7 Oct 2023 08:41:49 +0200 Subject: [PATCH 198/251] Update egg-t-s3-manager.json --- .../ts3_manager/egg-t-s3-manager.json | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/voice_servers/ts3_manager/egg-t-s3-manager.json b/voice_servers/ts3_manager/egg-t-s3-manager.json index c20c8b53..54b075b2 100644 --- a/voice_servers/ts3_manager/egg-t-s3-manager.json +++ b/voice_servers/ts3_manager/egg-t-s3-manager.json @@ -1,25 +1,29 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1" + "version": "PTDL_v2", + "update_url": null }, - "exported_at": "2020-12-05T08:58:33+01:00", + "exported_at": "2023-10-07T08:41:21+02:00", "name": "TS3 Manager", "author": "info@goover.de", "description": "The Open Source Webinterface For TeamSpeak Servers", "features": null, - "image": "quay.io\/parkervcp\/pterodactyl-images:base_debian", + "docker_images": { + "ghcr.io\/parkervcp\/yolks:debian": "ghcr.io\/parkervcp\/yolks:debian" + }, + "file_denylist": [], "startup": ".\/start_ts3-manager -p ${SERVER_PORT}", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"Server listening on\",\r\n \"userInteraction\": []\r\n}", + "startup": "{\r\n \"done\": \"Server listening on\"\r\n}", "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "apt -y update\r\napt -y upgrade\r\napt install -y git unzip jq wget tar curl\r\n\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi", - "container": "debian:buster-slim", + "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n\r\n## install needed packages\r\napt update\r\napt install -y git unzip jq wget tar curl\r\n\r\n## env\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } }, @@ -31,7 +35,8 @@ "default_value": "joni1802\/ts3-manager", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:50" + "rules": "required|string|max:50", + "field_type": "text" }, { "name": "VERSION", @@ -40,7 +45,8 @@ "default_value": "latest", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:30" + "rules": "required|string|max:30", + "field_type": "text" }, { "name": "MATCH", @@ -49,7 +55,8 @@ "default_value": "ts3-manager-linux-x64", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:50" + "rules": "required|string|max:50", + "field_type": "text" } ] } \ No newline at end of file From dcc696d44ef0f363ebe37cdc531a4ec638b6c6dd Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 7 Oct 2023 08:43:34 +0200 Subject: [PATCH 199/251] update email --- voice_servers/ts3_manager/egg-t-s3-manager.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/voice_servers/ts3_manager/egg-t-s3-manager.json b/voice_servers/ts3_manager/egg-t-s3-manager.json index 54b075b2..f4bdc7dc 100644 --- a/voice_servers/ts3_manager/egg-t-s3-manager.json +++ b/voice_servers/ts3_manager/egg-t-s3-manager.json @@ -6,7 +6,7 @@ }, "exported_at": "2023-10-07T08:41:21+02:00", "name": "TS3 Manager", - "author": "info@goover.de", + "author": "eggs@goover.dev", "description": "The Open Source Webinterface For TeamSpeak Servers", "features": null, "docker_images": { From b29acbbb8b8a6a258fe8ab441839642261fe5101 Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Sat, 7 Oct 2023 09:24:37 +0200 Subject: [PATCH 200/251] Update egg-languagetool.json (#2493) Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- software/languagetool/egg-languagetool.json | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/software/languagetool/egg-languagetool.json b/software/languagetool/egg-languagetool.json index 026432e4..97f0646a 100644 --- a/software/languagetool/egg-languagetool.json +++ b/software/languagetool/egg-languagetool.json @@ -1,19 +1,19 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-04-06T17:26:12+02:00", + "exported_at": "2023-10-07T07:47:03+02:00", "name": "LanguageTool", "author": "thomasruhl@live.de", "description": "This egg installs a LanguageTool server\r\n\r\nLanguageTool is an Open Source proofreading software for English, French, German, Polish, Russian, and more than 20 other languages. It finds many errors that a simple spell checker cannot find.\r\n\r\nView https:\/\/languagetool.org for more information.", "features": null, - "images": [ - "ghcr.io\/pterodactyl\/yolks:java_8" - ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:java_17": "ghcr.io\/parkervcp\/yolks:java_17" + }, "file_denylist": [], - "startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin \\\"*\\\" --public --config config.properties", + "startup": "java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port {{SERVER_PORT}} --allow-origin --public --config config.properties", "config": { "files": "{\r\n \"config.properties\": {\r\n \"parser\": \"properties\",\r\n \"find\": {\r\n \"languageModel\": \"models\/\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Server started\"\r\n}", @@ -35,7 +35,8 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string" + "rules": "nullable|string", + "field_type": "text" } ] } \ No newline at end of file From 096e97b072b83c4d03787cb4ff8e2fccaecf3e2f Mon Sep 17 00:00:00 2001 From: Torsten Widmann Date: Sat, 7 Oct 2023 10:26:33 +0200 Subject: [PATCH 201/251] Update egg-valheim-plus-mod.json (#2492) Co-authored-by: gOOvER <116325+gOOvER@users.noreply.github.com> --- .../valheim/valheim_plus/egg-valheim-plus-mod.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json index 1f339ffe..d30ba605 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json +++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/egg-valheim-plus-mod.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-03-03T16:15:23+01:00", + "exported_at": "2023-10-07T06:47:10+02:00", "name": "Valheim Plus Mod", "author": "eggs@goover.dev", "description": "A brutal exploration and survival game for 1-10 players, set in a procedurally-generated purgatory inspired by viking culture.", @@ -184,7 +184,7 @@ "name": "[V+] Github Package", "description": "", "env_variable": "GITHUB_PACKAGE", - "default_value": "valheimPlus\/ValheimPlus", + "default_value": "Grantapher\/ValheimPlus", "user_viewable": false, "user_editable": false, "rules": "required|string|max:40", From acfef3feb8778dd450eb8e9a1522bd5968c45e5b Mon Sep 17 00:00:00 2001 From: Wapriaily Date: Sat, 7 Oct 2023 23:20:33 +0800 Subject: [PATCH 202/251] Update egg-hurtworld.json (#2494) --- .../hurtworld/egg-hurtworld.json | 66 ++++++++++++++----- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json b/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json index 37d3c695..062daa70 100644 --- a/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json +++ b/game_eggs/steamcmd_servers/hurtworld/egg-hurtworld.json @@ -1,32 +1,32 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-01-20T12:55:06-05:00", + "exported_at": "2023-10-07T22:46:51+08:00", "name": "Hurtworld", "author": "brycea@terrahost.cloud", "description": "Hurtworld is a hardcore multiplayer survival FPS with a focus on deep survival progression that doesn't become trivial once you establish some basic needs. Built for hardcore gamers, Hurtworld aims to punish.", "features": [ "steam_disk_space" ], - "images": [ - "quay.io\/parkervcp\/pterodactyl-images:debian_source" - ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, "file_denylist": [], - "startup": ".\/Hurtworld.x86_64 -batchmode -nographics -exec \"host {{SERVER_PORT}};queryport {{QUERY_PORT}};maxplayers {{MAX_PLAYERS}};servername {{HOSTNAME}};creativemode ${CREATIVE_MODE};${ADMINS}\" -logfile $1", + "startup": ".\/Hurtworld.x86_64 -batchmode -nographics -exec \"host {{SERVER_PORT}};queryport {{QUERY_PORT}};maxplayers {{MAX_PLAYERS}};servername {{HOSTNAME}};creativemode {{CREATIVE_MODE}};addadmin {{ADMINS}}\" -logfile $1", "config": { "files": "{}", "startup": "{\r\n \"done\": \"orphaned items\"\r\n}", "logs": "{}", - "stop": "^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'debian:buster-slim'\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so", - "container": "debian:buster-slim", - "entrypoint": "bash" + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## copy 32-bit steamclient.so\r\ncp -v linux32\/steamclient.so ..\/Hurtworld_Data\/Plugins\/x86\/steamclient.so\r\n\r\n## copy 64-bit steamclient.so\r\ncp -v linux64\/steamclient.so ..\/Hurtworld_Data\/Plugins\/x86_64\/steamclient.so\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "\/bin\/bash" } }, "variables": [ @@ -37,16 +37,18 @@ "default_value": "405100", "user_viewable": true, "user_editable": false, - "rules": "required|regex:\/^(405100)$\/" + "rules": "required|in:405100", + "field_type": "text" }, { "name": "Query Port", - "description": "Server Query Default Port", + "description": "Server Query Default Port.", "env_variable": "QUERY_PORT", "default_value": "13871", "user_viewable": true, "user_editable": false, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Max Players", @@ -55,7 +57,8 @@ "default_value": "60", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:60" + "rules": "required|string|max:60", + "field_type": "text" }, { "name": "Server Name", @@ -64,7 +67,38 @@ "default_value": "A Hurtworld Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:50" + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Server Owner Guid", + "description": "Steam id of the server owner.", + "env_variable": "ADMINS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:17", + "field_type": "text" + }, + { + "name": "Creative Mode", + "description": "Turn creative mode on and off (free build). Value as 0 for off, 1 for on.", + "env_variable": "CREATIVE_MODE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "AUTO_UPDATE", + "description": "Disabling or enabling automated updates on boot.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" } ] -} +} \ No newline at end of file From be0dc642750d613e24d3fcec3e27c01313326f45 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sat, 7 Oct 2023 18:03:04 +0200 Subject: [PATCH 203/251] Update egg-t-s3-manager.json --- voice_servers/ts3_manager/egg-t-s3-manager.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/voice_servers/ts3_manager/egg-t-s3-manager.json b/voice_servers/ts3_manager/egg-t-s3-manager.json index f4bdc7dc..369f0963 100644 --- a/voice_servers/ts3_manager/egg-t-s3-manager.json +++ b/voice_servers/ts3_manager/egg-t-s3-manager.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-07T08:41:21+02:00", + "exported_at": "2023-10-07T18:01:49+02:00", "name": "TS3 Manager", "author": "eggs@goover.dev", "description": "The Open Source Webinterface For TeamSpeak Servers", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# Valheim Installation Script\r\n\r\n## install needed packages\r\napt update\r\napt install -y git unzip jq wget tar curl\r\n\r\n## env\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", + "script": "#!\/bin\/bash\r\n\r\n## install needed packages\r\napt update\r\napt install -y git unzip jq wget tar curl\r\n\r\n## env\r\nexport HOME=\/mnt\/server\r\ncd $HOME\r\n\r\n## get release info and download links\r\nLATEST_RELEASE=$(curl -L -s -H 'Accept: application\/json' https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/latest)\r\nLATEST_VERSION=$(echo $LATEST_RELEASE | sed -e 's\/.*\"tag_name\":\"\\([^\"]*\\)\".*\/\\1\/')\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/$LATEST_VERSION\/$MATCH-$LATEST_VERSION\"\r\nelse \r\n DOWNLOAD_LINK=\"https:\/\/github.com\/${GITHUB_PACKAGE}\/releases\/download\/v$VERSION\/$MATCH-$VERSION-v$VERSION\"\r\nfi\r\n\r\necho $DOWNLOAD_LINK\r\nwget $DOWNLOAD_LINK\r\n\r\nif [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n mv -f $MATCH-$LATEST_VERSION $HOME\/start_ts3-manager\r\n chmod +x start_ts3-manager\r\nelse\r\n mv -f $MATCH-v$VERSION $HOME\/start_ts3-manager\r\n chmod start_ts3-manager\r\nfi\r\n\r\necho \"-------------------------------------------------------\"\r\necho \"Installation completed\"\r\necho \"-------------------------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } From 0065fbf8cf24578d3b23fd9b6734de768bffc515 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Mon, 9 Oct 2023 19:07:39 +0200 Subject: [PATCH 204/251] Installation and update significantly simplified --- software/uptime-kuma/egg-uptime-kuma.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/software/uptime-kuma/egg-uptime-kuma.json b/software/uptime-kuma/egg-uptime-kuma.json index ced614ae..bf756329 100644 --- a/software/uptime-kuma/egg-uptime-kuma.json +++ b/software/uptime-kuma/egg-uptime-kuma.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-01T10:06:16+02:00", + "exported_at": "2023-10-09T19:06:53+02:00", "name": "Uptime Kuma", "author": "eggs@goover.dev", "description": "Uptime Kuma is an easy-to-use self-hosted monitoring tool.", @@ -13,7 +13,7 @@ "ghcr.io\/parkervcp\/apps:uptimekuma": "ghcr.io\/parkervcp\/apps:uptimekuma" }, "file_denylist": [], - "startup": "node \/home\/container\/server\/server.js --port={{SERVER_PORT}}", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then npm run setup; fi; \/usr\/local\/bin\/node \/home\/container\/server\/server.js --port={{SERVER_PORT}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"[SERVER] INFO: Listening on \"\r\n}", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\n\r\nif [ -d \"\/mnt\/server\/node_modules\" ]; then\r\n rm -fR \/mnt\/server\/node_modules\r\n npm cache verify\r\nfi\r\n\r\nnpm install -g npm@latest\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\n## pull git js repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\n## add below your custom commands if needed\r\ncd \/mnt\/server\r\nmkdir -p \/mnt\/server\/data\r\ngit config --global --add safe.directory \/mnt\/server\r\n\r\nnpm run setup\r\n\r\nif [ ! -f \"\/mnt\/server\/data\/kuma.db\" ]; then\r\n cp \/mnt\/server\/db\/kuma.db \/mnt\/server\/data\/kuma.db\r\nfi\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", + "script": "#!\/bin\/ash\r\n# Uptime Kuma App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add --no-cache git curl jq file unzip make gcc g++ python3 python3-dev libtool\r\napk add --no-cache git-lfs --repository=https:\/\/dl-cdn.alpinelinux.org\/alpine\/latest-stable\/community\r\n\r\n## npm update to latest\r\necho -e \"Updating npm to latest....\\n\"\r\nif [ -d \"\/mnt\/server\/node_modules\" ]; then\r\n rm -fR \/mnt\/server\/node_modules\r\n npm cache verify\r\nfi\r\nnpm install -g npm@latest\r\n\r\n## Uptime Kuma install & update\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\ngit config --global --add safe.directory \/mnt\/server\r\n\r\nif [ -d .git ]; then\r\n echo -e \"Updating Uptime Kuma....\\n \"\r\n npm run setup\r\nelse\r\n echo -e \"Download and installing Uptime Kuma...\\n\" \r\n git clone https:\/\/github.com\/louislam\/uptime-kuma.git .\r\n npm run setup\r\nfi\r\n\r\n## only create dir, when .git is present to prevent errors\r\nif [ -d .git ]; then\r\n mkdir -p \/mnt\/server\/data\r\nfi\r\n\r\nif [ ! -f \"\/mnt\/server\/data\/kuma.db\" ]; then\r\n cp \/mnt\/server\/db\/kuma.db \/mnt\/server\/data\/kuma.db\r\nfi\r\n\r\n## install end\r\necho -e \"-----------------------------------------\"\r\necho -e \"Installation completed...\"\r\necho -e \"-----------------------------------------\"\r\nexit 0", "container": "node:18-alpine", "entrypoint": "ash" } @@ -47,6 +47,16 @@ "user_editable": false, "rules": "required|string", "field_type": "text" + }, + { + "name": "Auto Update", + "description": "", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" } ] } \ No newline at end of file From 473869b1f0dc27674beb0ea94a200043b9d0ad8d Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 06:34:21 +0200 Subject: [PATCH 205/251] add the Front --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 + game_eggs/steamcmd_servers/thefront/README.md | 34 +++ .../thefront/egg-the-front.json | 234 ++++++++++++++++++ 5 files changed, 274 insertions(+) create mode 100644 game_eggs/steamcmd_servers/thefront/README.md create mode 100644 game_eggs/steamcmd_servers/thefront/egg-the-front.json diff --git a/README.md b/README.md index afc174a2..6c4ea914 100644 --- a/README.md +++ b/README.md @@ -309,6 +309,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Sven Co-op](game_eggs/steamcmd_servers/svencoop) * [Swords 'n Magic and Stuff](game_eggs/steamcmd_servers/swords_'n_Magic_and_Stuff) * [The Forest](game_eggs/steamcmd_servers/the_forest) +* [The Front](game_eggs/steamcmd_servers/thefront) * [The Isle](game_eggs/steamcmd_servers/the_isle) * [Evrima](game_eggs/steamcmd_servers/the_isle/evrima) * [Team Fortress 2 Classic](game_eggs/steamcmd_servers/team_fortress_2_classic) diff --git a/game_eggs/README.md b/game_eggs/README.md index c3f173c3..12c49244 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -206,6 +206,7 @@ * [Swords 'n Magic and Stuff](steamcmd_servers/swords_'n_Magic_and_Stuff) * [Team Fortress 2 Classic](steamcmd_servers/team_fortress_2_classic) * [The Forest](steamcmd_servers/the_forest) +* [The Front](steamcmd_servers/thefront) * [The Isle](steamcmd_servers/the_isle) * [Evrima](steamcmd_servers/the_isle/evrima) * [Tower Unite](steamcmd_servers/tower_unite) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 6d1882ee..13f7182f 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -258,6 +258,10 @@ This is a collection of servers that use SteamCMD to install. [The Forest](the_forest) +## The Front + +[The Front](thefront) + ## The Isle [The Isle](the_isle) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md new file mode 100644 index 00000000..0c38cf38 --- /dev/null +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -0,0 +1,34 @@ +# The Front + +## Author & Contributers +| Name | Github Profile | Buy me a Coffee | +| ------------- |-------------|-------------| +| gOOvER | https://github.com/gOOvER | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B351D0Q) | + +## Special Thanks +Special thanks to [KRServers] (https://krservers.de/) for spending me the Key + +## The Front + +The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire. + +Steam: https://store.steampowered.com/app/2285150/The_Front/ + +## Server Ports + +The Server needs 4 Ports. You can choose every Port you want + +| Port | default | +|-------|---------| +| Game | 27015 | +| Beacon | 27016 | +| Query | 27017 | +| ShutDownService | 27018 | + +## Updating the Server + +Until the devs fix their linux server, you must reinstall the server on every update. Autoupdate is disabled and should NOT activated, because it can break your installation. + +## Hardware + +You need a min of 10GB for the Server. \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/thefront/egg-the-front.json b/game_eggs/steamcmd_servers/thefront/egg-the-front.json new file mode 100644 index 00000000..5332b415 --- /dev/null +++ b/game_eggs/steamcmd_servers/thefront/egg-the-front.json @@ -0,0 +1,234 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-10-15T06:21:09+02:00", + "name": "The Front", + "author": "eggs@goover.dev", + "description": "The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" + }, + "file_denylist": [], + "startup": ".\/ProjectWar\/Binaries\/Linux\/TheFrontServer ProjectWar_Start?DedicatedServer?MaxPlayers={{MAX_PLAYERS}} -server -game -log -ServerTags={{SRV_TAGS}} -UseSteamSocket={{STEAMSOCKET}} -Port=\"{{SERVER_PORT}}\" -BeaconPort=\"{{BEACON_PORT}}\" -ShutDownServicePort=\"{{SHUTDOWN_PORT}}\" -QueryPort=\"{{QUERY_PORT}}\" -ConfigServerName=\"{{CFG_NAME}}\" -OutIPAddress={{SERVER_IP}} -UserDir=\"\/home\/container\/TheFrontManager\/{{CFG_NAME}}\/\" -ServerName=\"{{SRV_NAME}}\" -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -Game.PhysicsVehicle=false -ansimalloc -Game.MaxFrameRate=35 -MaxQueueSize=50 -QueueValidTime=120 -QueueThreshold={{MAX_PLAYERS}} -ServerFightModeType={{GAMEMODE}} -IsCanSelfDamage={{SELFDMG}} -IsCanFriendDamage={{DMGALLIES}} -SaveWorldInterval={{SRV_SAVETIME}} -GMOverlapRatio=2 -GreenHand={{GREENHAND}} -SensitiveWords={{SENSITIVE_WORDS}} -UseACE={{ANTI_CHEAT}} -ServerAdminAccounts={{SRV_ADMIN}} -IsShowGmTitle={{ADMIN_LABEL}} -ServerPassword={{SRV_PW}}", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"LogLoad: (Engine Initialization) \"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#rm -fR \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/*\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update 1007 validate +quit\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +download_depot 2334200 2334201 +quit\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nrm -fR \/mnt\/server\/ProjectWar\r\nrm -fR \/mnt\/server\/Engine\r\nmv -f \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/depot_2334201\/* \/mnt\/server\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "[SERVER] Server Name", + "description": "no spaces und special signs", + "env_variable": "SRV_NAME", + "default_value": "Pterodactyl hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "[SERVER] Max Players", + "description": "The max number of players on your server.", + "env_variable": "MAX_PLAYERS", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:1,80", + "field_type": "text" + }, + { + "name": "[SERVER] Config Name", + "description": "Name of the savefile. NO SPACE or SPECIAL signs", + "env_variable": "CFG_NAME", + "default_value": "new", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "[SERVER] Server Password", + "description": "", + "env_variable": "SRV_PW", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable", + "field_type": "text" + }, + { + "name": "[SERVER] PvE", + "description": "off = PvP; on = PvE", + "env_variable": "GAMEMODE", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "[SERVER] Use Steam Socket", + "description": "Use Steam servers for network penetration. Enable this if you don't have a public IP but you want to allow players from outside your network to join your server. If disabled, only you and other players on your LAN can join. If you have a public IP, you do not need to enable this. Enabling this feature will affect latency. When Steam servers are busy, you may not be able to join this server.", + "env_variable": "STEAMSOCKET", + "default_value": "0", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "[SERVER] Damage self?", + "description": "Allows players to damage themselves.", + "env_variable": "SELFDMG", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[SERVER] Damage allies?", + "description": "Allows squadmates to damage each other.", + "env_variable": "DMGALLIES", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[SERVER] Server Admins", + "description": "Enter a 17-digit Steam ID. Use semicolons between each ID. GM level defaults to highest level (Lv. 25)", + "env_variable": "SRV_ADMIN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "[ADVANCED] Label admin", + "description": "Toggles special admin icon.", + "env_variable": "ADMIN_LABEL", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[ADVANCED] Server save interval", + "description": "Server archive interval (in seconds)", + "env_variable": "SRV_SAVETIME", + "default_value": "300", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|between:150,600", + "field_type": "text" + }, + { + "name": "[ADVANCED] Enable novice protection?", + "description": "When enabled, new characters will receive novice protection.", + "env_variable": "GREENHAND", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[ADVANCED] Server Tags", + "description": "MAX 5 -> \r\n\r\n0= PVP | \r\n1= PVE | \r\n2= EXP Multiplikator | \r\n3= GatheringRate | \r\n4= KeepInventory | \r\n5= 45d wipe | \r\n6= 15d wipe | \r\n7= 30d wipe | \r\n8= 60d wipe |", + "env_variable": "SRV_TAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable", + "field_type": "text" + }, + { + "name": "[ADVANCED] Enable anticheat?", + "description": "Toggles anticheat.", + "env_variable": "ANTI_CHEAT", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[ADVANCED] Enable profanity?", + "description": "When disable, profanity will be blocked.", + "env_variable": "SENSITIVE_WORDS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[SERVER] Auto Update", + "description": "NOTICE: IT will Download the Files on every START \/ RESTART and use a lot of", + "env_variable": "AUTO_UPDATE", + "default_value": "0", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "[SYSTEM] SRCDS_APPID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "2334200", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "[SERVER] BeaconPort", + "description": "port+1", + "env_variable": "BEACON_PORT", + "default_value": "27016", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "[SERVER] QueryPort", + "description": "port+2", + "env_variable": "QUERY_PORT", + "default_value": "27017", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "[SERVER] ShutDownServicePort", + "description": "port +3", + "env_variable": "SHUTDOWN_PORT", + "default_value": "27017", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + } + ] +} \ No newline at end of file From 5907c3c1837340fed0ad127c84496ec9172e38e4 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 06:45:28 +0200 Subject: [PATCH 206/251] add special note --- game_eggs/steamcmd_servers/thefront/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md index 0c38cf38..20fb9d9d 100644 --- a/game_eggs/steamcmd_servers/thefront/README.md +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -9,13 +9,11 @@ Special thanks to [KRServers] (https://krservers.de/) for spending me the Key ## The Front - The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire. Steam: https://store.steampowered.com/app/2285150/The_Front/ ## Server Ports - The Server needs 4 Ports. You can choose every Port you want | Port | default | @@ -26,9 +24,10 @@ The Server needs 4 Ports. You can choose every Port you want | ShutDownService | 27018 | ## Updating the Server - Until the devs fix their linux server, you must reinstall the server on every update. Autoupdate is disabled and should NOT activated, because it can break your installation. ## Hardware +You need a min of 10GB for the Server. -You need a min of 10GB for the Server. \ No newline at end of file +## Special Note +DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag be be everytime the LAST flag \ No newline at end of file From 95d412610606af7908bd492843af71d7e23c9653 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 06:46:26 +0200 Subject: [PATCH 207/251] typo --- game_eggs/steamcmd_servers/thefront/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md index 20fb9d9d..0aaf001a 100644 --- a/game_eggs/steamcmd_servers/thefront/README.md +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -30,4 +30,4 @@ Until the devs fix their linux server, you must reinstall the server on every up You need a min of 10GB for the Server. ## Special Note -DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag be be everytime the LAST flag \ No newline at end of file +DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag \ No newline at end of file From 460ffcc347dada2f74b12840b37a88abe14a0507 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 07:50:18 +0200 Subject: [PATCH 208/251] add note for Server Tags --- game_eggs/steamcmd_servers/thefront/README.md | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md index 0aaf001a..56e1c8a2 100644 --- a/game_eggs/steamcmd_servers/thefront/README.md +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -30,4 +30,22 @@ Until the devs fix their linux server, you must reinstall the server on every up You need a min of 10GB for the Server. ## Special Note -DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag \ No newline at end of file +DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag + +## Server Tags + +You can use Server Tags with this Egg. But max is 5 + +To be used in the variable as follows: 0,1,2,3,4 + +Available Server Tags + +0 = PVP +1 = PVE +2 = EXP Multiplikator +3 = GatheringRate +4 = KeepInventory +5 = 45d wipe +6 = 15d wipe +7 = 30d wipe +8 = 60d wipe \ No newline at end of file From 57cb3be5760562c42f376f387d961606a3bef538 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 08:09:36 +0200 Subject: [PATCH 209/251] some fixes --- game_eggs/steamcmd_servers/thefront/README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md index 56e1c8a2..b1ee4de0 100644 --- a/game_eggs/steamcmd_servers/thefront/README.md +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -2,11 +2,11 @@ ## Author & Contributers | Name | Github Profile | Buy me a Coffee | -| ------------- |-------------|-------------| -| gOOvER | https://github.com/gOOvER | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/B0B351D0Q) | +|:-------------:|:-------------:|:-------------:| +| gOOvER | https://github.com/gOOvER | [Donate](https://www.paypal.com/donate/?hosted_button_id=83JB2X6H7DHXJ) | ## Special Thanks -Special thanks to [KRServers] (https://krservers.de/) for spending me the Key +Special thanks to [KRServers](https://krservers.de/) for spending me the Key ## The Front The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire. @@ -30,17 +30,18 @@ Until the devs fix their linux server, you must reinstall the server on every up You need a min of 10GB for the Server. ## Special Note -DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag +> [!WARNING] +> DO NOT ADD STARTUP FLAGS AFTER THE SERVER PASSWORD FLAG, else you are not longer able to login into your server. The Passwort Flag MUST be everytime the LAST flag + ## Server Tags - You can use Server Tags with this Egg. But max is 5 -To be used in the variable as follows: 0,1,2,3,4 +To be used in the variable as follows: `0,1,2,3,4` Available Server Tags -0 = PVP +0 = PVP 1 = PVE 2 = EXP Multiplikator 3 = GatheringRate @@ -48,4 +49,4 @@ Available Server Tags 5 = 45d wipe 6 = 15d wipe 7 = 30d wipe -8 = 60d wipe \ No newline at end of file +8 = 60d wipeTo be used in the variable as follows: \ No newline at end of file From 34029f5c1f78e2c33a7e46e4a4fbbfa03627cce6 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Sun, 15 Oct 2023 15:18:49 +0200 Subject: [PATCH 210/251] add troubleshooting --- game_eggs/steamcmd_servers/thefront/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/thefront/README.md b/game_eggs/steamcmd_servers/thefront/README.md index b1ee4de0..089df2bc 100644 --- a/game_eggs/steamcmd_servers/thefront/README.md +++ b/game_eggs/steamcmd_servers/thefront/README.md @@ -49,4 +49,10 @@ Available Server Tags 5 = 45d wipe 6 = 15d wipe 7 = 30d wipe -8 = 60d wipeTo be used in the variable as follows: \ No newline at end of file +8 = 60d wipe + +## Troubleshooting + +- I get the error "**Server Connection has expired!**" + - Allocate and open all ports in your Firewall. + From 6a2a625a8cb31bc9624f47cfe7fad5b184c85858 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:01:39 +0200 Subject: [PATCH 211/251] updated startup and updated installscript --- .../steamcmd_servers/thefront/egg-the-front.json | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/thefront/egg-the-front.json b/game_eggs/steamcmd_servers/thefront/egg-the-front.json index 5332b415..60397c46 100644 --- a/game_eggs/steamcmd_servers/thefront/egg-the-front.json +++ b/game_eggs/steamcmd_servers/thefront/egg-the-front.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-15T06:21:09+02:00", + "exported_at": "2023-10-18T15:00:33+02:00", "name": "The Front", "author": "eggs@goover.dev", "description": "The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:debian": "ghcr.io\/parkervcp\/steamcmd:debian" }, "file_denylist": [], - "startup": ".\/ProjectWar\/Binaries\/Linux\/TheFrontServer ProjectWar_Start?DedicatedServer?MaxPlayers={{MAX_PLAYERS}} -server -game -log -ServerTags={{SRV_TAGS}} -UseSteamSocket={{STEAMSOCKET}} -Port=\"{{SERVER_PORT}}\" -BeaconPort=\"{{BEACON_PORT}}\" -ShutDownServicePort=\"{{SHUTDOWN_PORT}}\" -QueryPort=\"{{QUERY_PORT}}\" -ConfigServerName=\"{{CFG_NAME}}\" -OutIPAddress={{SERVER_IP}} -UserDir=\"\/home\/container\/TheFrontManager\/{{CFG_NAME}}\/\" -ServerName=\"{{SRV_NAME}}\" -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -Game.PhysicsVehicle=false -ansimalloc -Game.MaxFrameRate=35 -MaxQueueSize=50 -QueueValidTime=120 -QueueThreshold={{MAX_PLAYERS}} -ServerFightModeType={{GAMEMODE}} -IsCanSelfDamage={{SELFDMG}} -IsCanFriendDamage={{DMGALLIES}} -SaveWorldInterval={{SRV_SAVETIME}} -GMOverlapRatio=2 -GreenHand={{GREENHAND}} -SensitiveWords={{SENSITIVE_WORDS}} -UseACE={{ANTI_CHEAT}} -ServerAdminAccounts={{SRV_ADMIN}} -IsShowGmTitle={{ADMIN_LABEL}} -ServerPassword={{SRV_PW}}", + "startup": ".\/ProjectWar\/Binaries\/Linux\/TheFrontServer ProjectWar_Start?DedicatedServer -server -game -log -ServerTags=\"{{SRV_TAGS}}\" -UseSteamSocket={{STEAMSOCKET}} -Port=\"{{SERVER_PORT}}\" -BeaconPort=\"{{BEACON_PORT}}\" -ShutDownServicePort=\"{{SHUTDOWN_PORT}}\" -QueryPort=\"{{QUERY_PORT}}\" -ConfigServerName=\"{{CFG_NAME}}\" -OutIPAddress={{SERVER_IP}} -UserDir=\"\/home\/container\/TheFrontManager\/{{CFG_NAME}}\/\" -ServerName=\"{{SRV_NAME}}\" -EnableParallelCharacterMovementTickFunction -EnableParallelCharacterTickFunction -UseDynamicPhysicsScene -Game.PhysicsVehicle=false -ansimalloc -Game.MaxFrameRate=35 -MaxQueueSize=50 -QueueValidTime=120 -QueueThreshold={{MAX_PLAYERS}} -ServerFightModeType={{GAMEMODE}} -IsCanSelfDamage={{SELFDMG}} -IsCanFriendDamage={{DMGALLIES}} -SaveWorldInterval={{SRV_SAVETIME}} -GMOverlapRatio=2 -GreenHand={{GREENHAND}} -SensitiveWords={{SENSITIVE_WORDS}} -UseACE={{ANTI_CHEAT}} -ServerAdminAccounts={{SRV_ADMIN}} -IsShowGmTitle={{ADMIN_LABEL}} -ServerPassword={{SRV_PW}}", "config": { "files": "{}", "startup": "{\r\n \"done\": \"LogLoad: (Engine Initialization) \"\r\n}", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#rm -fR \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/*\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +app_update 1007 validate +quit\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login anonymous +download_depot 2334200 2334201 +quit\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nrm -fR \/mnt\/server\/ProjectWar\r\nrm -fR \/mnt\/server\/Engine\r\nmv -f \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/depot_2334201\/* \/mnt\/server\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nrm -fR \/mnt\/server\/ProjectWar\r\nrm -fR \/mnt\/server\/Engine\r\nmv -f \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/depot_2334201\/* \/mnt\/server\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -229,6 +229,16 @@ "user_editable": false, "rules": "required|integer|between:1024,65536", "field_type": "text" + }, + { + "name": "WINDOWS_INSTALL", + "description": "DO NOT REMOVE !!!", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" } ] } \ No newline at end of file From 8139e5cede51c815694978551c01094bd26a905e Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:25:59 +0200 Subject: [PATCH 212/251] fioxed autoupdate description and enable it again --- game_eggs/steamcmd_servers/thefront/egg-the-front.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/thefront/egg-the-front.json b/game_eggs/steamcmd_servers/thefront/egg-the-front.json index 60397c46..54a202f1 100644 --- a/game_eggs/steamcmd_servers/thefront/egg-the-front.json +++ b/game_eggs/steamcmd_servers/thefront/egg-the-front.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-18T15:00:33+02:00", + "exported_at": "2023-10-18T15:25:17+02:00", "name": "The Front", "author": "eggs@goover.dev", "description": "The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.", @@ -182,11 +182,11 @@ }, { "name": "[SERVER] Auto Update", - "description": "NOTICE: IT will Download the Files on every START \/ RESTART and use a lot of", + "description": "Autoupdate your Server on start\/restart", "env_variable": "AUTO_UPDATE", "default_value": "0", - "user_viewable": false, - "user_editable": false, + "user_viewable": true, + "user_editable": true, "rules": "required|boolean", "field_type": "text" }, From fc6693dccc89a04cd8ecaef8262b9571a5fee338 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Wed, 18 Oct 2023 15:47:00 +0200 Subject: [PATCH 213/251] missed to delete the rm line :P --- game_eggs/steamcmd_servers/thefront/egg-the-front.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/thefront/egg-the-front.json b/game_eggs/steamcmd_servers/thefront/egg-the-front.json index 54a202f1..0c8c8a8a 100644 --- a/game_eggs/steamcmd_servers/thefront/egg-the-front.json +++ b/game_eggs/steamcmd_servers/thefront/egg-the-front.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-18T15:25:17+02:00", + "exported_at": "2023-10-18T15:46:21+02:00", "name": "The Front", "author": "eggs@goover.dev", "description": "The Front is a survival open-world crafting shooter. You play the role of a resistance fighter sent back in time to stop the rise of a tyrannical empire.", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\nrm -fR \/mnt\/server\/ProjectWar\r\nrm -fR \/mnt\/server\/Engine\r\nmv -f \/mnt\/server\/steamcmd\/linux32\/steamapps\/content\/app_2334200\/depot_2334201\/* \/mnt\/server\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}The Front Installscript${NC}\"\r\necho -e \"${YELLOW}Egg by gOOvER | https:\/\/goover.dev${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates jq dos2unix\r\n\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}download and install steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## install game using steamcmd\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${YELLOW}install game using steamcmd. please wait...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update 1007 +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\necho -e \"${GREEN}..done..${NC}\"\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## install end\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"\r\necho -e \"${GREEN}Installation completed...${NC}\"\r\necho -e \"${BLUE}-------------------------------------------------${NC}\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } From 482e3dee31eff1c84a022bd0a6bb34aeb1599f03 Mon Sep 17 00:00:00 2001 From: gOOvER <116325+gOOvER@users.noreply.github.com> Date: Wed, 18 Oct 2023 18:01:54 +0200 Subject: [PATCH 214/251] update soft --- .../egg-sons-of-the-forest.json | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json index 789d688c..fd3ca54c 100644 --- a/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json +++ b/game_eggs/steamcmd_servers/sonsoftheforest/egg-sons-of-the-forest.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-07-23T04:57:30-04:00", + "exported_at": "2023-10-18T18:00:26+02:00", "name": "Sons Of The Forest", "author": "eggs@goover.dev", "description": "Sons of the Forest is a horror survival game and sequel to The Forest by Endnight Games, Ltd.. Sent to find a missing billionaire on a remote island, you find yourself in a cannibal-infested hellscape. Craft, build, and struggle to survive, alone or with friends.", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], "startup": "wine .\/SonsOfTheForestDS.exe -userdatapath \"\/home\/container\/serverconfig\" -dedicatedserver.IpAddress \"0.0.0.0\" -dedicatedserver.GamePort \"{{SERVER_PORT}}\" -dedicatedserver.QueryPort \"{{QUERY_PORT}}\" -dedicatedserver.BlobSyncPort \"{{BLOBSYNC_PORT}}\" -dedicatedserver.MaxPlayers \"{{MAX_PLAYERS}}\" -dedicatedserver.Password \"{{SRV_PW}}\" -dedicatedserver.GameMode \"{{GAME_MODE}}\" -dedicatedserver.SkipNetworkAccessibilityTest \"{{SKIP_TESTS}}\" -dedicatedserver.LogFilesEnabled \"true\" -dedicatedserver.TimestampLogFilenames \"true\"", @@ -100,16 +100,6 @@ "rules": "required|boolean", "field_type": "text" }, - { - "name": "Skip network Test", - "description": "if you have problems to connect to your server, set this to TRUE", - "env_variable": "SKIP_TESTS", - "default_value": "false", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, { "name": "SRCDS_APPID", "description": "", @@ -157,7 +147,7 @@ "default_value": "mono vcrun2019", "user_viewable": false, "user_editable": false, - "rules": "required|string|max:20", + "rules": "required|string", "field_type": "text" }, { @@ -169,6 +159,16 @@ "user_editable": false, "rules": "required|string|max:20", "field_type": "text" + }, + { + "name": "Skip network Test", + "description": "if you have problems to connect to your server, set this to TRUE", + "env_variable": "SKIP_TESTS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" } ] -} +} \ No newline at end of file From 10645f72827cc3365694e757fe2f8bb48f16eca2 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 19 Oct 2023 18:53:59 +0200 Subject: [PATCH 215/251] Update SAMP Update samp for there new url and version numbering --- game_eggs/gta/samp/egg-s-a--m-p.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/gta/samp/egg-s-a--m-p.json b/game_eggs/gta/samp/egg-s-a--m-p.json index 08465d94..097d4322 100644 --- a/game_eggs/gta/samp/egg-s-a--m-p.json +++ b/game_eggs/gta/samp/egg-s-a--m-p.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-02-08T14:50:39+01:00", + "exported_at": "2023-10-19T18:53:04+02:00", "name": "SA-MP", "author": "bl4ckspr4y@protonmail.com", "description": "SA-MP is a free Massively Multiplayer Online game mod for the PC version of Rockstar Games Grand Theft Auto: San Andreas (tm).", @@ -22,7 +22,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\ncd \/tmp || exit\r\necho \"running: curl -sSL -o samp.tar.gz http:\/\/files.sa-mp.com\/samp037svr_${VERSION}.tar.gz\"\r\ncurl -sSL -o samp.tar.gz http:\/\/files.sa-mp.com\/samp037svr_\"${VERSION}\".tar.gz\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf samp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\nsed -i '3d' \/mnt\/server\/server.cfg\r\necho \"rcon_password ${RCON_PASS}\" >> \/mnt\/server\/server.cfg\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "script": "#!\/bin\/bash\r\n\r\n# Check if VERSION is set and starts with an uppercase \"R\"\r\nif [[ -n \"$VERSION\" && \"$VERSION\" == R* ]]; then\r\n VERSION=\"0.3.7\"\r\n echo \"Updated VERSION: $VERSION\"\r\nfi\r\n\r\ncd \/tmp || exit\r\necho \"running: curl -sSL -o samp.tar.gz https:\/\/sampcenter.com\/download\/server\/linux\/${VERSION}.tar.gz\"\r\ncurl -sSL -o samp.tar.gz https:\/\/sampcenter.com\/download\/server\/linux\/${VERSION}.tar.gz\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xzvf samp.tar.gz --strip-components=1 -C \/mnt\/server\/\r\n\r\ncd \/mnt\/server || exit\r\n\r\nsed -i '3d' \/mnt\/server\/server.cfg\r\necho \"rcon_password ${RCON_PASS}\" >> \/mnt\/server\/server.cfg\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -30,9 +30,9 @@ "variables": [ { "name": "Version", - "description": "example: if the download url is http:\/\/files.sa-mp.com\/samp037svr_R2-1.tar.gz then the variable should be: `R2-1`", + "description": "Example: if the download url is https:\/\/sampcenter.com\/download\/server\/linux\/0.3.7.tar.gz then the variable should be: `0.3.7`", "env_variable": "Version", - "default_value": "R2-1", + "default_value": "0.3.7", "user_viewable": true, "user_editable": true, "rules": "required|string|max:32", From 1378cbddaf140f8216705cfa9d86d318226b6a03 Mon Sep 17 00:00:00 2001 From: TylerSerafin Date: Thu, 19 Oct 2023 22:22:48 -0500 Subject: [PATCH 216/251] Update README.md to link to appropriate repo Updates README.,d to link to appropriate repo for support, as the main ValheimPlus repo is no longer being used, and it should link to Grantapher's now. --- game_eggs/steamcmd_servers/valheim/valheim_plus/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md b/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md index 66427737..d9e7f379 100644 --- a/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md +++ b/game_eggs/steamcmd_servers/valheim/valheim_plus/README.md @@ -14,7 +14,7 @@ https://store.steampowered.com/app/892970/Valheim/ ## Plus Mod A HarmonyX Mod aimed at improving the gameplay quality of Valheim. The mod includes several different main features including modifiers to ingame stats of players, buildings and entities and a sophisticated system to build and place objects with high precision and a system to modify already placed objects with high precision. The general goal is to provide V+ as a base modification for your gameplay to increase quality of life, change difficulty or have a better experience in general. The mod also comes with a version and configuration control system for servers and users, allowing servers to make sure that only people with the same configuration are able to join their servers. -Support: https://github.com/valheimPlus/ValheimPlus +Support: https://github.com/Grantapher/ValheimPlus Discord: https://discord.gg/AmH6Va97GT ***!!! ATTENTION !!!*** From 68ef678f7e950ecc33a2919ad44d7e28d82b62df Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Sat, 21 Oct 2023 17:25:07 +0200 Subject: [PATCH 217/251] add Mount & Blade II: Bannerlord --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 + .../mount_blade_II_bannerlord/README.md | 29 +++++ .../egg-mount--blade-i-i--bannerlord.json | 112 ++++++++++++++++++ 5 files changed, 147 insertions(+) create mode 100644 game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md create mode 100644 game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json diff --git a/README.md b/README.md index 6c4ea914..94682d14 100644 --- a/README.md +++ b/README.md @@ -273,6 +273,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Left 4 Dead 2](game_eggs/steamcmd_servers/left4dead_2) * [Modiverse](game_eggs/steamcmd_servers/modiverse) * [Mordhau](game_eggs/steamcmd_servers/mordhau) +* [Mount & Blade II: Bannerlord](game_eggs/steamcmd_servers/mount_blade_II_bannerlord) * [Neos VR](game_eggs/steamcmd_servers/neosvr) * [No More Room in Hell](game_eggs/steamcmd_servers/nmrih) * [No One Survived](game_eggs/steamcmd_servers/no_one_survived) diff --git a/game_eggs/README.md b/game_eggs/README.md index 12c49244..f504c1db 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -167,6 +167,7 @@ * [Left 4 Dead 2](steamcmd_servers/left4dead_2) * [Modiverse](steamcmd_servers/modiverse) * [Mordhau](steamcmd_servers/mordhau) +* [Mount & Blade II: Bannerlord](steamcmd_servers/mount_blade_II_bannerlord) * [Neos VR](steamcmd_servers/neosvr) * [No More Room in Hell](steamcmd_servers/nmrih) * [No One Survived](steamcmd_servers/no_one_survived) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 13f7182f..20a1ec08 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -130,6 +130,10 @@ This is a collection of servers that use SteamCMD to install. [Mordhau](mordhau) +## Mount & Blade II: Bannerlord + +[Mount & Blade II: Bannerlord](mount_blade_II_bannerlord) + ## Neos VR [Neos VR](neosvr) diff --git a/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md new file mode 100644 index 00000000..79943f81 --- /dev/null +++ b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/README.md @@ -0,0 +1,29 @@ +# Mount & Blade II: Bannerlord + +## [Documentation](https://moddocs.bannerlord.com/multiplayer/hosting_server/) + + +## Installation/System Requirements + +| | Bare Minimum | Recommended | +|---------|---------|---------| +| Processor | *AMD64 only* | *-* | +| RAM | *4 GiB* | *8 GiB* | +| Storage | *5 GiB* | *8 GiB* | +| Network | *60 packets to each player and each packet is less than 1.5 kilobytes* | *-* | +| Game Ownership | *Needed for the game token* | *-* | + +## Server Ports + +Ports required to run the server + +| Port | default | +|---------|---------| +| Game | 7210 (UDP) | + +### Notes + +You need to get your own AUTH token to run this server genertate by a offical client + +[YT](https://www.youtube.com/watch?v=9Hvuz12Bfzg) +[Docs](https://moddocs.bannerlord.com/multiplayer/hosting_server/#generating-a-token) \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json new file mode 100644 index 00000000..9061421c --- /dev/null +++ b/game_eggs/steamcmd_servers/mount_blade_II_bannerlord/egg-mount--blade-i-i--bannerlord.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-10-21T17:16:27+02:00", + "name": "Mount & Blade II: Bannerlord", + "author": "josdekurk@gmail.com", + "description": "A strategy\/action RPG. Create a character, engage in diplomacy, craft, trade and conquer new lands in a vast medieval sandbox. Raise armies to lead into battle and command and fight alongside your troops in massive real-time battles using a deep but intuitive skill-based combat system.", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" + }, + "file_denylist": [], + "startup": "cd \/home\/container\/bin\/Win64_Shipping_Server\/ && wine DedicatedCustomServer.Starter.exe \/port {{SERVER_PORT}} \/dedicatedcustomserverauthtoken \"{{AUTH_TOKEN}}\" \/dedicatedcustomserverconfigfile tdm_config.txt _MODULES_*Native*Multiplayer*DedicatedCustomServerHelper*_MODULES_", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"Custom Game server is ready! You can now enter console commands\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\nmkdir -p \/mnt\/server\/Modules\/Native\/\r\ncd \/mnt\/server\/Modules\/Native\/\r\n[ -f \"tdm_config.txt\" ] || curl -sSL -o \"tdm_config.txt\" \"https:\/\/pteropaste.com\/z67k16z608ty\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Windows", + "description": "", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "App id", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "1863440", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:1863440", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update the server on restart.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "[SYSTEM] WINEDEBUG", + "description": "don't change this !!!", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:64", + "field_type": "text" + }, + { + "name": "[SYSTEM] WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:32", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "vcrun2019 dotnet472", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Auth token", + "description": "See: https:\/\/www.youtube.com\/watch?v=9Hvuz12Bfzg", + "env_variable": "AUTH_TOKEN", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|", + "field_type": "text" + } + ] +} \ No newline at end of file From f87a17f0a54bdfe3f55139d5f2c2caa923d7eac1 Mon Sep 17 00:00:00 2001 From: Smith Date: Tue, 24 Oct 2023 17:07:31 +0200 Subject: [PATCH 218/251] enforce user to create min. 8 char secret --- bots/discord/game-server-watcher/egg-game-server-watcher.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json index 820675ce..0907c466 100644 --- a/bots/discord/game-server-watcher/egg-game-server-watcher.json +++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json @@ -32,10 +32,10 @@ "name": "SECRET", "description": "Admin secret", "env_variable": "SECRET", - "default_value": "secret", + "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|string|min:1|max:255", + "rules": "required|string|min:8|max:255", "field_type": "text" }, { From f597634a448e57baa6552b91cccd0b57f8d8a41f Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Tue, 24 Oct 2023 17:49:48 +0200 Subject: [PATCH 219/251] Typescript esm --- generic/nodejs/egg-node-js-generic.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/generic/nodejs/egg-node-js-generic.json b/generic/nodejs/egg-node-js-generic.json index 0b1dc2bb..d7418cca 100644 --- a/generic/nodejs/egg-node-js-generic.json +++ b/generic/nodejs/egg-node-js-generic.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-08-18T17:13:50+02:00", + "exported_at": "2023-10-24T17:44:31+02:00", "name": "node.js generic", "author": "parker@parkervcp.com", "description": "a generic node.js egg\r\n\r\nThis will clone a git repo. it defaults to master if no branch is specified.\r\n\r\nInstalls the node_modules on install. If you set user_upload then I assume you know what you are doing.", @@ -19,7 +19,7 @@ "Nodejs 12": "ghcr.io\/parkervcp\/yolks:nodejs_12" }, "file_denylist": [], - "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; else \/usr\/local\/bin\/ts-node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; fi", + "startup": "if [[ -d .git ]] && [[ {{AUTO_UPDATE}} == \"1\" ]]; then git pull; fi; if [[ ! -z ${NODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm install ${NODE_PACKAGES}; fi; if [[ ! -z ${UNNODE_PACKAGES} ]]; then \/usr\/local\/bin\/npm uninstall ${UNNODE_PACKAGES}; fi; if [ -f \/home\/container\/package.json ]; then \/usr\/local\/bin\/npm install; fi; if [[ \"${MAIN_FILE}\" == \"*.js\" ]]; then \/usr\/local\/bin\/node \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; else \/usr\/local\/bin\/ts-node --esm \"\/home\/container\/${MAIN_FILE}\" ${NODE_ARGS}; fi", "config": { "files": "{}", "startup": "{\r\n \"done\": [\r\n \"change this text 1\",\r\n \"change this text 2\"\r\n ]\r\n}", @@ -135,4 +135,4 @@ "field_type": "text" } ] -} +} \ No newline at end of file From a94274972b72a339cd59724f225b7ee4c91f523e Mon Sep 17 00:00:00 2001 From: Smith Date: Tue, 24 Oct 2023 18:34:57 +0200 Subject: [PATCH 220/251] upd. readme; re-export from panel --- bots/discord/game-server-watcher/README.md | 4 ++++ bots/discord/game-server-watcher/egg-game-server-watcher.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bots/discord/game-server-watcher/README.md b/bots/discord/game-server-watcher/README.md index 7e668c4c..76a877ad 100644 --- a/bots/discord/game-server-watcher/README.md +++ b/bots/discord/game-server-watcher/README.md @@ -16,3 +16,7 @@ Refer to the wiki on how to acquire tokens for: ## Server Ports GSW Control Panel requires one port for http traffic. (It can be any port.) + +| Port | default | +|---------|---------| +| Web | 8080 | diff --git a/bots/discord/game-server-watcher/egg-game-server-watcher.json b/bots/discord/game-server-watcher/egg-game-server-watcher.json index 0907c466..47cbaee8 100644 --- a/bots/discord/game-server-watcher/egg-game-server-watcher.json +++ b/bots/discord/game-server-watcher/egg-game-server-watcher.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-09-13T18:34:19+00:00", + "exported_at": "2023-10-24T16:33:47+00:00", "name": "Game Server Watcher", "author": "a-sync@devs.space", "description": "A simple discord\/telegram\/slack bot that can be hosted on a free service to monitor your game servers and players in style. \ud83d\ude0e", From 0c5ddb6ada4bb717973d435c5858622bfca7f1fa Mon Sep 17 00:00:00 2001 From: Smith Date: Tue, 24 Oct 2023 19:55:07 +0200 Subject: [PATCH 221/251] upd. default port: 8081 --- bots/discord/game-server-watcher/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bots/discord/game-server-watcher/README.md b/bots/discord/game-server-watcher/README.md index 76a877ad..5134102b 100644 --- a/bots/discord/game-server-watcher/README.md +++ b/bots/discord/game-server-watcher/README.md @@ -19,4 +19,4 @@ GSW Control Panel requires one port for http traffic. | Port | default | |---------|---------| -| Web | 8080 | +| Web | 8081 | From b53a031dcb9173e675222e0ff653b02100c30417 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 15:56:37 -0400 Subject: [PATCH 222/251] adds A:SA egg --- README.md | 1 + .../ark_survival_ascended/README.md | 23 +++ .../egg-ark--survival-ascended.json | 132 ++++++++++++++++++ 3 files changed, 156 insertions(+) create mode 100644 game_eggs/steamcmd_servers/ark_survival_ascended/README.md create mode 100644 game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json diff --git a/README.md b/README.md index 2992711c..f6816ec8 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,7 @@ If you are reading this it looks like you are looking to add an egg to your serv [SteamCMD Servers](game_eggs/steamcmd_servers) These eggs use SteamCMD to install * [7 Days to Die](game_eggs/steamcmd_servers/7_days_to_die) +* [ARK: Survival Ascneded](game_eggs/steamcmd_servers/ark_survival_ascended) * [ARK: Survival Evolved](game_eggs/steamcmd_servers/ark_survival_evolved) * [Arma](game_eggs/steamcmd_servers/arma) * [Arma 3](game_eggs/steamcmd_servers/arma/arma3) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md new file mode 100644 index 00000000..936742fa --- /dev/null +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -0,0 +1,23 @@ +# Ark: Survival Ascended + +Steam Description : +ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits! + +## Recommended server settings + +### Minimum RAM + +This server requires about 8-10GB of RAM to run with no players on a default map. + +See the following - + +## Server Ports + +Note: RCON is currently not docuemnted as of 10/28/2023 + +| Port | Default | +| --------------- | ------- | +| Game | 7777 | +| Raw UDP | 7778 | +| Query | 27015 | +| RCON (optional) | 27020 | diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json new file mode 100644 index 00000000..2036f8ad --- /dev/null +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -0,0 +1,132 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-10-28T14:43:36-04:00", + "name": "Ark: Survival Ascended", + "author": "blood@darkartsgaming.com", + "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" + }, + "file_denylist": [], + "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAG}} & ARK_PID=$! ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"tail: .\/ShooterGame\/Saved\/Logs\/ShooterGame.log: file truncated\"\r\n}", + "logs": "{}", + "stop": "^^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## create a symbolic link for loading mods\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\n\r\n## cleanup movies?\r\nmkdir -p \/mnt\/server\/ShooterGame\/Content\r\nrm -rf Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\ncd \/mnt\/server", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Server Map", + "description": "Available Maps: TheIsland_WP", + "env_variable": "SERVER_MAP", + "default_value": "TheIsland_WP", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "\"Unofficial\" dedicated server name", + "env_variable": "SESSION_NAME", + "default_value": "A Pterodactyl Hosted Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Auto-update server", + "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 1. Set to 1 to update", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Battle Eye", + "description": "Enable BattleEye\r\n\r\n0 to disable\r\n1 to enable\r\n\r\ndefault=\"1\"", + "env_variable": "BATTLE_EYE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "App ID", + "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.", + "env_variable": "SRCDS_APPID", + "default_value": "2430930", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|numeric", + "field_type": "text" + }, + { + "name": "Additional Arguments (PARAMS)", + "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -UseBattleEye -cossplay", + "env_variable": "ARGS_PARAMS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Specifies the maximum amount of players able to join the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "70", + "user_viewable": true, + "user_editable": true, + "rules": "numeric", + "field_type": "text" + }, + { + "name": "Server Admin Password", + "description": "", + "env_variable": "ARK_ADMIN_PASSWORD", + "default_value": "changeme", + "user_viewable": true, + "user_editable": true, + "rules": "required|alpha_dash|max:32", + "field_type": "text" + }, + { + "name": "Query Port", + "description": "ARK query port used by steam server browser and ark client server browser.", + "env_variable": "QUERY_PORT", + "default_value": "27015", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric", + "field_type": "text" + }, + { + "name": "Additional Arguments (FLAGS)", + "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -UseBattleEye -cossplay", + "env_variable": "ARGS_FLAGS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + } + ] +} \ No newline at end of file From 51152f9e082c88de0d44cb9bbe025730d0458261 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 16:03:23 -0400 Subject: [PATCH 223/251] spelling --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f6816ec8..588262d6 100644 --- a/README.md +++ b/README.md @@ -237,7 +237,7 @@ If you are reading this it looks like you are looking to add an egg to your serv [SteamCMD Servers](game_eggs/steamcmd_servers) These eggs use SteamCMD to install * [7 Days to Die](game_eggs/steamcmd_servers/7_days_to_die) -* [ARK: Survival Ascneded](game_eggs/steamcmd_servers/ark_survival_ascended) +* [ARK: Survival Ascended](game_eggs/steamcmd_servers/ark_survival_ascended) * [ARK: Survival Evolved](game_eggs/steamcmd_servers/ark_survival_evolved) * [Arma](game_eggs/steamcmd_servers/arma) * [Arma 3](game_eggs/steamcmd_servers/arma/arma3) From aa8ddd68bf1a84b94a20f6af25be6ac8868054f1 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 16:08:35 -0400 Subject: [PATCH 224/251] adds steam_disc_space as feature --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 2036f8ad..63ac31f0 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -8,7 +8,9 @@ "name": "Ark: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", - "features": null, + "features": [ + "steam_disk_space" + ], "docker_images": { "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, From 0e256a6ae98a074b794cad467c6dbfed54466d02 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 16:30:34 -0400 Subject: [PATCH 225/251] fixes FLAGS not being added --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 63ac31f0..fd496469 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAG}} & ARK_PID=$! ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", + "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", "config": { "files": "{}", "startup": "{\r\n \"done\": \"tail: .\/ShooterGame\/Saved\/Logs\/ShooterGame.log: file truncated\"\r\n}", From c6ac2d49d2e6d6d240f3997c5b0bfc5b8a2b50e1 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 17:49:18 -0400 Subject: [PATCH 226/251] - properly remove Movies in script - fixes names - adds links to additional README(s) - adds ServerPVE toggle - adds ServerPassword - adds sleep 15s for log files to allow for more accurate console logging - adds troubleshooting help to README --- game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 3 +- .../ark_survival_ascended/README.md | 9 ++++-- .../egg-ark--survival-ascended.json | 30 +++++++++++++++---- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/game_eggs/README.md b/game_eggs/README.md index f504c1db..84824ac7 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -130,6 +130,7 @@ [SteamCMD Servers](steamcmd_servers) These eggs use SteamCMD to install * [7 Days to Die](steamcmd_servers/7_days_to_die) +* [ARK: Survival Ascended](steamcmd_servers/ark_survival_ascended) * [ARK: Survival Evolved](steamcmd_servers/ark_survival_evolved) * [Arma](steamcmd_servers/arma) * [Arma 3](steamcmd_servers/arma/arma3) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 20a1ec08..6dd2034a 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -6,8 +6,9 @@ This is a collection of servers that use SteamCMD to install. [7 Days To Die](7_days_to_die) -## ARK: Survival Evolved +## ARK: Survival Ascended/Evolved +[ARK: Survival Ascended](ark_survival_asceneded) [ARK: Survival Evolved](ark_survival_evolved) ## Arma diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md index 936742fa..7ff69472 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -1,8 +1,13 @@ -# Ark: Survival Ascended +# ARK: Survival Ascended Steam Description : ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits! +## Troubleshooting + +Due to using `tail -F ...` to follow the current server log, we are unable to also detect crashing (server stopping). This is obvious when the CPU hits 0% and RAM is around 5MB. However, more details are available in the `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml` + + ## Recommended server settings ### Minimum RAM @@ -13,7 +18,7 @@ See the following - ## Server Ports -Note: RCON is currently not docuemnted as of 10/28/2023 +Note: RCON is currently not documented as of 10/28/2023 | Port | Default | | --------------- | ------- | diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index fd496469..f487ff83 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,8 +4,8 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-28T14:43:36-04:00", - "name": "Ark: Survival Ascended", + "exported_at": "2023-10-28T17:45:10-04:00", + "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", "features": [ @@ -15,16 +15,16 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", + "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )$( [ -z \"$SERVER_PASSWORD\" ] || printf %s '?ServerPassword={{SERVER_PASSWORD}}' ){{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; sleep 15 ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"tail: .\/ShooterGame\/Saved\/Logs\/ShooterGame.log: file truncated\"\r\n}", + "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", "logs": "{}", "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## create a symbolic link for loading mods\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\n\r\n## cleanup movies?\r\nmkdir -p \/mnt\/server\/ShooterGame\/Content\r\nrm -rf Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\ncd \/mnt\/server", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## create a symbolic link for loading mods\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\n\r\n## cleanup movies?\r\nrm -rf \/mnt\/server\/ShooterGame\/Content\/Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\ncd \/mnt\/server", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -129,6 +129,26 @@ "user_editable": true, "rules": "nullable|string", "field_type": "text" + }, + { + "name": "Server PvE", + "description": "player vs environment. default is player-vs-player", + "env_variable": "SERVER_PVE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "required password to enter the server, leave blank for public server", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" } ] } \ No newline at end of file From 4466587549fb4c0fbd66aacc9a759d938872bb9b Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 18:42:00 -0400 Subject: [PATCH 227/251] word phrasing in variable descriptions --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index f487ff83..ddcf70e5 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -52,7 +52,7 @@ }, { "name": "Auto-update server", - "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 1. Set to 1 to update", + "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 1. Set to 0 to disable automatic updates", "env_variable": "AUTO_UPDATE", "default_value": "1", "user_viewable": true, @@ -82,7 +82,7 @@ }, { "name": "Additional Arguments (PARAMS)", - "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -UseBattleEye -cossplay", + "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -crossplay -mods=1234,1235,1236", "env_variable": "ARGS_PARAMS", "default_value": "", "user_viewable": true, @@ -122,7 +122,7 @@ }, { "name": "Additional Arguments (FLAGS)", - "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -UseBattleEye -cossplay", + "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -crossplay -mods=1234,1235,1236", "env_variable": "ARGS_FLAGS", "default_value": "", "user_viewable": true, @@ -132,7 +132,7 @@ }, { "name": "Server PvE", - "description": "player vs environment. default is player-vs-player", + "description": "Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is PvE enabled; disabling will enable PvP", "env_variable": "SERVER_PVE", "default_value": "1", "user_viewable": true, From dbcd8b29c55542cd8f782323e87aac12aa4f91ec Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 18:59:03 -0400 Subject: [PATCH 228/251] final revision of argument descriptions --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index ddcf70e5..d2b062eb 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -82,7 +82,7 @@ }, { "name": "Additional Arguments (PARAMS)", - "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -crossplay -mods=1234,1235,1236", + "description": "params (?ServerPassword=...) are supported here but params need to be touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd", "env_variable": "ARGS_PARAMS", "default_value": "", "user_viewable": true, @@ -122,7 +122,7 @@ }, { "name": "Additional Arguments (FLAGS)", - "description": "params (?ServerPassword=...) and flags (-UseBattleEye) are supported here but params need to be first and touching followed by flags without them touching. (i.e): ?ServerPassword=MyP4SsWoRd?ServerAdminPassword=sUpRp4ssW0rd -crossplay -mods=1234,1235,1236", + "description": "flags (-UseBattleEye) are supported here without them touching. (i.e): -crossplay -mods=1234,1235,1236", "env_variable": "ARGS_FLAGS", "default_value": "", "user_viewable": true, From 2b17140975afdd9cc569fe763563ec1ce79bb7ae Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 19:08:49 -0400 Subject: [PATCH 229/251] remove appid user_edit permissions --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index d2b062eb..9b79060d 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -76,7 +76,7 @@ "env_variable": "SRCDS_APPID", "default_value": "2430930", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "nullable|numeric", "field_type": "text" }, From 80ba8baaf91cec0fc01d138b349e48427d2e543f Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 20:24:45 -0400 Subject: [PATCH 230/251] fixes ServerPassword issue --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 9b79060d..1839bd87 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-28T17:45:10-04:00", + "exported_at": "2023-10-28T20:23:14-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )$( [ -z \"$SERVER_PASSWORD\" ] || printf %s '?ServerPassword={{SERVER_PASSWORD}}' ){{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; sleep 15 ; tail -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log", + "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID", "config": { "files": "{}", "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", From 3f71864ca9e7e1560c41eb915f287f116fc65a6e Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sat, 28 Oct 2023 23:44:39 -0400 Subject: [PATCH 231/251] fixes MaxPlayers - thanks to @Log1x --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 1839bd87..3551715b 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-28T20:23:14-04:00", + "exported_at": "2023-10-28T23:41:51-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,9 +15,9 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\"$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID", + "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID", "config": { - "files": "{}", + "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", "logs": "{}", "stop": "^^C" From 37105e3885d81ebccc5a39c62d1be9ba1f69a400 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sun, 29 Oct 2023 12:01:51 -0400 Subject: [PATCH 232/251] rcon & better logging - added rcon variable - added rcon saveworld on exit - added rcon in-browser console support - added better logging for more details - updated install script to use latest steamcmd install ( @gOOvER ) Major thanks to @Log1x for a ton of troubleshooting, feedback, and suggestions! --- .../ark_survival_ascended/README.md | 6 ++--- .../egg-ark--survival-ascended.json | 24 +++++++++++++------ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md index 7ff69472..fbc634b0 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -5,7 +5,7 @@ ARK is reimagined from the ground-up into the next-generation of video game tech ## Troubleshooting -Due to using `tail -F ...` to follow the current server log, we are unable to also detect crashing (server stopping). This is obvious when the CPU hits 0% and RAM is around 5MB. However, more details are available in the `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml` +Crash logs are available in the Files `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml` ## Recommended server settings @@ -18,11 +18,11 @@ See the following - ## Server Ports -Note: RCON is currently not documented as of 10/28/2023 +Note: RCON doesn't need to be public but is required for console commands (in ptero) | Port | Default | | --------------- | ------- | | Game | 7777 | | Raw UDP | 7778 | | Query | 27015 | -| RCON (optional) | 27020 | +| RCON | 27020 | diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 3551715b..28d4d3bc 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-28T23:41:51-04:00", + "exported_at": "2023-10-29T11:56:31-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}}$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} SaveWorld && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", @@ -24,7 +24,7 @@ }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ubuntu:18.04'\r\napt -y update\r\napt -y --no-install-recommends --no-install-suggests install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [ \"${STEAM_USER}\" == \"\" ]; then\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\n\r\nmkdir -p \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} +force_install_dir \/mnt\/server +app_update ${SRCDS_APPID} ${EXTRA_FLAGS} +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## create a symbolic link for loading mods\r\ncd \/mnt\/server\/Engine\/Binaries\/ThirdParty\/SteamCMD\/Linux\r\nln -sf ..\/..\/..\/..\/..\/Steam\/steamapps steamapps\r\n\r\n## cleanup movies?\r\nrm -rf \/mnt\/server\/ShooterGame\/Content\/Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\ncd \/mnt\/server", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n# Install packages. Default packages below are not required if using our existing install image thus speeding up the install process.\r\n#apt -y update\r\n#apt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n## cleanup movies?\r\nrm -rf \/mnt\/server\/ShooterGame\/Content\/Movies\r\n\r\n## touch log file\r\nmkdir -p \/mnt\/server\/ShooterGame\/Saved\/Logs\r\necho \"--fresh install--\" >> \/mnt\/server\/ShooterGame\/Saved\/Logs\/ShooterGame.log\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -97,7 +97,7 @@ "default_value": "70", "user_viewable": true, "user_editable": true, - "rules": "numeric", + "rules": "required|numeric", "field_type": "text" }, { @@ -107,7 +107,7 @@ "default_value": "changeme", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_dash|max:32", + "rules": "required|alpha_dash", "field_type": "text" }, { @@ -117,7 +117,7 @@ "default_value": "27015", "user_viewable": true, "user_editable": true, - "rules": "required|numeric", + "rules": "required|numeric|max:65535", "field_type": "text" }, { @@ -132,7 +132,7 @@ }, { "name": "Server PvE", - "description": "Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is PvE enabled; disabling will enable PvP", + "description": "Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is (1) PvE enabled; disabling (0) will enable PvP", "env_variable": "SERVER_PVE", "default_value": "1", "user_viewable": true, @@ -149,6 +149,16 @@ "user_editable": true, "rules": "nullable|string", "field_type": "text" + }, + { + "name": "RCON Port", + "description": "required for console commands and proper server shutdown (saveworld\/exit), doesn't have to be open to the public", + "env_variable": "RCON_PORT", + "default_value": "37015", + "user_viewable": true, + "user_editable": true, + "rules": "required|numeric|max:65535", + "field_type": "text" } ] } \ No newline at end of file From e9a0c1e556940139e740ac259db1dfc1ad6d2d2a Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sun, 29 Oct 2023 12:20:09 -0400 Subject: [PATCH 233/251] gracefully shutdown server --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 28d4d3bc..28c74ff9 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-29T11:56:31-04:00", + "exported_at": "2023-10-29T12:19:41-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -20,7 +20,7 @@ "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", "logs": "{}", - "stop": "^^C" + "stop": "^C" }, "scripts": { "installation": { From 5fa40b4cc39f9ea0b83fdd881ad56201adf0f72f Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sun, 29 Oct 2023 14:19:57 -0400 Subject: [PATCH 234/251] MODs & Remove Duplicate SaveWorld on Exit - adds MOD_IDS as a variable ( thanks @IxPrumxI ) - removes SaveWorld on exit since DoExit also does a SaveWorld --- .../egg-ark--survival-ascended.json | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 28c74ff9..9772a11b 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-29T12:19:41-04:00", + "exported_at": "2023-10-29T14:17:11-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,7 +15,7 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} SaveWorld && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", @@ -159,6 +159,16 @@ "user_editable": true, "rules": "required|numeric|max:65535", "field_type": "text" + }, + { + "name": "MOD IDs", + "description": "https:\/\/www.curseforge.com\/ark-survival-ascended ; ProjectID is is the MOD_ID on the right-side of the mod-view page ; leave blank to disable mods ; separate only by comma ( , ) without spaces! (i.e.) 1234,1235,1236", + "env_variable": "MOD_IDS", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" } ] } \ No newline at end of file From eacb24563c4b14c1389dbc5762ad8418d9e544f6 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Sun, 29 Oct 2023 22:31:30 -0400 Subject: [PATCH 235/251] server name and rcon fixes - quoting passwords helped fix some issues ( thanks @IxPrumxI ) - migrated ServerAdminPassword to end of params - changed value to be more accurate for when server is running - removed server map max length - removed server name max length (cant guarnatee anything here) - set server password requirements, if set, to prevent crashing (and ultimatly corrupting installs) - added fix for existing servers that may be corrupted by an outdated egg (in regards to ? in ServerAdminPasswords=) --- .../egg-ark--survival-ascended.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 9772a11b..6dabbcc0 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-29T14:17:11-04:00", + "exported_at": "2023-10-29T22:24:13-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,10 +15,10 @@ "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe \"{{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName={{SESSION_NAME}}?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True?ServerAdminPassword={{ARK_ADMIN_PASSWORD}}$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword={{SERVER_PASSWORD}}{{ARGS_PARAMS}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\"{{SESSION_NAME}}\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { - "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"]Full Startup: \"\r\n}", + "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerAdminPassword=\": \"ServerAdminPassword={{server.build.env.ARK_ADMIN_PASSWORD}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", "logs": "{}", "stop": "^C" }, @@ -37,7 +37,7 @@ "default_value": "TheIsland_WP", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20", + "rules": "required|string", "field_type": "text" }, { @@ -47,7 +47,7 @@ "default_value": "A Pterodactyl Hosted Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:128", + "rules": "required|string", "field_type": "text" }, { @@ -147,7 +147,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string", + "rules": "nullable|alpha_dash", "field_type": "text" }, { From 679c670dd57c381b574c68f90a08a3483e3d0d4f Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Mon, 30 Oct 2023 16:47:52 +0100 Subject: [PATCH 236/251] Cleanup --- .../egg-ark--survival-ascended.json | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 6dabbcc0..11a8c1f2 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-29T22:24:13-04:00", + "exported_at": "2023-10-30T16:46:57+01:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/steamcmd:proton": "ghcr.io\/parkervcp\/steamcmd:proton" + "Proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\"{{SESSION_NAME}}\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", @@ -47,12 +47,12 @@ "default_value": "A Pterodactyl Hosted Server", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|max:256", "field_type": "text" }, { - "name": "Auto-update server", - "description": "This is to enable auto-updating for servers.\r\n\r\nDefault is 1. Set to 0 to disable automatic updates", + "name": "Auto Update", + "description": "Auto update the servers on startup.", "env_variable": "AUTO_UPDATE", "default_value": "1", "user_viewable": true, @@ -62,7 +62,7 @@ }, { "name": "Battle Eye", - "description": "Enable BattleEye\r\n\r\n0 to disable\r\n1 to enable\r\n\r\ndefault=\"1\"", + "description": "Enable BattleEye\r\n\r\nOFF = disable\r\nON = enable\r\n\r\ndefault=\"ON\"", "env_variable": "BATTLE_EYE", "default_value": "1", "user_viewable": true, @@ -72,12 +72,12 @@ }, { "name": "App ID", - "description": "ARK steam app id for auto updates. Leave blank to avoid auto update.", + "description": "ARK steam app id for auto updates.", "env_variable": "SRCDS_APPID", "default_value": "2430930", - "user_viewable": true, + "user_viewable": false, "user_editable": false, - "rules": "nullable|numeric", + "rules": "nullable|numeric|in:2430930", "field_type": "text" }, { @@ -87,7 +87,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string", + "rules": "nullable|string|max:256", "field_type": "text" }, { @@ -97,17 +97,17 @@ "default_value": "70", "user_viewable": true, "user_editable": true, - "rules": "required|numeric", + "rules": "required|numeric|between:1,200", "field_type": "text" }, { "name": "Server Admin Password", "description": "", "env_variable": "ARK_ADMIN_PASSWORD", - "default_value": "changeme", + "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_dash", + "rules": "required|alpha_dash|min:8|max:64", "field_type": "text" }, { @@ -116,7 +116,7 @@ "env_variable": "QUERY_PORT", "default_value": "27015", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "required|numeric|max:65535", "field_type": "text" }, @@ -127,12 +127,12 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string", + "rules": "nullable|string|max:256", "field_type": "text" }, { "name": "Server PvE", - "description": "Player-vs-Environment (PvE) or Player-vs-Player (PvP); default is (1) PvE enabled; disabling (0) will enable PvP", + "description": "ON = Player-vs-Environment (PvE) OFF = Player-vs-Player-vs-Environment (PvPvE); By default is on.", "env_variable": "SERVER_PVE", "default_value": "1", "user_viewable": true, @@ -147,7 +147,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|alpha_dash", + "rules": "nullable|alpha_dash|max:256", "field_type": "text" }, { @@ -156,8 +156,8 @@ "env_variable": "RCON_PORT", "default_value": "37015", "user_viewable": true, - "user_editable": true, - "rules": "required|numeric|max:65535", + "user_editable": false, + "rules": "required|numeric|between:1024,65535", "field_type": "text" }, { @@ -167,7 +167,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string", + "rules": "nullable|string|max:256", "field_type": "text" } ] From bcfd7d36dc06aaa497af4853eb8f8e7b8aa390f2 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Mon, 30 Oct 2023 12:51:30 -0400 Subject: [PATCH 237/251] variable rules/descriptions and readme(s) updated --- game_eggs/steamcmd_servers/README.md | 5 ++- .../ark_survival_ascended/README.md | 2 +- .../egg-ark--survival-ascended.json | 38 +++++++++---------- 3 files changed, 24 insertions(+), 21 deletions(-) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 6dd2034a..31db3d1f 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -6,9 +6,12 @@ This is a collection of servers that use SteamCMD to install. [7 Days To Die](7_days_to_die) -## ARK: Survival Ascended/Evolved +## ARK: Survival Ascended [ARK: Survival Ascended](ark_survival_asceneded) + +## ARK: Survival Evolved + [ARK: Survival Evolved](ark_survival_evolved) ## Arma diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md index fbc634b0..a0afcc77 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -25,4 +25,4 @@ Note: RCON doesn't need to be public but is required for console commands (in pt | Game | 7777 | | Raw UDP | 7778 | | Query | 27015 | -| RCON | 27020 | +| RCON | 37015 | diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 11a8c1f2..75f340bc 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-30T16:46:57+01:00", + "exported_at": "2023-10-30T12:50:45-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -37,7 +37,7 @@ "default_value": "TheIsland_WP", "user_viewable": true, "user_editable": true, - "rules": "required|string", + "rules": "required|string|max:64", "field_type": "text" }, { @@ -51,8 +51,8 @@ "field_type": "text" }, { - "name": "Auto Update", - "description": "Auto update the servers on startup.", + "name": "Auto-update server", + "description": "This is to enable auto-updating for servers on restart\/re-install.", "env_variable": "AUTO_UPDATE", "default_value": "1", "user_viewable": true, @@ -62,7 +62,7 @@ }, { "name": "Battle Eye", - "description": "Enable BattleEye\r\n\r\nOFF = disable\r\nON = enable\r\n\r\ndefault=\"ON\"", + "description": "Enable BattleEye \/ Anti-Cheat", "env_variable": "BATTLE_EYE", "default_value": "1", "user_viewable": true, @@ -72,12 +72,12 @@ }, { "name": "App ID", - "description": "ARK steam app id for auto updates.", + "description": "app id required for server download\/updates. end users should not see this.", "env_variable": "SRCDS_APPID", "default_value": "2430930", "user_viewable": false, "user_editable": false, - "rules": "nullable|numeric|in:2430930", + "rules": "required|integer|in:2430930", "field_type": "text" }, { @@ -87,7 +87,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:256", + "rules": "nullable|string|max:1024", "field_type": "text" }, { @@ -97,17 +97,17 @@ "default_value": "70", "user_viewable": true, "user_editable": true, - "rules": "required|numeric|between:1,200", + "rules": "required|integer|min:1|max:200", "field_type": "text" }, { "name": "Server Admin Password", - "description": "", + "description": "Used for RCON (remote and in-browser console) as well as in-game EnableCheats", "env_variable": "ARK_ADMIN_PASSWORD", "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "required|alpha_dash|min:8|max:64", + "rules": "required|alpha_dash|max:128", "field_type": "text" }, { @@ -116,8 +116,8 @@ "env_variable": "QUERY_PORT", "default_value": "27015", "user_viewable": true, - "user_editable": false, - "rules": "required|numeric|max:65535", + "user_editable": true, + "rules": "required|integer|min:1025|max:65535", "field_type": "text" }, { @@ -127,12 +127,12 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:256", + "rules": "nullable|string|max:1024", "field_type": "text" }, { "name": "Server PvE", - "description": "ON = Player-vs-Environment (PvE) OFF = Player-vs-Player-vs-Environment (PvPvE); By default is on.", + "description": "ON = Player-vs-Environment (PvE), OFF = Player-vs-Player (PvP); Default is ON", "env_variable": "SERVER_PVE", "default_value": "1", "user_viewable": true, @@ -147,7 +147,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|alpha_dash|max:256", + "rules": "nullable|alpha_dash|max:128", "field_type": "text" }, { @@ -156,8 +156,8 @@ "env_variable": "RCON_PORT", "default_value": "37015", "user_viewable": true, - "user_editable": false, - "rules": "required|numeric|between:1024,65535", + "user_editable": true, + "rules": "required|integer|min:1025|max:65535", "field_type": "text" }, { @@ -167,7 +167,7 @@ "default_value": "", "user_viewable": true, "user_editable": true, - "rules": "nullable|string|max:256", + "rules": "nullable|string|max:512", "field_type": "text" } ] From ed7b6a3400c270e64aef674125e834558f17b6e6 Mon Sep 17 00:00:00 2001 From: Derrick A Date: Mon, 30 Oct 2023 14:12:17 -0400 Subject: [PATCH 238/251] remove port editable rules for end-users --- .../ark_survival_ascended/egg-ark--survival-ascended.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index 75f340bc..fa37bebc 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-30T12:50:45-04:00", + "exported_at": "2023-10-30T13:56:57-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -116,7 +116,7 @@ "env_variable": "QUERY_PORT", "default_value": "27015", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "required|integer|min:1025|max:65535", "field_type": "text" }, @@ -156,7 +156,7 @@ "env_variable": "RCON_PORT", "default_value": "37015", "user_viewable": true, - "user_editable": true, + "user_editable": false, "rules": "required|integer|min:1025|max:65535", "field_type": "text" }, From 02489ec288d71574e7a12414003c16e8932ea86d Mon Sep 17 00:00:00 2001 From: Derrick A Date: Wed, 1 Nov 2023 14:15:19 -0400 Subject: [PATCH 239/251] Fixes Zombied Servers & README tips - KeepAlive has been added due to extended up-times causing the next rcon command (DoExit) in-console to timeout; resulting in zombied servers. - Added some very helpful troubleshooting tips to the README - Added Known Issues to the README - Bumped up the RAM requirements in the README --- .../ark_survival_ascended/README.md | 25 +++++++++++++++++-- .../egg-ark--survival-ascended.json | 4 +-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md index a0afcc77..054be0cb 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -5,14 +5,35 @@ ARK is reimagined from the ground-up into the next-generation of video game tech ## Troubleshooting -Crash logs are available in the Files `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml` +1) Try starting the server with no mods on a fresh install. + +2) If there are crash logs, they will be available in the Files at `ShooterGame/Saved/Crashes/UECC-Windows-*/CrashContext.runtime-xml` + +### Crash Identifiers + +Crashes will either stop the server or display 0-5% CPU usage. +The number is in reference to RAM/Memory usage. + +1) Server crashing around 500MB is probably either a config issue or a corrupted install. + +2) Server crashing around 750MB is probably commandline issue. + +3) Server crashing around 1GB is probably either a MOD conflict or corrupted SavedArks files. + + +## Known Issues + +1) ARK: Survival Ascended, currently, does not support more than one server per IP. +These are Windows Server files running on a Linux container; so, we believe this is the issue. + +2) ARK's wiki heavily reference A:SE and not all features are available in A:SA. ## Recommended server settings ### Minimum RAM -This server requires about 8-10GB of RAM to run with no players on a default map. +This server requires about 11GB of RAM to run with no players on a default map. See the following - diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index fa37bebc..e2c296d3 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-10-30T13:56:57-04:00", + "exported_at": "2023-11-01T12:21:14-04:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,7 +15,7 @@ "Proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\"{{SESSION_NAME}}\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} KeepAlive && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\"{{SESSION_NAME}}\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerAdminPassword=\": \"ServerAdminPassword={{server.build.env.ARK_ADMIN_PASSWORD}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}", From fcc3947e88959d43a7777f02ce32385237e9ed15 Mon Sep 17 00:00:00 2001 From: Limmek Date: Mon, 6 Nov 2023 09:55:00 +0000 Subject: [PATCH 240/251] Added Astro Colony --- .../steamcmd_servers/astro_colony/README.md | 15 ++ .../astro_colony/egg-astro-colony.json | 154 ++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 game_eggs/steamcmd_servers/astro_colony/README.md create mode 100644 game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json diff --git a/game_eggs/steamcmd_servers/astro_colony/README.md b/game_eggs/steamcmd_servers/astro_colony/README.md new file mode 100644 index 00000000..7d8a8cbd --- /dev/null +++ b/game_eggs/steamcmd_servers/astro_colony/README.md @@ -0,0 +1,15 @@ +# [Astro Colony](https://astrocolony.com/) + +Explore endless Universe and create the most efficient constellation of colonies. Build conveyor systems to automate production. Take care of Astronauts and their needs! Establish new colonies as part of intergalactic simulation. + +## Server Ports + +Ports required to run the server in a table format. + +> [!IMPORTANT] +> It’s possible to change the query port but changing the game port from **7777** may result in not being able to join the server. + +| Port | default | +|---------|---------| +| Game | 7777 | +| Query | 27015 | diff --git a/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json new file mode 100644 index 00000000..c9986b0b --- /dev/null +++ b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json @@ -0,0 +1,154 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-11-05T17:10:13+01:00", + "name": "Astro Colony", + "author": "limmek@swedon.se", + "description": "Explore endless Universe and create the most efficient constellation of colonies. Build conveyor systems to automate production. Take care of Astronauts and their needs! Establish new colonies as part of intergalactic simulation.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "wine": "ghcr.io\/parkervcp\/yolks:wine_latest" + }, + "file_denylist": [], + "startup": "wine64 .\/AstroColony\/Binaries\/Win64\/AstroColonyServer.exe -log -SteamServerName=\\\"${SERVER_NAME}\\\" -port=${SERVER_PORT} -QueryPort=${SERVER_QUERY_PORT}", + "config": { + "files": "{\r\n \"AstroColony\/Saved\/Config\/WindowsServer\/ServerSettings.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ServerPassword\": \"{{env.SERVER_PASSWORD}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MapName\": \"{{env.SERVER_MAP}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MaxPlayers\": \"{{env.SERVER_MAXPLAYERS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SavegameName\": \"{{env.SERVER_GAMESAVE}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ShouldLoadLatestSavegame\": \"{{env.SERVER_LOADLATESTSAVEGAME}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].AdminList\": \"{{env.SERVER_ADMINS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SharedTechnologies\": \"{{env.SERVER_SHAREDTECHNOLOGIES}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].OxygenConsumption\": \"{{env.SERVER_OXYGENCONSUMPTION}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].FreeConstruction\": \"{{env.SERVER_FREECONSTRUCTION}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"server create success\"\r\n}", + "logs": "{}", + "stop": "^C & ^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nWINDOWS_INSTALL=1\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${STEAM_APP_ID} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\ncreate_server_settings_ini() {\r\n cat > ServerSettings.ini < Date: Mon, 6 Nov 2023 10:02:55 +0000 Subject: [PATCH 241/251] Added Astro colony to readme --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 588262d6..6afef6e6 100644 --- a/README.md +++ b/README.md @@ -243,6 +243,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Arma 3](game_eggs/steamcmd_servers/arma/arma3) * [Arma Reforger](game_eggs/steamcmd_servers/arma/arma_reforger) * [Assetto Corsa](game_eggs/steamcmd_servers/assetto_corsa) +* [Astro Colony](game_eggs/steamcmd_servers/astro_colony) * [Astroneer](game_eggs/steamcmd_servers/astroneer) * [Avorion](game_eggs/steamcmd_servers/avorion) * [Barotrauma](game_eggs/steamcmd_servers/barotrauma) diff --git a/game_eggs/README.md b/game_eggs/README.md index 84824ac7..13018792 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -136,6 +136,7 @@ * [Arma 3](steamcmd_servers/arma/arma3) * [Arma Reforger](steamcmd_servers/arma/arma_reforger) * [Assetto Corsa](steamcmd_servers/assetto_corsa) +* [Astro Colony](steamcmd_servers/astro_colony) * [Astroneer](steamcmd_servers/astroneer) * [Avorion](steamcmd_servers/avorion) * [Barotrauma](steamcmd_servers/barotrauma) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 31db3d1f..82b620a2 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -24,6 +24,10 @@ This is a collection of servers that use SteamCMD to install. [Assetto Corsa](assetto_corsa) +## Astro Colony + +[Astro Colony](astro_colony) + ## Avorion [Avorion](avorion) From 461681bdb43cb31e0e68fa5dff46aa141c78eb52 Mon Sep 17 00:00:00 2001 From: Limmek Date: Mon, 6 Nov 2023 10:51:52 +0000 Subject: [PATCH 242/251] Spelling correction. --- game_eggs/steamcmd_servers/astro_colony/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/astro_colony/README.md b/game_eggs/steamcmd_servers/astro_colony/README.md index 7d8a8cbd..012255e1 100644 --- a/game_eggs/steamcmd_servers/astro_colony/README.md +++ b/game_eggs/steamcmd_servers/astro_colony/README.md @@ -7,9 +7,9 @@ Explore endless Universe and create the most efficient constellation of colonies Ports required to run the server in a table format. > [!IMPORTANT] -> It’s possible to change the query port but changing the game port from **7777** may result in not being able to join the server. +> It’s possible to change the query port but changing the game port from **7777** will result in not being able to join the server! -| Port | default | +| Port | Default | |---------|---------| | Game | 7777 | | Query | 27015 | From c7d1696b8414421ee9508cfddaff122599af3705 Mon Sep 17 00:00:00 2001 From: Limmek Date: Mon, 6 Nov 2023 17:52:57 +0100 Subject: [PATCH 243/251] Corrected and added missing variables --- .../astro_colony/egg-astro-colony.json | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json index c9986b0b..7b0dcc5d 100644 --- a/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json +++ b/game_eggs/steamcmd_servers/astro_colony/egg-astro-colony.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-11-05T17:10:13+01:00", + "exported_at": "2023-11-06T17:38:07+01:00", "name": "Astro Colony", "author": "limmek@swedon.se", "description": "Explore endless Universe and create the most efficient constellation of colonies. Build conveyor systems to automate production. Take care of Astronauts and their needs! Establish new colonies as part of intergalactic simulation.", @@ -15,17 +15,17 @@ "wine": "ghcr.io\/parkervcp\/yolks:wine_latest" }, "file_denylist": [], - "startup": "wine64 .\/AstroColony\/Binaries\/Win64\/AstroColonyServer.exe -log -SteamServerName=\\\"${SERVER_NAME}\\\" -port=${SERVER_PORT} -QueryPort=${SERVER_QUERY_PORT}", + "startup": "wine .\/AstroColony\/Binaries\/Win64\/AstroColonyServer.exe -log -SteamServerName=\\\"${SERVER_NAME}\\\" -QueryPort=${SERVER_QUERY_PORT}", "config": { "files": "{\r\n \"AstroColony\/Saved\/Config\/WindowsServer\/ServerSettings.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ServerPassword\": \"{{env.SERVER_PASSWORD}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MapName\": \"{{env.SERVER_MAP}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].MaxPlayers\": \"{{env.SERVER_MAXPLAYERS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SavegameName\": \"{{env.SERVER_GAMESAVE}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].ShouldLoadLatestSavegame\": \"{{env.SERVER_LOADLATESTSAVEGAME}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].AdminList\": \"{{env.SERVER_ADMINS}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].SharedTechnologies\": \"{{env.SERVER_SHAREDTECHNOLOGIES}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].OxygenConsumption\": \"{{env.SERVER_OXYGENCONSUMPTION}}\",\r\n \"[\/Script\/AstroColony.EHServerSubsystem].FreeConstruction\": \"{{env.SERVER_FREECONSTRUCTION}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"server create success\"\r\n}", "logs": "{}", - "stop": "^C & ^C" + "stop": "^^C" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\n\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\nWINDOWS_INSTALL=1\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${STEAM_APP_ID} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\ncreate_server_settings_ini() {\r\n cat > ServerSettings.ini < ServerSettings.ini < Date: Wed, 8 Nov 2023 21:16:49 +0100 Subject: [PATCH 244/251] Add "mono" to WINETRICKS_RUN env var I don't really know why but I had problems with the dotnet6 installation but the installation is working well by installing mono first. It seems others people than me was having the problem so it may be a good idea to add it as a default value. --- .../v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index f4665968..408957f6 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -284,7 +284,7 @@ "name": "WINETRICKS_RUN", "description": "", "env_variable": "WINETRICKS_RUN", - "default_value": "vcrun2019 dotnet48 dotnet6", + "default_value": "mono vcrun2019 dotnet48 dotnet6", "user_viewable": false, "user_editable": false, "rules": "required|string|max:50", @@ -301,4 +301,4 @@ "field_type": "text" } ] -} \ No newline at end of file +} From 187bfc686c38a8bf590b1e3f78a3e71890201919 Mon Sep 17 00:00:00 2001 From: Upd4ting Date: Wed, 8 Nov 2023 21:31:11 +0100 Subject: [PATCH 245/251] Update egg-v-rising-bep-in-ex.json --- .../egg-v-rising-bep-in-ex.json | 606 +++++++++--------- 1 file changed, 303 insertions(+), 303 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index 408957f6..168114b2 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -1,304 +1,304 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2023-06-15T17:53:50-04:00", - "name": "V Rising BepInEx", - "author": "rehlmgaming@gmail.com", - "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", - "features": [ - "steam_disk_space" - ], - "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" - }, - "file_denylist": [], - "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", - "config": { - "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", - "logs": "{}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl jq unzip wget\r\n# Download and install SteamCMD\r\necho -e \"${YELLOW}download and install steamcmd${NC}\"\r\n\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\necho -e \"${YELLOW}install V Rising with SteamCMD${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n# Enable BEPINEX (Credits to: https:\/\/github.com\/ricin\/vrising-bepinex-linux\/blob\/main\/scripts\/start-server.sh)\r\necho -e \"${YELLOW}installing BepInex${NC}\"\r\n\r\n#variables\r\nBEPINEX_VR_TS_URL=https:\/\/v-rising.thunderstore.io\/package\/BepInEx\/BepInExPack_V_Rising\/\r\nCUR_V=\"$(find ${HOME} -maxdepth 1 -name \"BepInEx-*\" | cut -d '-' -f2)\"\r\nBEPINEX_VR_API_DATA=\"$(curl -s -X GET https:\/\/thunderstore.io\/c\/v-rising\/api\/v1\/package\/b86fcaaf-297a-45c8-82a0-fcbd7806fdc4\/ -H \"accept: application\/json\")\"\r\nLAT_V=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].version_number')\"\r\n\r\nif [ -z \"${LAT_V}\" ] && [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${RED}Can't get latest version of BepInEx for V Rising!${NC}\"\r\n echo -e \"${RED}Please try to run without BepInEx for V Rising. Exiting.${NC}\"\r\n exit 1\r\nfi\r\n\r\nif [ -f ${HOME}\/BepInEx.zip ]; then\r\n rm -rf ${HOME}\/BepInEx.zip\r\nfi\r\nif [ -f ${HOME}\/doorstop_config.ini ]; then\r\n sed -i \"\/enabled=false\/c\\enabled=true\" ${HOME}\/doorstop_config.ini\r\nfi\r\n\r\necho -e \"${YELLOW}BepInEx for V Rising Version Check${NC}\"\r\necho -e \"${YELLOW}More info: ${BEPINEX_VR_TS_URL}${NC}\"\r\n\r\nBEPINEX_VR_TS_DOWNLOAD_URL=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].download_url')\"\r\nif [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${YELLOW}BepInEx for V Rising not found, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-*\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Something went wrong, can't download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n mkdir -p \/tmp\/BepInEx\r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx\r\n if [ $? -eq 0 ];then\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"$CUR_V\" != \"${LAT_V}\" ]; then\r\n echo -e \"${YELLOW}Version missmatch, BepInEx v$CUR_V installed, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-$CUR_V\r\n mkdir \/tmp\/Backup\r\n cp -R ${HOME}\/BepInEx\/config \/tmp\/Backup\/\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Unable to download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx \r\n \r\n if [ $? -eq 0 ];then\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -R \/tmp\/Backup\/config ${HOME}\/BepInEx\/\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx \/tmp\/Backup\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"${CUR_V}\" == \"${LAT_V}\" ]; then\r\n echo -e \"${GREEN}BepInEx v$CUR_V up-to-date!${NC}\"\r\nfi\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\necho -e \"${BLUE}-----------------------${NC}\"\r\necho -e \"${GREEN}Installation completed${NC}\"\r\necho -e \"${BLUE}-----------------------${NC}\"", - "container": "ghcr.io\/parkervcp\/installers:debian", - "entrypoint": "\/bin\/bash" - } - }, - "variables": [ - { - "name": "[REQUIRED] Server Query Port", - "description": "UDP port for Steam server list features.", - "env_variable": "QUERY_PORT", - "default_value": "9877", - "user_viewable": true, - "user_editable": false, - "rules": "required|integer|between:1024,65536", - "field_type": "text" - }, - { - "name": "Automatic Updates", - "description": "Quickly checks for any server updates on startup, and updates if necessary.", - "env_variable": "AUTO_UPDATE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "boolean", - "field_type": "text" - }, - { - "name": "Game Settings Preset", - "description": "What preset of game settings the server should run. Some settings may not apply after the save file is first created. Leave empty\/null if you are using a single-player uploaded save or a custom ServerGameSettings.json file in the `~\/save-data\/Settings\/` directory.", - "env_variable": "GAME_SETTINGS_PRESET", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|in:,DuoPvP,HardcorePvP,Level30PvE,Level30PvP,Level50PvE,Level50PvP,Level70PvE,Level70PvP,SoloPvP,StandardPvE_Easy,StandardPvE_Hard,StandardPvE,StandardPvP_Easy,StandardPvP_Hard,StandardPVP", - "field_type": "text" - }, - { - "name": "Server Name", - "description": "Name of the server that will appear in the server list.", - "env_variable": "SERVER_NAME", - "default_value": "V Rising Dedicated Server", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Server Description", - "description": "Short description of server purpose, rules, and the message of the day.", - "env_variable": "DESCRIPTION", - "default_value": "Welcome to the server!", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Max Connected Users", - "description": "Max number of concurrent players on the server.", - "env_variable": "MAX_PLAYERS", - "default_value": "40", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "Max Connected Admins", - "description": "Max number of admins to allow connection even when the server is full.", - "env_variable": "MAX_ADMINS", - "default_value": "4", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:0", - "field_type": "text" - }, - { - "name": "Server Password", - "description": "Password required to join the server. Leave blank to have no password.", - "env_variable": "SERVER_PASSWORD", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Save Name", - "description": "Name of save file \/ directory.", - "env_variable": "SAVE_NAME", - "default_value": "world1", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Auto Save Count", - "description": "Number of autosaves to keep.", - "env_variable": "SAVE_COUNT", - "default_value": "50", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:0", - "field_type": "text" - }, - { - "name": "Auto Save Interval", - "description": "Interval in seconds between each autosave.", - "env_variable": "SAVE_INTERVAL", - "default_value": "600", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "List On Master Server", - "description": "Set to true to list on the server list, else set to false.", - "env_variable": "SERVER_LIST", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Repair] Validate Server Files", - "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.", - "env_variable": "VALIDATE", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable", - "field_type": "text" - }, - { - "name": "[Advanced] Server FPS", - "description": "How often the server refreshes. (Default: 30)", - "env_variable": "FPS", - "default_value": "30", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "[Advanced] Enable RCON", - "description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon", - "env_variable": "RCON", - "default_value": "false", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] RCON Password", - "description": "Password required to connect to RCON if it is enabled.", - "env_variable": "RCON_PASS", - "default_value": "somepassword", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "[Advanced] RCON Port", - "description": "Port used to connect to RCON. Must be allocated to the server for RCON to work.", - "env_variable": "RCON_PORT", - "default_value": "25575", - "user_viewable": true, - "user_editable": false, - "rules": "required|integer|between:1024,65536", - "field_type": "text" - }, - { - "name": "[Advanced] Secure Server", - "description": "(true or false)", - "env_variable": "SERVER_SECURE", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] Admin Only Debug Events", - "description": "(true or false)", - "env_variable": "ADMIN_ONLY_DEBUG_EVENTS", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] Disable Debug Events", - "description": "(true or false)", - "env_variable": "DEBUG_EVENTS", - "default_value": "false", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] V Rising Dedicated Server App ID", - "description": "Used for installation and updates. Rarely needs to be changed.", - "env_variable": "SRCDS_APPID", - "default_value": "1829350", - "user_viewable": false, - "user_editable": false, - "rules": "required|integer", - "field_type": "text" - }, - { - "name": "[Advanced] Use Windows Branch", - "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.", - "env_variable": "WINDOWS_INSTALL", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|in:1", - "field_type": "text" - }, - { - "name": "WINEDEBUG", - "description": "", - "env_variable": "WINEDEBUG", - "default_value": "-all", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "WINEPATH", - "description": "", - "env_variable": "WINEPATH", - "default_value": "\/home\/container", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "XVFB", - "description": "", - "env_variable": "XVFB", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "boolean", - "field_type": "text" - }, - { - "name": "WINETRICKS_RUN", - "description": "", - "env_variable": "WINETRICKS_RUN", - "default_value": "mono vcrun2019 dotnet48 dotnet6", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:50", - "field_type": "text" - }, - { - "name": "WINEARCH", - "description": "", - "env_variable": "WINEARCH", - "default_value": "win64", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - } - ] -} + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-11-08T21:24:42+01:00", + "name": "V Rising BepInEx", + "author": "rehlmgaming@gmail.com", + "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" + }, + "file_denylist": [], + "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", + "config": { + "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl jq unzip wget\r\n# Download and install SteamCMD\r\necho -e \"${YELLOW}download and install steamcmd${NC}\"\r\n\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\necho -e \"${YELLOW}install V Rising with SteamCMD${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n# Enable BEPINEX (Credits to: https:\/\/github.com\/ricin\/vrising-bepinex-linux\/blob\/main\/scripts\/start-server.sh)\r\necho -e \"${YELLOW}installing BepInex${NC}\"\r\n\r\n#variables\r\nBEPINEX_VR_TS_URL=https:\/\/v-rising.thunderstore.io\/package\/BepInEx\/BepInExPack_V_Rising\/\r\nCUR_V=\"$(find ${HOME} -maxdepth 1 -name \"BepInEx-*\" | cut -d '-' -f2)\"\r\nBEPINEX_VR_API_DATA=\"$(curl -s -X GET https:\/\/thunderstore.io\/c\/v-rising\/api\/v1\/package\/b86fcaaf-297a-45c8-82a0-fcbd7806fdc4\/ -H \"accept: application\/json\")\"\r\nLAT_V=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].version_number')\"\r\n\r\nif [ -z \"${LAT_V}\" ] && [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${RED}Can't get latest version of BepInEx for V Rising!${NC}\"\r\n echo -e \"${RED}Please try to run without BepInEx for V Rising. Exiting.${NC}\"\r\n exit 1\r\nfi\r\n\r\nif [ -f ${HOME}\/BepInEx.zip ]; then\r\n rm -rf ${HOME}\/BepInEx.zip\r\nfi\r\nif [ -f ${HOME}\/doorstop_config.ini ]; then\r\n sed -i \"\/enabled=false\/c\\enabled=true\" ${HOME}\/doorstop_config.ini\r\nfi\r\n\r\necho -e \"${YELLOW}BepInEx for V Rising Version Check${NC}\"\r\necho -e \"${YELLOW}More info: ${BEPINEX_VR_TS_URL}${NC}\"\r\n\r\nBEPINEX_VR_TS_DOWNLOAD_URL=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].download_url')\"\r\nif [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${YELLOW}BepInEx for V Rising not found, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-*\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Something went wrong, can't download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n mkdir -p \/tmp\/BepInEx\r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx\r\n if [ $? -eq 0 ];then\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"$CUR_V\" != \"${LAT_V}\" ]; then\r\n echo -e \"${YELLOW}Version missmatch, BepInEx v$CUR_V installed, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-$CUR_V\r\n mkdir \/tmp\/Backup\r\n cp -R ${HOME}\/BepInEx\/config \/tmp\/Backup\/\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Unable to download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx \r\n \r\n if [ $? -eq 0 ];then\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -R \/tmp\/Backup\/config ${HOME}\/BepInEx\/\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx \/tmp\/Backup\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"${CUR_V}\" == \"${LAT_V}\" ]; then\r\n echo -e \"${GREEN}BepInEx v$CUR_V up-to-date!${NC}\"\r\nfi\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\necho -e \"${BLUE}-----------------------${NC}\"\r\necho -e \"${GREEN}Installation completed${NC}\"\r\necho -e \"${BLUE}-----------------------${NC}\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "\/bin\/bash" + } + }, + "variables": [ + { + "name": "[REQUIRED] Server Query Port", + "description": "UDP port for Steam server list features.", + "env_variable": "QUERY_PORT", + "default_value": "9877", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "Automatic Updates", + "description": "Quickly checks for any server updates on startup, and updates if necessary.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "Game Settings Preset", + "description": "What preset of game settings the server should run. Some settings may not apply after the save file is first created. Leave empty\/null if you are using a single-player uploaded save or a custom ServerGameSettings.json file in the `~\/save-data\/Settings\/` directory.", + "env_variable": "GAME_SETTINGS_PRESET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|in:,DuoPvP,HardcorePvP,Level30PvE,Level30PvP,Level50PvE,Level50PvP,Level70PvE,Level70PvP,SoloPvP,StandardPvE_Easy,StandardPvE_Hard,StandardPvE,StandardPvP_Easy,StandardPvP_Hard,StandardPVP", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server that will appear in the server list.", + "env_variable": "SERVER_NAME", + "default_value": "V Rising Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Short description of server purpose, rules, and the message of the day.", + "env_variable": "DESCRIPTION", + "default_value": "Welcome to the server!", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Max Connected Users", + "description": "Max number of concurrent players on the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "40", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "Max Connected Admins", + "description": "Max number of admins to allow connection even when the server is full.", + "env_variable": "MAX_ADMINS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "Password required to join the server. Leave blank to have no password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Save Name", + "description": "Name of save file \/ directory.", + "env_variable": "SAVE_NAME", + "default_value": "world1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Auto Save Count", + "description": "Number of autosaves to keep.", + "env_variable": "SAVE_COUNT", + "default_value": "50", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Interval in seconds between each autosave.", + "env_variable": "SAVE_INTERVAL", + "default_value": "600", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "List On Master Server", + "description": "Set to true to list on the server list, else set to false.", + "env_variable": "SERVER_LIST", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Repair] Validate Server Files", + "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.", + "env_variable": "VALIDATE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "[Advanced] Server FPS", + "description": "How often the server refreshes. (Default: 30)", + "env_variable": "FPS", + "default_value": "30", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "[Advanced] Enable RCON", + "description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon", + "env_variable": "RCON", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] RCON Password", + "description": "Password required to connect to RCON if it is enabled.", + "env_variable": "RCON_PASS", + "default_value": "somepassword", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "[Advanced] RCON Port", + "description": "Port used to connect to RCON. Must be allocated to the server for RCON to work.", + "env_variable": "RCON_PORT", + "default_value": "25575", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "[Advanced] Secure Server", + "description": "(true or false)", + "env_variable": "SERVER_SECURE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] Admin Only Debug Events", + "description": "(true or false)", + "env_variable": "ADMIN_ONLY_DEBUG_EVENTS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] Disable Debug Events", + "description": "(true or false)", + "env_variable": "DEBUG_EVENTS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] V Rising Dedicated Server App ID", + "description": "Used for installation and updates. Rarely needs to be changed.", + "env_variable": "SRCDS_APPID", + "default_value": "1829350", + "user_viewable": false, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "[Advanced] Use Windows Branch", + "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:1", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "XVFB", + "description": "", + "env_variable": "XVFB", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "mono vcrun2019 dotnet48 dotnet6", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 015fefa24ba015b4d628f6547f6fa51efba50c13 Mon Sep 17 00:00:00 2001 From: Quinten <67589015+QuintenQVD0@users.noreply.github.com> Date: Thu, 9 Nov 2023 08:54:32 +0100 Subject: [PATCH 246/251] Update to wine latest --- .../egg-v-rising-bep-in-ex.json | 604 +++++++++--------- 1 file changed, 302 insertions(+), 302 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index 168114b2..41de0ab3 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -1,304 +1,304 @@ { - "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", - "meta": { - "version": "PTDL_v2", - "update_url": null - }, - "exported_at": "2023-11-08T21:24:42+01:00", - "name": "V Rising BepInEx", - "author": "rehlmgaming@gmail.com", - "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", - "features": [ - "steam_disk_space" - ], - "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" - }, - "file_denylist": [], - "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", - "config": { - "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", - "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", - "logs": "{}", - "stop": "^C" - }, - "scripts": { - "installation": { - "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl jq unzip wget\r\n# Download and install SteamCMD\r\necho -e \"${YELLOW}download and install steamcmd${NC}\"\r\n\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\necho -e \"${YELLOW}install V Rising with SteamCMD${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n# Enable BEPINEX (Credits to: https:\/\/github.com\/ricin\/vrising-bepinex-linux\/blob\/main\/scripts\/start-server.sh)\r\necho -e \"${YELLOW}installing BepInex${NC}\"\r\n\r\n#variables\r\nBEPINEX_VR_TS_URL=https:\/\/v-rising.thunderstore.io\/package\/BepInEx\/BepInExPack_V_Rising\/\r\nCUR_V=\"$(find ${HOME} -maxdepth 1 -name \"BepInEx-*\" | cut -d '-' -f2)\"\r\nBEPINEX_VR_API_DATA=\"$(curl -s -X GET https:\/\/thunderstore.io\/c\/v-rising\/api\/v1\/package\/b86fcaaf-297a-45c8-82a0-fcbd7806fdc4\/ -H \"accept: application\/json\")\"\r\nLAT_V=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].version_number')\"\r\n\r\nif [ -z \"${LAT_V}\" ] && [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${RED}Can't get latest version of BepInEx for V Rising!${NC}\"\r\n echo -e \"${RED}Please try to run without BepInEx for V Rising. Exiting.${NC}\"\r\n exit 1\r\nfi\r\n\r\nif [ -f ${HOME}\/BepInEx.zip ]; then\r\n rm -rf ${HOME}\/BepInEx.zip\r\nfi\r\nif [ -f ${HOME}\/doorstop_config.ini ]; then\r\n sed -i \"\/enabled=false\/c\\enabled=true\" ${HOME}\/doorstop_config.ini\r\nfi\r\n\r\necho -e \"${YELLOW}BepInEx for V Rising Version Check${NC}\"\r\necho -e \"${YELLOW}More info: ${BEPINEX_VR_TS_URL}${NC}\"\r\n\r\nBEPINEX_VR_TS_DOWNLOAD_URL=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].download_url')\"\r\nif [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${YELLOW}BepInEx for V Rising not found, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-*\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Something went wrong, can't download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n mkdir -p \/tmp\/BepInEx\r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx\r\n if [ $? -eq 0 ];then\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"$CUR_V\" != \"${LAT_V}\" ]; then\r\n echo -e \"${YELLOW}Version missmatch, BepInEx v$CUR_V installed, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-$CUR_V\r\n mkdir \/tmp\/Backup\r\n cp -R ${HOME}\/BepInEx\/config \/tmp\/Backup\/\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Unable to download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx \r\n \r\n if [ $? -eq 0 ];then\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -R \/tmp\/Backup\/config ${HOME}\/BepInEx\/\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx \/tmp\/Backup\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"${CUR_V}\" == \"${LAT_V}\" ]; then\r\n echo -e \"${GREEN}BepInEx v$CUR_V up-to-date!${NC}\"\r\nfi\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\necho -e \"${BLUE}-----------------------${NC}\"\r\necho -e \"${GREEN}Installation completed${NC}\"\r\necho -e \"${BLUE}-----------------------${NC}\"", - "container": "ghcr.io\/parkervcp\/installers:debian", - "entrypoint": "\/bin\/bash" - } - }, - "variables": [ - { - "name": "[REQUIRED] Server Query Port", - "description": "UDP port for Steam server list features.", - "env_variable": "QUERY_PORT", - "default_value": "9877", - "user_viewable": true, - "user_editable": false, - "rules": "required|integer|between:1024,65536", - "field_type": "text" - }, - { - "name": "Automatic Updates", - "description": "Quickly checks for any server updates on startup, and updates if necessary.", - "env_variable": "AUTO_UPDATE", - "default_value": "1", - "user_viewable": true, - "user_editable": true, - "rules": "boolean", - "field_type": "text" - }, - { - "name": "Game Settings Preset", - "description": "What preset of game settings the server should run. Some settings may not apply after the save file is first created. Leave empty\/null if you are using a single-player uploaded save or a custom ServerGameSettings.json file in the `~\/save-data\/Settings\/` directory.", - "env_variable": "GAME_SETTINGS_PRESET", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string|in:,DuoPvP,HardcorePvP,Level30PvE,Level30PvP,Level50PvE,Level50PvP,Level70PvE,Level70PvP,SoloPvP,StandardPvE_Easy,StandardPvE_Hard,StandardPvE,StandardPvP_Easy,StandardPvP_Hard,StandardPVP", - "field_type": "text" - }, - { - "name": "Server Name", - "description": "Name of the server that will appear in the server list.", - "env_variable": "SERVER_NAME", - "default_value": "V Rising Dedicated Server", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Server Description", - "description": "Short description of server purpose, rules, and the message of the day.", - "env_variable": "DESCRIPTION", - "default_value": "Welcome to the server!", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Max Connected Users", - "description": "Max number of concurrent players on the server.", - "env_variable": "MAX_PLAYERS", - "default_value": "40", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "Max Connected Admins", - "description": "Max number of admins to allow connection even when the server is full.", - "env_variable": "MAX_ADMINS", - "default_value": "4", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:0", - "field_type": "text" - }, - { - "name": "Server Password", - "description": "Password required to join the server. Leave blank to have no password.", - "env_variable": "SERVER_PASSWORD", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "nullable|string", - "field_type": "text" - }, - { - "name": "Save Name", - "description": "Name of save file \/ directory.", - "env_variable": "SAVE_NAME", - "default_value": "world1", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "Auto Save Count", - "description": "Number of autosaves to keep.", - "env_variable": "SAVE_COUNT", - "default_value": "50", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:0", - "field_type": "text" - }, - { - "name": "Auto Save Interval", - "description": "Interval in seconds between each autosave.", - "env_variable": "SAVE_INTERVAL", - "default_value": "600", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "List On Master Server", - "description": "Set to true to list on the server list, else set to false.", - "env_variable": "SERVER_LIST", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Repair] Validate Server Files", - "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.", - "env_variable": "VALIDATE", - "default_value": "", - "user_viewable": true, - "user_editable": true, - "rules": "string|nullable", - "field_type": "text" - }, - { - "name": "[Advanced] Server FPS", - "description": "How often the server refreshes. (Default: 30)", - "env_variable": "FPS", - "default_value": "30", - "user_viewable": true, - "user_editable": true, - "rules": "required|integer|min:1", - "field_type": "text" - }, - { - "name": "[Advanced] Enable RCON", - "description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon", - "env_variable": "RCON", - "default_value": "false", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] RCON Password", - "description": "Password required to connect to RCON if it is enabled.", - "env_variable": "RCON_PASS", - "default_value": "somepassword", - "user_viewable": true, - "user_editable": true, - "rules": "required|string", - "field_type": "text" - }, - { - "name": "[Advanced] RCON Port", - "description": "Port used to connect to RCON. Must be allocated to the server for RCON to work.", - "env_variable": "RCON_PORT", - "default_value": "25575", - "user_viewable": true, - "user_editable": false, - "rules": "required|integer|between:1024,65536", - "field_type": "text" - }, - { - "name": "[Advanced] Secure Server", - "description": "(true or false)", - "env_variable": "SERVER_SECURE", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] Admin Only Debug Events", - "description": "(true or false)", - "env_variable": "ADMIN_ONLY_DEBUG_EVENTS", - "default_value": "true", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] Disable Debug Events", - "description": "(true or false)", - "env_variable": "DEBUG_EVENTS", - "default_value": "false", - "user_viewable": true, - "user_editable": true, - "rules": "required|string|in:true,false", - "field_type": "text" - }, - { - "name": "[Advanced] V Rising Dedicated Server App ID", - "description": "Used for installation and updates. Rarely needs to be changed.", - "env_variable": "SRCDS_APPID", - "default_value": "1829350", - "user_viewable": false, - "user_editable": false, - "rules": "required|integer", - "field_type": "text" - }, - { - "name": "[Advanced] Use Windows Branch", - "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.", - "env_variable": "WINDOWS_INSTALL", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|in:1", - "field_type": "text" - }, - { - "name": "WINEDEBUG", - "description": "", - "env_variable": "WINEDEBUG", - "default_value": "-all", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "WINEPATH", - "description": "", - "env_variable": "WINEPATH", - "default_value": "\/home\/container", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - }, - { - "name": "XVFB", - "description": "", - "env_variable": "XVFB", - "default_value": "1", - "user_viewable": false, - "user_editable": false, - "rules": "boolean", - "field_type": "text" - }, - { - "name": "WINETRICKS_RUN", - "description": "", - "env_variable": "WINETRICKS_RUN", - "default_value": "mono vcrun2019 dotnet48 dotnet6", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:50", - "field_type": "text" - }, - { - "name": "WINEARCH", - "description": "", - "env_variable": "WINEARCH", - "default_value": "win64", - "user_viewable": false, - "user_editable": false, - "rules": "required|string|max:20", - "field_type": "text" - } - ] + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-11-09T08:53:29+01:00", + "name": "V Rising BepInEx", + "author": "rehlmgaming@gmail.com", + "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", + "features": [ + "steam_disk_space" + ], + "docker_images": { + "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" + }, + "file_denylist": [], + "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", + "config": { + "files": "{\r\n \"save-data\/Settings\/ServerHostSettings.json\": {\r\n \"parser\": \"json\",\r\n \"find\": {\r\n \"Name\": \"{{server.build.env.SERVER_NAME}}\",\r\n \"Description\": \"{{server.build.env.DESCRIPTION}}\",\r\n \"Port\": \"{{server.build.default.port}}\",\r\n \"QueryPort\": \"{{server.build.env.QUERY_PORT}}\",\r\n \"MaxConnectedUsers\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"MaxConnectedAdmins\": \"{{server.build.env.MAX_ADMINS}}\",\r\n \"ServerFps\": \"{{server.build.env.FPS}}\",\r\n \"SaveName\": \"{{server.build.env.SAVE_NAME}}\",\r\n \"Password\": \"{{server.build.env.SERVER_PASSWORD}}\",\r\n \"Secure\": \"{{server.build.env.SERVER_SECURE}}\",\r\n \"ListOnSteam\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"ListOnEOS\": \"{{server.build.env.SERVER_LIST}}\",\r\n \"AutoSaveCount\": \"{{server.build.env.SAVE_COUNT}}\",\r\n \"AutoSaveInterval\": \"{{server.build.env.SAVE_INTERVAL}}\",\r\n \"GameSettingsPreset\": \"{{server.build.env.GAME_SETTINGS_PRESET}}\",\r\n \"AdminOnlyDebugEvents\": \"{{server.build.env.ADMIN_ONLY_DEBUG_EVENTS}}\",\r\n \"DisableDebugEvents\": \"{{server.build.env.DEBUG_EVENTS}}\",\r\n \"Rcon.Enabled\": \"{{server.build.env.RCON}}\",\r\n \"Rcon.Password\": \"{{server.build.env.RCON_PASS}}\",\r\n \"Rcon.Port\": \"{{server.build.env.RCON_PORT}}\"\r\n }\r\n }\r\n}", + "startup": "{\r\n \"done\": \"Loaded ServerGameSettings\"\r\n}", + "logs": "{}", + "stop": "^C" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n\r\n## File: Pterodactyl V Rising Egg - egg-v-rising.json\r\n## Authors: David Wolfe (Red-Thirten), Kapatheus\r\n## Date: 2022\/05\/28\r\n## License: MIT License\r\n## Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\nclear\r\nRED='\\033[0;31m'\r\nGREEN='\\033[0;32m'\r\nYELLOW='\\033[1;33m'\r\nBLUE='\\033[0;34m'\r\nNC='\\033[0m'\r\n\r\n# Install packages. Default packages below are skipped if using image noted above, thus speeding up the install process.\r\napt -y update\r\napt -y --no-install-recommends install curl jq unzip wget\r\n# Download and install SteamCMD\r\necho -e \"${YELLOW}download and install steamcmd${NC}\"\r\n\r\nexport HOME=\/mnt\/server\r\ncd \/tmp\r\nmkdir -p $HOME\/steamcmd $HOME\/steamapps\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C $HOME\/steamcmd\r\ncd $HOME\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\n\r\n# Install game server using SteamCMD\r\necho -e \"${YELLOW}install V Rising with SteamCMD${NC}\"\r\n\r\n.\/steamcmd.sh +force_install_dir $HOME +login anonymous $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} +quit\r\n\r\n# Set up 32 and 64 bit libraries\r\nmkdir -p $HOME\/.steam\/sdk{32,64}\r\ncp -v linux32\/steamclient.so $HOME\/.steam\/sdk32\/steamclient.so\r\ncp -v linux64\/steamclient.so $HOME\/.steam\/sdk64\/steamclient.so\r\n\r\n# Enable BEPINEX (Credits to: https:\/\/github.com\/ricin\/vrising-bepinex-linux\/blob\/main\/scripts\/start-server.sh)\r\necho -e \"${YELLOW}installing BepInex${NC}\"\r\n\r\n#variables\r\nBEPINEX_VR_TS_URL=https:\/\/v-rising.thunderstore.io\/package\/BepInEx\/BepInExPack_V_Rising\/\r\nCUR_V=\"$(find ${HOME} -maxdepth 1 -name \"BepInEx-*\" | cut -d '-' -f2)\"\r\nBEPINEX_VR_API_DATA=\"$(curl -s -X GET https:\/\/thunderstore.io\/c\/v-rising\/api\/v1\/package\/b86fcaaf-297a-45c8-82a0-fcbd7806fdc4\/ -H \"accept: application\/json\")\"\r\nLAT_V=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].version_number')\"\r\n\r\nif [ -z \"${LAT_V}\" ] && [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${RED}Can't get latest version of BepInEx for V Rising!${NC}\"\r\n echo -e \"${RED}Please try to run without BepInEx for V Rising. Exiting.${NC}\"\r\n exit 1\r\nfi\r\n\r\nif [ -f ${HOME}\/BepInEx.zip ]; then\r\n rm -rf ${HOME}\/BepInEx.zip\r\nfi\r\nif [ -f ${HOME}\/doorstop_config.ini ]; then\r\n sed -i \"\/enabled=false\/c\\enabled=true\" ${HOME}\/doorstop_config.ini\r\nfi\r\n\r\necho -e \"${YELLOW}BepInEx for V Rising Version Check${NC}\"\r\necho -e \"${YELLOW}More info: ${BEPINEX_VR_TS_URL}${NC}\"\r\n\r\nBEPINEX_VR_TS_DOWNLOAD_URL=\"$(echo ${BEPINEX_VR_API_DATA} | jq -r '.versions[0].download_url')\"\r\nif [ -z \"${CUR_V}\" ]; then\r\n echo -e \"${YELLOW}BepInEx for V Rising not found, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-*\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Something went wrong, can't download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n mkdir -p \/tmp\/BepInEx\r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx\r\n if [ $? -eq 0 ];then\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"$CUR_V\" != \"${LAT_V}\" ]; then\r\n echo -e \"${YELLOW}Version missmatch, BepInEx v$CUR_V installed, downloading and installing v${LAT_V} ...${NC}\"\r\n \r\n cd ${HOME}\r\n rm -rf ${HOME}\/BepInEx-$CUR_V\r\n mkdir \/tmp\/Backup\r\n cp -R ${HOME}\/BepInEx\/config \/tmp\/Backup\/\r\n if wget -q -nc --show-progress --progress=bar:force:noscroll -O ${HOME}\/BepInEx.zip --user-agent=Mozilla --content-disposition -E -c \"${BEPINEX_VR_TS_DOWNLOAD_URL}\" ; then\r\n echo -e \"${GREEN}Successfully downloaded BepInEx for V Rising v${LAT_V}${NC}\"\r\n else\r\n echo -e \"${RED}Unable to download BepInEx for V Rising v${LAT_V}. Exiting.${NC}\"\r\n exit 1\r\n fi\r\n \r\n unzip -o ${HOME}\/BepInEx.zip -d \/tmp\/BepInEx \r\n \r\n if [ $? -eq 0 ];then\r\n cp -rf \/tmp\/BepInEx\/BepInEx*\/* ${HOME}\/\r\n cp \/tmp\/BepInEx\/README* ${HOME}\/README_BepInEx_for_VRising.txt\r\n touch ${HOME}\/BepInEx-${LAT_V}\r\n cp -R \/tmp\/Backup\/config ${HOME}\/BepInEx\/\r\n rm -rf ${HOME}\/BepInEx.zip \/tmp\/BepInEx \/tmp\/Backup\r\n else\r\n echo -e \"${RED}Unable to unzip BepInEx archive! Exiting.${NC}\"\r\n exit 1\r\n fi\r\nelif [ \"${CUR_V}\" == \"${LAT_V}\" ]; then\r\n echo -e \"${GREEN}BepInEx v$CUR_V up-to-date!${NC}\"\r\nfi\r\n\r\n## V Rising Setup\r\nmkdir -p $HOME\/save-data\/Settings && cd \"$_\"\r\ncat > ServerHostSettings.json << EOF\r\n{\r\n \"Name\": \"${SERVER_NAME}\",\r\n \"Description\": \"${DESCRIPTION}\",\r\n \"Port\": ${SERVER_PORT},\r\n \"QueryPort\": ${QUERY_PORT},\r\n \"MaxConnectedUsers\": ${MAX_PLAYERS},\r\n \"MaxConnectedAdmins\": ${MAX_ADMINS},\r\n \"ServerFps\": ${FPS},\r\n \"SaveName\": \"${SAVE_NAME}\",\r\n \"Password\": \"${SERVER_PASSWORD}\",\r\n \"Secure\": ${SERVER_SECURE},\r\n \"ListOnMasterServer\": ${SERVER_LIST},\r\n \"AutoSaveCount\": ${SAVE_COUNT},\r\n \"AutoSaveInterval\": ${SAVE_INTERVAL},\r\n \"GameSettingsPreset\": \"${GAME_SETTINGS_PRESET}\",\r\n \"AdminOnlyDebugEvents\": ${ADMIN_ONLY_DEBUG_EVENTS},\r\n \"DisableDebugEvents\": ${DEBUG_EVENTS},\r\n \"Rcon\": {\r\n \"Enabled\": ${RCON},\r\n \"Password\": \"${RCON_PASS}\",\r\n \"Port\": ${RCON_PORT}\r\n }\r\n}\r\nEOF\r\n\r\necho -e \"${BLUE}-----------------------${NC}\"\r\necho -e \"${GREEN}Installation completed${NC}\"\r\necho -e \"${BLUE}-----------------------${NC}\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "\/bin\/bash" + } + }, + "variables": [ + { + "name": "[REQUIRED] Server Query Port", + "description": "UDP port for Steam server list features.", + "env_variable": "QUERY_PORT", + "default_value": "9877", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "Automatic Updates", + "description": "Quickly checks for any server updates on startup, and updates if necessary.", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "Game Settings Preset", + "description": "What preset of game settings the server should run. Some settings may not apply after the save file is first created. Leave empty\/null if you are using a single-player uploaded save or a custom ServerGameSettings.json file in the `~\/save-data\/Settings\/` directory.", + "env_variable": "GAME_SETTINGS_PRESET", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|in:,DuoPvP,HardcorePvP,Level30PvE,Level30PvP,Level50PvE,Level50PvP,Level70PvE,Level70PvP,SoloPvP,StandardPvE_Easy,StandardPvE_Hard,StandardPvE,StandardPvP_Easy,StandardPvP_Hard,StandardPVP", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "Name of the server that will appear in the server list.", + "env_variable": "SERVER_NAME", + "default_value": "V Rising Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Description", + "description": "Short description of server purpose, rules, and the message of the day.", + "env_variable": "DESCRIPTION", + "default_value": "Welcome to the server!", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Max Connected Users", + "description": "Max number of concurrent players on the server.", + "env_variable": "MAX_PLAYERS", + "default_value": "40", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "Max Connected Admins", + "description": "Max number of admins to allow connection even when the server is full.", + "env_variable": "MAX_ADMINS", + "default_value": "4", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Server Password", + "description": "Password required to join the server. Leave blank to have no password.", + "env_variable": "SERVER_PASSWORD", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Save Name", + "description": "Name of save file \/ directory.", + "env_variable": "SAVE_NAME", + "default_value": "world1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Auto Save Count", + "description": "Number of autosaves to keep.", + "env_variable": "SAVE_COUNT", + "default_value": "50", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:0", + "field_type": "text" + }, + { + "name": "Auto Save Interval", + "description": "Interval in seconds between each autosave.", + "env_variable": "SAVE_INTERVAL", + "default_value": "600", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "List On Master Server", + "description": "Set to true to list on the server list, else set to false.", + "env_variable": "SERVER_LIST", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Repair] Validate Server Files", + "description": "Leave empty (no value) for OFF or type \"true\" or \"1\" for ON. Validates all server files when Automatic Updates is enabled. Note: This will significantly increase server startup times, so it is recommended to only enable this when needed.", + "env_variable": "VALIDATE", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "[Advanced] Server FPS", + "description": "How often the server refreshes. (Default: 30)", + "env_variable": "FPS", + "default_value": "30", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|min:1", + "field_type": "text" + }, + { + "name": "[Advanced] Enable RCON", + "description": "See the following link for info on how to connect and use RCON: https:\/\/github.com\/StunlockStudios\/vrising-dedicated-server-instructions#rcon", + "env_variable": "RCON", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] RCON Password", + "description": "Password required to connect to RCON if it is enabled.", + "env_variable": "RCON_PASS", + "default_value": "somepassword", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "[Advanced] RCON Port", + "description": "Port used to connect to RCON. Must be allocated to the server for RCON to work.", + "env_variable": "RCON_PORT", + "default_value": "25575", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1024,65536", + "field_type": "text" + }, + { + "name": "[Advanced] Secure Server", + "description": "(true or false)", + "env_variable": "SERVER_SECURE", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] Admin Only Debug Events", + "description": "(true or false)", + "env_variable": "ADMIN_ONLY_DEBUG_EVENTS", + "default_value": "true", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] Disable Debug Events", + "description": "(true or false)", + "env_variable": "DEBUG_EVENTS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "[Advanced] V Rising Dedicated Server App ID", + "description": "Used for installation and updates. Rarely needs to be changed.", + "env_variable": "SRCDS_APPID", + "default_value": "1829350", + "user_viewable": false, + "user_editable": false, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "[Advanced] Use Windows Branch", + "description": "Tells the installer\/updater to only download the Windows branch of the server (the only branch currently available) so that it can run on Wine. Cannot be changed.", + "env_variable": "WINDOWS_INSTALL", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|in:1", + "field_type": "text" + }, + { + "name": "WINEDEBUG", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "WINEPATH", + "description": "", + "env_variable": "WINEPATH", + "default_value": "\/home\/container", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "XVFB", + "description": "", + "env_variable": "XVFB", + "default_value": "1", + "user_viewable": false, + "user_editable": false, + "rules": "boolean", + "field_type": "text" + }, + { + "name": "WINETRICKS_RUN", + "description": "", + "env_variable": "WINETRICKS_RUN", + "default_value": "mono vcrun2019 dotnet48 dotnet6", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "WINEARCH", + "description": "", + "env_variable": "WINEARCH", + "default_value": "win64", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] } \ No newline at end of file From d74090b8599b1ce394c91fab5abc52baffbdbedf Mon Sep 17 00:00:00 2001 From: Elite Espeon Date: Sat, 11 Nov 2023 10:37:08 -0500 Subject: [PATCH 247/251] Add Resonite --- README.md | 1 + game_eggs/README.md | 1 + game_eggs/steamcmd_servers/README.md | 3 + .../steamcmd_servers/resonite/Config.json | 48 ++++++++ game_eggs/steamcmd_servers/resonite/README.md | 10 ++ .../resonite/egg-resonite.json | 112 ++++++++++++++++++ 6 files changed, 175 insertions(+) create mode 100644 game_eggs/steamcmd_servers/resonite/Config.json create mode 100644 game_eggs/steamcmd_servers/resonite/README.md create mode 100644 game_eggs/steamcmd_servers/resonite/egg-resonite.json diff --git a/README.md b/README.md index 6afef6e6..ac6a3b72 100644 --- a/README.md +++ b/README.md @@ -289,6 +289,7 @@ If you are reading this it looks like you are looking to add an egg to your serv * [Post Scriptum](game_eggs/steamcmd_servers/post_scriptum) * [Project Zomboid](game_eggs/steamcmd_servers/project_zomboid) * [Quake Live](game_eggs/steamcmd_servers/quake_live) +* [Resonite](game_eggs/steamcmd_servers/resonite) * [Rising World](game_eggs/steamcmd_servers/rising_world) * [Risk Of Rain 2](game_eggs/steamcmd_servers/risk_of_rain_2) * [Rust](game_eggs/steamcmd_servers/rust) diff --git a/game_eggs/README.md b/game_eggs/README.md index 13018792..9c8863db 100644 --- a/game_eggs/README.md +++ b/game_eggs/README.md @@ -182,6 +182,7 @@ * [Post Scriptum](steamcmd_servers/post_scriptum) * [Project Zomboid](steamcmd_servers/project_zomboid) * [Quake Live](steamcmd_servers/quake_live) +* [Resonite](steamcmd_servers/resonite) * [Rising World](steamcmd_servers/rising_world) * [Legacy Java](steamcmd_servers/rising_world/legacy) * [Unity](steamcmd_servers/rising_world/unity) diff --git a/game_eggs/steamcmd_servers/README.md b/game_eggs/steamcmd_servers/README.md index 82b620a2..64825437 100644 --- a/game_eggs/steamcmd_servers/README.md +++ b/game_eggs/steamcmd_servers/README.md @@ -189,6 +189,9 @@ This is a collection of servers that use SteamCMD to install. [Quake Live](quake_live) +## Resonite +[Resonite](resonite) + ## Rising World * [Rising World](rising_world) diff --git a/game_eggs/steamcmd_servers/resonite/Config.json b/game_eggs/steamcmd_servers/resonite/Config.json new file mode 100644 index 00000000..ad0723f6 --- /dev/null +++ b/game_eggs/steamcmd_servers/resonite/Config.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://raw.githubusercontent.com/Yellow-Dog-Man/JSONSchemas/main/schemas/HeadlessConfig.schema.json", + "universeId": null, + "tickRate": 60.0, + "maxConcurrentAssetTransfers": 4, + "usernameOverride": null, + "loginCredential": "", + "loginPassword": "", + "startWorlds": [{ + "isEnabled": true, + "saveAsOwner": null, + "autoInviteUsernames": null, + "parentSessionIds": null, + "autoInviteMessage": null, + "autoRecover": true, + "idleRestartInterval": -1.0, + "forcedRestartInterval": -1.0, + "saveOnExit": false, + "autosaveInterval": -1.0, + "autoSleep": true, + "sessionName": null, + "customSessionId": null, + "description": null, + "maxUsers": 32, + "accessLevel": "Anyone", + "hideFromPublicListing": null, + "tags": null, + "mobileFriendly": false, + "loadWorldURL": null, + "loadWorldPresetName": "SpaceWorld", + "overrideCorrespondingWorldId": null, + "forcePort": null, + "keepOriginalRoles": false, + "defaultUserRoles": null, + "roleCloudVariable": null, + "allowUserCloudVariable": null, + "denyUserCloudVariable": null, + "requiredUserJoinCloudVariable": null, + "requiredUserJoinCloudVariableDenyMessage": null, + "awayKickMinutes": -1.0 + }], + "dataFolder": null, + "cacheFolder": null, + "logsFolder": null, + "allowedUrlHosts": null, + "autoSpawnItems": null, + "metamovieRoles": null +} \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/resonite/README.md b/game_eggs/steamcmd_servers/resonite/README.md new file mode 100644 index 00000000..e317827a --- /dev/null +++ b/game_eggs/steamcmd_servers/resonite/README.md @@ -0,0 +1,10 @@ +# Resonite headless client +## From https://resonite.com +Dive into a brand new digital universe with infinite possibilities, socialize and hang out with people around the world or to build, create and develop anything. + +# Notice + +To use this egg, you will need a beta code and a Steam account. Currently the beta code can only acquired by going to the Resonite Patreon (https://www.patreon.com/Resonite), and subscribing to the "Discoverer" level. Then you will be able to message the Resonite bot in-game with "/headlessCode", and receive the beta code. The account will also need to have Resonite in its library. You can do this by running `app_license_request 2519830` in steamcmd if you have never installed Resonite on this Steam account. +For more information related to Headless configuration, ask in the official Resonite Discord: https://discord.gg/resonite + +This game does not require any port forwarding, but instead uses UDP NAT hole punching (and/or relay) on a random port. You can force a certain port in the config for direct connections with the `forcePort` directive, but most communcation is done via NAT hole punch using LiteNetLib (LNL). \ No newline at end of file diff --git a/game_eggs/steamcmd_servers/resonite/egg-resonite.json b/game_eggs/steamcmd_servers/resonite/egg-resonite.json new file mode 100644 index 00000000..f00fcd3d --- /dev/null +++ b/game_eggs/steamcmd_servers/resonite/egg-resonite.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", + "meta": { + "version": "PTDL_v2", + "update_url": null + }, + "exported_at": "2023-11-11T08:33:24-05:00", + "name": "Resonite", + "author": "espeon@espeon.dev", + "description": "Enter a novel digital universe with infinite possibilities. Whether you resonate with people around the world in a casual conversation, playing games and socializing or you riff off each other when creating anything from art to programming complex games, you'll find your place here.", + "features": null, + "docker_images": { + "Mono": "ghcr.io\/parkervcp\/yolks:mono_latest" + }, + "file_denylist": [], + "startup": "mono Headless\/Resonite.exe -c .\/Config\/Config.json -l .\/Logs $(if {{ENABLE_MODLOADER}}; then echo \"-LoadAssembly \".\/Libraries\/ResoniteModLoader.dll\"\"; fi)", + "config": { + "files": "{}", + "startup": "{\r\n \"done\": \"World running...\"\r\n}", + "logs": "{}", + "stop": "shutdown" + }, + "scripts": { + "installation": { + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\necho -e \"steam user is not set.\\n\"\r\necho -e \"Using anonymous user.\\n\"\r\nSTEAM_USER=anonymous\r\nSTEAM_PASS=\"\"\r\nSTEAM_AUTH=\"\"\r\nelse\r\necho -e \"user set to ${STEAM_USER}\"\r\nfi\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) -betapassword ${SRCDS_BETAPASS} ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n## check if config file exists\r\necho \"Looking for existing config file...\"\r\nif ! [ -f \"\/mnt\/server\/Headless\/Config\/Config.json\" ]; then\r\necho \"Config does not exist, creating new config.\"\r\n## create default config\r\nmkdir -p \/mnt\/server\/Headless\/Config\r\ncurl -sSL -o \/mnt\/server\/Headless\/Config\/Config.json https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/game_eggs\/steamcmd_servers\/resonite\/Config.json\r\nelse\r\n## leave existing config\r\necho \"Config already exists, leaving it as is.\"\r\nfi\r\n## check if mod loader is enabled\r\necho \"Checking if mod loader needs to be installed...\"\r\nif [ \"$ENABLE_MODLOADER\" = true ]; then\r\necho \"Installing\/Updating mod loader as its enabled.\"\r\nmkdir -p \/mnt\/server\/Libraries\r\nmkdir -p \/mnt\/server\/rml_libs\r\nmkdir -p \/mnt\/server\/rml_mods\r\ncurl -sSL -o \/mnt\/server\/Libraries\/ResoniteModLoader.dll https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader\/releases\/latest\/download\/ResoniteModLoader.dll\r\ncurl -sSL -o \/mnt\/server\/rml_libs\/0Harmony.dll https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader\/releases\/latest\/download\/0Harmony.dll\r\nelse\r\necho \"Skipping installing mod loader as its not enabled.\"\r\nfi\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:debian", + "entrypoint": "bash" + } + }, + "variables": [ + { + "name": "Steam Account User", + "description": "The username for your Steam account.", + "env_variable": "STEAM_USER", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Steam Account Password", + "description": "The password for your Steam account.", + "env_variable": "STEAM_PASS", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:128", + "field_type": "text" + }, + { + "name": "Steam Account Token\/Code", + "description": "The Steam Guard code or Login Token emailed to you.", + "env_variable": "STEAM_AUTH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Enable Mod Loader", + "description": "See: https:\/\/github.com\/resonite-modding-group\/ResoniteModLoader for more information on Resonite Mod Loader.", + "env_variable": "ENABLE_MODLOADER", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + }, + { + "name": "Beta Password", + "description": "This is the \"Beta Password\" that is only acquired by going to the Resonite Patreon, subscribing to the tier with Headless access, and then after your Resonite account shows \"Patreon Supporter\", message the Resonite bot in game with \/headlessCode, and paste that code here.", + "env_variable": "SRCDS_BETAPASS", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:30", + "field_type": "text" + }, + { + "name": "Beta branch name", + "description": "", + "env_variable": "SRCDS_BETAID", + "default_value": "headless", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|", + "field_type": "text" + }, + { + "name": "Auto update", + "description": "Auto update the server on startup", + "env_variable": "AUTO_UPDATE", + "default_value": "1", + "user_viewable": true, + "user_editable": true, + "rules": "required|boolean", + "field_type": "text" + }, + { + "name": "Steam App ID", + "description": "", + "env_variable": "SRCDS_APPID", + "default_value": "2519830", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file From 39b6cd7808d30498c190a20b60f9c6209f0653fb Mon Sep 17 00:00:00 2001 From: Antony Rizzitelli Date: Sun, 12 Nov 2023 11:19:19 +0100 Subject: [PATCH 248/251] V Rising BepInEx: Wine staging version (#2550) --- .../v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json index 41de0ab3..46bb2ff4 100644 --- a/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json +++ b/game_eggs/steamcmd_servers/v_rising/v_rising_bepinex/egg-v-rising-bep-in-ex.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-11-09T08:53:29+01:00", + "exported_at": "2023-11-10T17:55:31+01:00", "name": "V Rising BepInEx", "author": "rehlmgaming@gmail.com", "description": "Awaken as a vampire. Hunt for blood in nearby settlements to regain your strength and evade the scorching sun to survive. Raise your castle and thrive in an ever-changing open world full of mystery. Gain allies online and conquer the land of the living.", @@ -12,7 +12,7 @@ "steam_disk_space" ], "docker_images": { - "ghcr.io\/parkervcp\/yolks:wine_latest": "ghcr.io\/parkervcp\/yolks:wine_latest" + "ghcr.io\/parkervcp\/yolks:wine_staging": "ghcr.io\/parkervcp\/yolks:wine_staging" }, "file_denylist": [], "startup": "WINEDLLOVERRIDES=\"winhttp=n,b\"; xvfb-run wine .\/VRisingServer.exe -persistentDataPath save-data -address 0.0.0.0", @@ -284,7 +284,7 @@ "name": "WINETRICKS_RUN", "description": "", "env_variable": "WINETRICKS_RUN", - "default_value": "mono vcrun2019 dotnet48 dotnet6", + "default_value": "mono vcrun2022", "user_viewable": false, "user_editable": false, "rules": "required|string|max:50", From 54585fa113a2118a7a80c1be0de2f03efa4fdc01 Mon Sep 17 00:00:00 2001 From: Kevin Date: Mon, 13 Nov 2023 14:20:54 -0300 Subject: [PATCH 249/251] Remove mtasa egg (#2551) * Remove unused mtasa folder * Update Multi Theft Auto --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- game_eggs/gta/mtasa/egg-multi-theft-auto.json | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/game_eggs/gta/mtasa/egg-multi-theft-auto.json b/game_eggs/gta/mtasa/egg-multi-theft-auto.json index d2cfbc2a..bab547e8 100644 --- a/game_eggs/gta/mtasa/egg-multi-theft-auto.json +++ b/game_eggs/gta/mtasa/egg-multi-theft-auto.json @@ -1,29 +1,29 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2022-05-25T15:27:15+02:00", + "exported_at": "2023-11-13T18:18:13+01:00", "name": "Multi Theft Auto", "author": "info@six-gaming.com", "description": "What more could you want? Multi Theft Auto provides the best online Grand Theft Auto experience there is. Read on to find out more.", "features": null, - "images": [ - "ghcr.io\/parkervcp\/yolks:ubuntu" - ], + "docker_images": { + "ghcr.io\/parkervcp\/games:mta": "ghcr.io\/parkervcp\/games:mta" + }, "file_denylist": [], "startup": ".\/mta-server64 --port {{SERVER_PORT}} --httpport {{SERVER_WEBPORT}} -n", "config": { "files": "{}", "startup": "{\r\n \"done\": \"Server started and is ready to accept connections\"\r\n}", - "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs\/latest.log\"\r\n}", + "logs": "{}", "stop": "shutdown" }, "scripts": { "installation": { - "script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl unzip lib32gcc1 ca-certificates\r\n\r\ncd \/tmp\r\ncurl -L -o multitheftauto_linux_x64.tar.gz https:\/\/linux.mtasa.com\/dl\/multitheftauto_linux_x64.tar.gz\r\ncurl -L -o mta-baseconfig.tar.gz https:\/\/linux.mtasa.com\/dl\/baseconfig.tar.gz\r\ncurl -L -o mtasa-resources-latest.zip http:\/\/mirror.mtasa.com\/mtasa\/resources\/mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xvf multitheftauto_linux_x64.tar.gz\r\ncp -rf multitheftauto_linux_x64\/* \/mnt\/server\r\n\r\nif [ ! -f \/mnt\/server\/x64\/libmysqlclient.so.16 ]; then\r\n curl -L http:\/\/nightly.mtasa.com\/files\/libmysqlclient.so.16 -o \/mnt\/server\/x64\/libmysqlclient.so.16\r\nfi\r\n\r\nmkdir -p \/mnt\/server\/mods\/deathmatch\/resources\r\nunzip -o -d \/mnt\/server\/mods\/deathmatch\/resources mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server-conf\r\ntar -xvf mta-baseconfig.tar.gz\r\ncp -rf baseconfig\/* \/mnt\/server\/mods\/deathmatch\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\necho \"done\"", - "container": "ubuntu:18.04", + "script": "#!\/bin\/bash\r\n\r\ncd \/tmp\r\ncurl -L -o multitheftauto_linux_x64.tar.gz https:\/\/linux.mtasa.com\/dl\/multitheftauto_linux_x64.tar.gz\r\ncurl -L -o mta-baseconfig.tar.gz https:\/\/linux.mtasa.com\/dl\/baseconfig.tar.gz\r\ncurl -L -o mtasa-resources-latest.zip http:\/\/mirror.mtasa.com\/mtasa\/resources\/mtasa-resources-latest.zip\r\n\r\nmkdir -p \/mnt\/server\r\ntar -xvf multitheftauto_linux_x64.tar.gz\r\ncp -rf multitheftauto_linux_x64\/* \/mnt\/server\r\n\r\nif [ ! -f \/mnt\/server\/x64\/libmysqlclient.so.16 ]; then\r\n curl -L http:\/\/nightly.mtasa.com\/files\/libmysqlclient.so.16 -o \/mnt\/server\/x64\/libmysqlclient.so.16\r\nfi\r\n\r\nmkdir -p \/mnt\/server\/mods\/deathmatch\/resources\r\nunzip -o -d \/mnt\/server\/mods\/deathmatch\/resources mtasa-resources-latest.zip\r\n\r\ntar -xvf mta-baseconfig.tar.gz\r\ncp -rf baseconfig\/* \/mnt\/server\/mods\/deathmatch\r\n\r\nchown -R root:root \/mnt\r\n\r\nexport HOME=\/mnt\/server\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", + "container": "ghcr.io\/parkervcp\/installers:ubuntu", "entrypoint": "bash" } }, @@ -35,7 +35,8 @@ "default_value": "22005", "user_viewable": true, "user_editable": false, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" } ] -} +} \ No newline at end of file From fe0d694c417785e6fe21e7201bef989b7f1d128b Mon Sep 17 00:00:00 2001 From: Andrew Date: Mon, 13 Nov 2023 12:29:44 -0500 Subject: [PATCH 250/251] Update insurgency sandstorm (#2526) * Replace the old image to one that's supported. This solves the problem of "GLIBCXX_3.4.26" missing. * Cleanup: Insurgency: Sandstorm --------- Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- .../egg-insurgency--sandstorm.json | 75 ++++++++++++++----- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json b/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json index 562e9f4c..6f579f7a 100644 --- a/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json +++ b/game_eggs/steamcmd_servers/insurgency_sandstorm/egg-insurgency--sandstorm.json @@ -1,30 +1,28 @@ { "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO", "meta": { - "version": "PTDL_v1", + "version": "PTDL_v2", "update_url": null }, - "exported_at": "2021-11-26T14:52:26+01:00", + "exported_at": "2023-11-13T18:26:59+01:00", "name": "Insurgency: Sandstorm", "author": "brycea@terrahost.cloud", "description": "Insurgency: Sandstorm is a team-based, tactical FPS based on lethal close quarters combat and objective-oriented multiplayer gameplay. Experience the intensity of modern combat where skill is rewarded, and teamwork wins the fight.", - "features": [ - "steam_disk_space" - ], - "images": [ - "ghcr.io\/parkervcp\/games:source" - ], + "features": null, + "docker_images": { + "ghcr.io\/parkervcp\/steamcmd:ubuntu": "ghcr.io\/parkervcp\/steamcmd:ubuntu" + }, "file_denylist": [], - "startup": "\/home\/container\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping {{MAP_NAME}}?Scenario={{SCENARIO}}?MaxPlayers={{MAX_PLAYERS}} -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log -hostname=\"{{HOSTNAME}}\"", + "startup": "\/home\/container\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping {{MAP_NAME}}?Scenario={{SCENARIO}}?MaxPlayers={{MAX_PLAYERS}} -Port={{SERVER_PORT}} -QueryPort={{QUERY_PORT}} -log -hostname=\"{{HOSTNAME}}\" -GSLTToken={{GSLTT}} -GameStats -GameStatsToken={{GST}} {{ADDSWITCHES}}", "config": { "files": "{}", - "startup": "{\r\n \"done\": \"LogGameState: Match State Changed from LoadingAssets to WaitingToStart\",\r\n \"userInteraction\": []\r\n}", - "logs": "{\r\n \"custom\": false,\r\n \"location\": \"latest.log\"\r\n}", + "startup": "{\r\n \"done\": \"LogGameState: Match State Changed from LoadingAssets to WaitingToStart\"\r\n}", + "logs": "{}", "stop": "^C" }, "scripts": { "installation": { - "script": "apt -y update\r\napt -y --no-install-recommends install curl lib32gcc-s1 ca-certificates\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\nchmod +x \/mnt\/server\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping", + "script": "#!\/bin\/bash\r\n# steamcmd Base Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\n# Image to install with is 'ghcr.io\/parkervcp\/installers:debian'\r\n\r\n##\r\n#\r\n# Variables\r\n# STEAM_USER, STEAM_PASS, STEAM_AUTH - Steam user setup. If a user has 2fa enabled it will most likely fail due to timeout. Leave blank for anon install.\r\n# WINDOWS_INSTALL - if it's a windows server you want to install set to 1\r\n# SRCDS_APPID - steam app id found here - https:\/\/developer.valvesoftware.com\/wiki\/Dedicated_Servers_List\r\n# SRCDS_BETAID - beta branch of a steam app. Leave blank to install normal branch\r\n# SRCDS_BETAPASS - password for a beta branch should one be required during private or closed testing phases.. Leave blank for no password.\r\n# INSTALL_FLAGS - Any additional SteamCMD flags to pass during install.. Keep in mind that steamcmd auto update process in the docker image might overwrite or ignore these when it performs update on server boot.\r\n# AUTO_UPDATE - Adding this variable to the egg allows disabling or enabling automated updates on boot. Boolean value. 0 to disable and 1 to enable.\r\n#\r\n ##\r\n\r\n\r\n## just in case someone removed the defaults.\r\nif [[ \"${STEAM_USER}\" == \"\" ]] || [[ \"${STEAM_PASS}\" == \"\" ]]; then\r\n echo -e \"steam user is not set.\\n\"\r\n echo -e \"Using anonymous user.\\n\"\r\n STEAM_USER=anonymous\r\n STEAM_PASS=\"\"\r\n STEAM_AUTH=\"\"\r\nelse\r\n echo -e \"user set to ${STEAM_USER}\"\r\nfi\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\nmkdir -p \/mnt\/server\/steamapps # Fix steamcmd disk write error when this folder is missing\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +force_install_dir \/mnt\/server +login ${STEAM_USER} ${STEAM_PASS} ${STEAM_AUTH} $( [[ \"${WINDOWS_INSTALL}\" == \"1\" ]] && printf %s '+@sSteamCmdForcePlatformType windows' ) +app_update ${SRCDS_APPID} $( [[ -z ${SRCDS_BETAID} ]] || printf %s \"-beta ${SRCDS_BETAID}\" ) $( [[ -z ${SRCDS_BETAPASS} ]] || printf %s \"-betapassword ${SRCDS_BETAPASS}\" ) ${INSTALL_FLAGS} validate +quit ## other flags may be needed depending on install. looking at you cs 1.6\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## add below your custom commands if needed\r\n\r\ncp -v \/mnt\/server\/steam\/linux32\/steamclient.so \/mnt\/server\/.steam\/sdk32\/steamclient.so\r\nchmod +x \/mnt\/server\/Insurgency\/Binaries\/Linux\/InsurgencyServer-Linux-Shipping\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"", "container": "ghcr.io\/parkervcp\/installers:debian", "entrypoint": "bash" } @@ -37,7 +35,8 @@ "default_value": "581330", "user_viewable": true, "user_editable": false, - "rules": "nullable|numeric" + "rules": "nullable|numeric", + "field_type": "text" }, { "name": "Server Name", @@ -46,7 +45,8 @@ "default_value": "My Insurgency Server", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:64" + "rules": "required|string|max:64", + "field_type": "text" }, { "name": "Query Port", @@ -55,7 +55,8 @@ "default_value": "27131", "user_viewable": true, "user_editable": true, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Max Players", @@ -64,7 +65,8 @@ "default_value": "28", "user_viewable": true, "user_editable": true, - "rules": "required|numeric" + "rules": "required|numeric", + "field_type": "text" }, { "name": "Default Map", @@ -73,7 +75,8 @@ "default_value": "Canyon", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" }, { "name": "Scenario Name", @@ -82,7 +85,38 @@ "default_value": "Scenario_Crossing_Checkpoint_Insurgents", "user_viewable": true, "user_editable": true, - "rules": "required|string" + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Additional Switches", + "description": "Please see this guide for available switches https:\/\/mod.io\/g\/insurgencysandstorm\/r\/server-admin-guide", + "env_variable": "ADDSWITCHES", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Game Stats Token", + "description": "Generate your token here https:\/\/gamestats.sandstorm.game\/. This is required to have your server show up in the server browser.", + "env_variable": "GST", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "GSLT Authentication", + "description": "Generate your token here https:\/\/steamcommunity.com\/dev\/managegameservers. This is required to have your server show up in the server browser.", + "env_variable": "GSLTT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:32", + "field_type": "text" }, { "name": "Auto Update", @@ -91,7 +125,8 @@ "default_value": "1", "user_viewable": true, "user_editable": true, - "rules": "required|string|max:20" + "rules": "required|boolean", + "field_type": "text" } ] -} +} \ No newline at end of file From 3037204090d412733ef29e15593a447d4977cc8f Mon Sep 17 00:00:00 2001 From: Blood Shot <133905860+dagbs@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:34:59 -0500 Subject: [PATCH 251/251] Multiserver Fix & Known Issues updated [ARK: Survival Ascended] (#2552) - Multiserver Fix & Known Issues updated - Added a -Port flag in addition to the needed param to enable multiserver support ( @That411guy ) - Added Known Issue for Proxmox VMs in README - add Authors / Contributors - fix Server name having spaces + add That411Guy to the README --------- Co-authored-by: Derrick A Co-authored-by: Quinten <67589015+QuintenQVD0@users.noreply.github.com> --- .../ark_survival_ascended/README.md | 71 +++++++++++++++++-- .../egg-ark--survival-ascended.json | 4 +- 2 files changed, 67 insertions(+), 8 deletions(-) diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md index 054be0cb..38852a12 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/README.md +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/README.md @@ -3,6 +3,67 @@ Steam Description : ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits! +### Authors / Contributors + + + + + + + + + + + + +
+ +
Blood Shot +
+
+ 💻 + 🔨 +
+ +
gOOvER +
+
+ 💻 +
+ +
heckler +
+
+ 💻 +
+ +
Brandon +
+
+ 💻 +
+ +
Alexander Ballauf +
+
+ 💻 +
+ +
MachinegunMartyf +
+
+ 💡 +
+ +
That411Guy +
+
+ 💻 +
+ + + +--- ## Troubleshooting 1) Try starting the server with no mods on a fresh install. @@ -23,12 +84,10 @@ The number is in reference to RAM/Memory usage. ## Known Issues -1) ARK: Survival Ascended, currently, does not support more than one server per IP. -These are Windows Server files running on a Linux container; so, we believe this is the issue. +1) Proxmox VM(s): You'll need to change your Processor Type to `Host` (Default: kvm64) 2) ARK's wiki heavily reference A:SE and not all features are available in A:SA. - ## Recommended server settings ### Minimum RAM @@ -39,11 +98,11 @@ See the following - ## Server Ports -Note: RCON doesn't need to be public but is required for console commands (in ptero) +Note: The Peer port is not an option that can be set and will always be +1 from the Game Port! | Port | Default | | --------------- | ------- | | Game | 7777 | -| Raw UDP | 7778 | +| Peer (Game+1) | 7778 | | Query | 27015 | -| RCON | 37015 | +| RCON (optional) | 37015 | diff --git a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json index e2c296d3..4b073205 100644 --- a/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json +++ b/game_eggs/steamcmd_servers/ark_survival_ascended/egg-ark--survival-ascended.json @@ -4,7 +4,7 @@ "version": "PTDL_v2", "update_url": null }, - "exported_at": "2023-11-01T12:21:14-04:00", + "exported_at": "2023-11-12T11:57:56+01:00", "name": "ARK: Survival Ascended", "author": "blood@darkartsgaming.com", "description": "ARK is reimagined from the ground-up into the next-generation of video game technology with Unreal Engine 5! Form a tribe, tame & breed hundreds of unique dinosaurs and primeval creatures, explore, craft, build, and fight your way to the top of the food-chain. Your new world awaits!", @@ -15,7 +15,7 @@ "Proton": "ghcr.io\/parkervcp\/steamcmd:proton" }, "file_denylist": [], - "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} KeepAlive && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\"{{SESSION_NAME}}\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", + "startup": "rmv() { echo \"stopping server\"; rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} KeepAlive && rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD} DoExit && wait ${ARK_PID}; echo \"Server Closed\"; exit; }; trap rmv 15 2; proton run .\/ShooterGame\/Binaries\/Win64\/ArkAscendedServer.exe {{SERVER_MAP}}?listen?MaxPlayers={{MAX_PLAYERS}}?SessionName=\\\"{{SESSION_NAME}}\\\"?Port={{SERVER_PORT}}?QueryPort={{QUERY_PORT}}?RCONPort={{RCON_PORT}}?RCONEnabled=True$( [ \"$SERVER_PVE\" == \"0\" ] || printf %s '?ServerPVE=True' )?ServerPassword=\"{{SERVER_PASSWORD}}\"{{ARGS_PARAMS}}?ServerAdminPassword=\"{{ARK_ADMIN_PASSWORD}}\" -WinLiveMaxPlayers={{MAX_PLAYERS}} -oldconsole -servergamelog$( [ -z \"$MOD_IDS\" ] || printf %s ' -mods=' $MOD_IDS )$( [ \"$BATTLE_EYE\" == \"1\" ] || printf %s ' -NoBattlEye' ) -Port={{SERVER_PORT}} {{ARGS_FLAGS}} & ARK_PID=$! ; tail -c0 -F .\/ShooterGame\/Saved\/Logs\/ShooterGame.log --pid=$ARK_PID & until echo \"waiting for rcon connection...\"; (rcon -t rcon -a 127.0.0.1:${RCON_PORT} -p ${ARK_ADMIN_PASSWORD})<&0 & wait $!; do sleep 5; done", "config": { "files": "{\r\n \"ShooterGame\/Saved\/Config\/WindowsServer\/GameUserSettings.ini\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"MaxPlayers=\": \"MaxPlayers={{server.build.env.MAX_PLAYERS}}\",\r\n \"ServerAdminPassword=\": \"ServerAdminPassword={{server.build.env.ARK_ADMIN_PASSWORD}}\"\r\n }\r\n }\r\n}", "startup": "{\r\n \"done\": \"Waiting commands for 127.0.0.1:\"\r\n}",