From 963018961c3b5d0c82b9857a6aad5728ba8a0615 Mon Sep 17 00:00:00 2001 From: QuintenQVD0 Date: Sun, 2 Jun 2024 20:55:02 +0200 Subject: [PATCH] ptero eggs compatibility --- ...l-liteloader-bedrock-dedicated-server.json | 112 ++++++++++++++++++ .../egg-pterodactyl-power-nukkit-x.json | 52 ++++++++ ...g-pterodactyl-vanilla-bedrock-a-r-m64.json | 94 +++++++++++++++ .../egg-pterodactyl-vanilla-bedrock.json | 94 +++++++++++++++ bedrock/gomint/egg-pterodactyl-go-mint.json | 38 ++++++ bedrock/nukkit/egg-pterodactyl-nukkit.json | 65 ++++++++++ .../egg-pterodactyl-pocketmine-m-p.json | 42 +++++++ ...pterodactyl-purpur--geyser--floodgate.json | 69 +++++++++++ java/cuberite/egg-pterodactyl-cuberite.json | 66 +++++++++++ .../egg-pterodactyl-curse-forge-generic.json | 70 +++++++++++ java/fabric/egg-pterodactyl-fabric.json | 80 +++++++++++++ java/folia/egg-pterodactyl-folia.json | 78 ++++++++++++ .../forge/egg-pterodactyl-forge-enhanced.json | 80 +++++++++++++ ...-pterodactyl-f-t-b-modpacks-ch-server.json | 80 +++++++++++++ .../egg-pterodactyl-f-t-b-revelation.json | 46 +++++++ .../egg-pterodactyl-feed-the-beast.json | 96 +++++++++++++++ java/glowstone/egg-pterodactyl-glowstone.json | 96 +++++++++++++++ java/krypton/egg-pterodactyl-krypton.json | 60 ++++++++++ java/limbo/egg-pterodactyl-limbo.json | 42 +++++++ java/magma/egg-pterodactyl-magma.json | 70 +++++++++++ .../egg-pterodactyl-modrinth-generic.json | 59 +++++++++ java/mohist/egg-pterodactyl-mohist.json | 70 +++++++++++ .../nanolimbo/egg-pterodactyl-nano-limbo.json | 66 +++++++++++ java/neoforge/egg-pterodactyl-neo-forge.json | 59 +++++++++ java/paper/egg-pterodactyl-paper.json | 81 +++++++++++++ java/purpur/egg-pterodactyl-purpur.json | 71 +++++++++++ java/quilt/egg-pterodactyl-quilt.json | 56 +++++++++ java/spigot/egg-pterodactyl-spigot.json | 70 +++++++++++ .../egg-pterodactyl-sponge-forge.json | 70 +++++++++++ .../egg-pterodactyl-sponge-vanilla.json | 59 +++++++++ .../Tekkit-2/egg-pterodactyl-tekkit2.json | 46 +++++++ .../Tekkit/egg-pterodactyl-tekkit.json | 49 ++++++++ ...egg-pterodactyl-attack-of-the-b--team.json | 46 +++++++ .../egg-pterodactyl-blightfall.json | 46 +++++++ .../hexxit/egg-pterodactyl-hexxit.json | 46 +++++++ .../egg-pterodactyl-tekkit-classic.json | 49 ++++++++ .../egg-pterodactyl-tekkit-legends.json | 46 +++++++ .../egg-pterodactyl-the1-12-2-pack.json | 46 +++++++ .../egg-pterodactyl-the1-7-10-pack.json | 46 +++++++ .../egg-pterodactyl-vanilla-cord.json | 60 ++++++++++ .../egg-pterodactyl-waterdog-p-e.json | 59 +++++++++ .../waterdog/egg-pterodactyl-waterdog.json | 59 +++++++++ .../egg-pterodactyl-travertine.json | 79 ++++++++++++ .../velocity/egg-pterodactyl-velocity.json | 80 +++++++++++++ .../viaaas/egg-pterodactyl-v-i-aaa-s.json | 59 +++++++++ .../waterfall/egg-pterodactyl-waterfall.json | 79 ++++++++++++ 46 files changed, 2986 insertions(+) create mode 100644 bedrock/LiteLoader-bedrock/egg-pterodactyl-liteloader-bedrock-dedicated-server.json create mode 100644 bedrock/PowerNukkitX/egg-pterodactyl-power-nukkit-x.json create mode 100644 bedrock/bedrock/egg-pterodactyl-vanilla-bedrock-a-r-m64.json create mode 100644 bedrock/bedrock/egg-pterodactyl-vanilla-bedrock.json create mode 100644 bedrock/gomint/egg-pterodactyl-go-mint.json create mode 100644 bedrock/nukkit/egg-pterodactyl-nukkit.json create mode 100644 bedrock/pocketmine_mp/egg-pterodactyl-pocketmine-m-p.json create mode 100644 crossplay/purpur-geysermc-floodgate/egg-pterodactyl-purpur--geyser--floodgate.json create mode 100644 java/cuberite/egg-pterodactyl-cuberite.json create mode 100644 java/curseforge/egg-pterodactyl-curse-forge-generic.json create mode 100644 java/fabric/egg-pterodactyl-fabric.json create mode 100644 java/folia/egg-pterodactyl-folia.json create mode 100644 java/forge/forge/egg-pterodactyl-forge-enhanced.json create mode 100644 java/ftb/egg-pterodactyl-f-t-b-modpacks-ch-server.json create mode 100644 java/ftb/outdated/egg-pterodactyl-f-t-b-revelation.json create mode 100644 java/ftb/outdated/egg-pterodactyl-feed-the-beast.json create mode 100644 java/glowstone/egg-pterodactyl-glowstone.json create mode 100644 java/krypton/egg-pterodactyl-krypton.json create mode 100644 java/limbo/egg-pterodactyl-limbo.json create mode 100644 java/magma/egg-pterodactyl-magma.json create mode 100644 java/modrinth/egg-pterodactyl-modrinth-generic.json create mode 100644 java/mohist/egg-pterodactyl-mohist.json create mode 100644 java/nanolimbo/egg-pterodactyl-nano-limbo.json create mode 100644 java/neoforge/egg-pterodactyl-neo-forge.json create mode 100644 java/paper/egg-pterodactyl-paper.json create mode 100644 java/purpur/egg-pterodactyl-purpur.json create mode 100644 java/quilt/egg-pterodactyl-quilt.json create mode 100644 java/spigot/egg-pterodactyl-spigot.json create mode 100644 java/spongeforge/egg-pterodactyl-sponge-forge.json create mode 100644 java/spongevanilla/egg-pterodactyl-sponge-vanilla.json create mode 100644 java/technic/Tekkit-2/egg-pterodactyl-tekkit2.json create mode 100644 java/technic/Tekkit/egg-pterodactyl-tekkit.json create mode 100644 java/technic/attack-of-the-bteam/egg-pterodactyl-attack-of-the-b--team.json create mode 100644 java/technic/blightfall/egg-pterodactyl-blightfall.json create mode 100644 java/technic/hexxit/egg-pterodactyl-hexxit.json create mode 100644 java/technic/tekkit-classic/egg-pterodactyl-tekkit-classic.json create mode 100644 java/technic/tekkit-legends/egg-pterodactyl-tekkit-legends.json create mode 100644 java/technic/the-1-12-2-pack/egg-pterodactyl-the1-12-2-pack.json create mode 100644 java/technic/the-1-7-10-pack/egg-pterodactyl-the1-7-10-pack.json create mode 100644 java/vanillacord/egg-pterodactyl-vanilla-cord.json create mode 100644 proxy/bedrock/waterdog_pe/egg-pterodactyl-waterdog-p-e.json create mode 100644 proxy/cross_platform/waterdog/egg-pterodactyl-waterdog.json create mode 100644 proxy/java/travertine/egg-pterodactyl-travertine.json create mode 100644 proxy/java/velocity/egg-pterodactyl-velocity.json create mode 100644 proxy/java/viaaas/egg-pterodactyl-v-i-aaa-s.json create mode 100644 proxy/java/waterfall/egg-pterodactyl-waterfall.json diff --git a/bedrock/LiteLoader-bedrock/egg-pterodactyl-liteloader-bedrock-dedicated-server.json b/bedrock/LiteLoader-bedrock/egg-pterodactyl-liteloader-bedrock-dedicated-server.json new file mode 100644 index 00000000..72270cf1 --- /dev/null +++ b/bedrock/LiteLoader-bedrock/egg-pterodactyl-liteloader-bedrock-dedicated-server.json @@ -0,0 +1,112 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:00+00:00", + "name": "Liteloader Bedrock Dedicated Server", + "author": "frizth_tatierra@informatics.edu.ph", + "description": "LiteLoaderBDS - Epoch-making \u0026 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.", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:wine_staging": "ghcr.io/parkervcp/yolks:wine_staging" + }, + "file_denylist": [], + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \"IPv4 supported\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "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\" ] \u0026\u0026 [ \"$file\" != \"permissions.json\" ] \u0026\u0026 [ \"$file\" != \"server.properties\" ] \u0026\u0026 [ \"$file\" != \"plugins\" ] \u0026\u0026 [ \"$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...\"" + } + }, + "variables": [ + { + "name": "Bedrock Dedicated Server Version", + "description": "Insert BDS Version", + "env_variable": "BDS_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Liteloader Version", + "description": "Insert Liteloader Version from Github Releases", + "env_variable": "LL_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Wine", + "description": "", + "env_variable": "WINEDEBUG", + "default_value": "-all", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name for the server", + "env_variable": "SERVERNAME", + "default_value": "Bedrock Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Gamemode", + "description": "Allowed values: \"survival\", \"creative\", or \"adventure\"", + "env_variable": "GAMEMODE", + "default_value": "survival", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Allowed values: \"peaceful\", \"easy\", \"normal\", or \"hard\"", + "env_variable": "DIFFICULTY", + "default_value": "easy", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Maximum Players", + "description": "Maximum players to join on the server", + "env_variable": "MAXPLAYERS", + "default_value": "10", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer", + "field_type": "text" + }, + { + "name": "World Name", + "description": "World/Level name to use for the server", + "env_variable": "WORLDNAME", + "default_value": "Bedrock level", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/bedrock/PowerNukkitX/egg-pterodactyl-power-nukkit-x.json b/bedrock/PowerNukkitX/egg-pterodactyl-power-nukkit-x.json new file mode 100644 index 00000000..dd81af72 --- /dev/null +++ b/bedrock/PowerNukkitX/egg-pterodactyl-power-nukkit-x.json @@ -0,0 +1,52 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:55+00: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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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\u003e\u00261 \u003e/dev/null\r\nmv ./target/linux-x86/pnx ./ 2\u003e\u00261 \u003e/dev/null\r\nrm -fr target 2\u003e\u00261 \u003e/dev/null\r\nrm -fr java 2\u003e\u00261 \u003e/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\u003e\u00261 \u003e/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\u003e\u00261 \u003e/dev/null\r\ncat \u003c\u003cEOF\r\n----------------------------------------\r\n| |\r\n| PowerNukkitX Installation Done |\r\n| |\r\n----------------------------------------\r\nEOF" + } + }, + "variables": [ + { + "name": "Version to install", + "description": "Choose between latest or dev", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "AutoReboot mode", + "description": "to set auto reboot mode please enter -r", + "env_variable": "AUTOREBOOT", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:2", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock-a-r-m64.json b/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock-a-r-m64.json new file mode 100644 index 00000000..df206479 --- /dev/null +++ b/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock-a-r-m64.json @@ -0,0 +1,94 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:06+00: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\".", + "features": [ + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:box64": "ghcr.io/parkervcp/yolks:box64" + }, + "file_denylist": [], + "startup": "box64 ./bedrock_server", + "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 \"allow-cheats\": \"{{server.build.env.CHEATS}}\",\r\n \"max-threads\": \"2\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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' \u003e\u003e 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\"" + } + }, + "variables": [ + { + "name": "Bedrock Version", + "description": "The version of bedrock. (Ex. 1.7.0.13)\r\n\r\nDefault version is latest.", + "env_variable": "BEDROCK_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "ld lib path", + "description": "Dumb reasons to need this", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name for the server", + "env_variable": "SERVERNAME", + "default_value": "Bedrock Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Gamemode", + "description": "Allowed values: \"survival\", \"creative\", or \"adventure\"", + "env_variable": "GAMEMODE", + "default_value": "survival", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:survival,creative,adventure", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Allowed values: \"peaceful\", \"easy\", \"normal\", or \"hard\"", + "env_variable": "DIFFICULTY", + "default_value": "easy", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:peaceful,easy,normal,hard", + "field_type": "text" + }, + { + "name": "Allow cheats", + "description": "If true then cheats like commands can be used.\r\n\r\nAllowed values: \"true\" or \"false\"", + "env_variable": "CHEATS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock.json b/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock.json new file mode 100644 index 00000000..2196c4c3 --- /dev/null +++ b/bedrock/bedrock/egg-pterodactyl-vanilla-bedrock.json @@ -0,0 +1,94 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:07+00: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" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bedrock_server", + "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 \"allow-cheats\": \"{{server.build.env.CHEATS}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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\"" + } + }, + "variables": [ + { + "name": "Bedrock Version", + "description": "The version of bedrock. (Ex. 1.7.0.13)\r\n\r\nDefault version is latest.", + "env_variable": "BEDROCK_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "ld lib path", + "description": "Dumb reasons to need this", + "env_variable": "LD_LIBRARY_PATH", + "default_value": ".", + "user_viewable": false, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Name", + "description": "The name for the server", + "env_variable": "SERVERNAME", + "default_value": "Bedrock Dedicated Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:50", + "field_type": "text" + }, + { + "name": "Gamemode", + "description": "Allowed values: \"survival\", \"creative\", or \"adventure\"", + "env_variable": "GAMEMODE", + "default_value": "survival", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:survival,creative,adventure", + "field_type": "text" + }, + { + "name": "Difficulty", + "description": "Allowed values: \"peaceful\", \"easy\", \"normal\", or \"hard\"", + "env_variable": "DIFFICULTY", + "default_value": "easy", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:peaceful,easy,normal,hard", + "field_type": "text" + }, + { + "name": "Allow cheats", + "description": "If true then cheats like commands can be used.\r\n\r\nAllowed values: \"true\" or \"false\"", + "env_variable": "CHEATS", + "default_value": "false", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:true,false", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/bedrock/gomint/egg-pterodactyl-go-mint.json b/bedrock/gomint/egg-pterodactyl-go-mint.json new file mode 100644 index 00000000..0de70ea4 --- /dev/null +++ b/bedrock/gomint/egg-pterodactyl-go-mint.json @@ -0,0 +1,38 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:46+00:00", + "name": "GoMint", + "author": "parker@parkervcp.com", + "description": "A performant and stable Minecraft server software for the Bedrock Edition that comes with a modern API and support for Java 11 LTS.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java --add-opens java.base/java.nio=io.netty.common --add-exports java.base/jdk.internal.misc=io.netty.common -p modules -m gomint.server/io.gomint.server.Bootstrap", + "config": { + "files": "{\r\n \"server.yml\": {\r\n \"parser\": \"yml\",\r\n \"find\": {\r\n \"listener.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Done in \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#! /bin/bash\r\n\r\nGITHUB_PACKAGE=gomint/gomint\r\n\r\napt update\r\napt install -y curl jq file unzip\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\nif [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -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# retrieve latest tag to be used as version match, because gomint doesn't use normal releases\r\nLATEST_VERSION=$(curl -sL https://api.github.com/repos/gomint/gomint/tags | jq -r '.[-1].name')\r\n\r\nDOWNLOAD_URL=https://github.com/gomint/gomint/releases/download/${LATEST_VERSION}/${LATEST_VERSION}.zip\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 \"download link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n VALIDATED_URL=${DOWNLOAD_URL}\r\n else \r\n echo -e \"download link is invalid, something went wrong. Closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncurl -sSL -o ${VALIDATED_URL##*/} ${VALIDATED_URL}\r\n\r\nFILETYPE=$(file -F ',' ${VALIDATED_URL##*/} | cut -d',' -f2 | cut -d' ' -f2)\r\nif [ \"$FILETYPE\" == \"gzip\" ]; then\r\n tar xzvf ${VALIDATED_URL##*/}\r\nelif [ \"$FILETYPE\" == \"Zip\" ]; then\r\n unzip ${VALIDATED_URL##*/} -d modules/\r\nelif [ \"$FILETYPE\" == \"XZ\" ]; then\r\n tar xvf ${VALIDATED_URL##*/}\r\nelse\r\n echo -e \"unknown filetype. Exiting\"\r\n # exit 2 \r\nfi\r\n\r\n# Move files into correct folders and remove unnecessary stuff\r\nrm ${VALIDATED_URL##*/}\r\nmv modules/modules/* modules\r\nrm -rf modules/modules\r\nrm modules/start.*\r\n\r\n# Fetch server config\r\nif [ ! -f server.yml ]; then\r\n curl -sSL -o server.yml https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/bedrock/gomint/server.yml\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [] +} \ No newline at end of file diff --git a/bedrock/nukkit/egg-pterodactyl-nukkit.json b/bedrock/nukkit/egg-pterodactyl-nukkit.json new file mode 100644 index 00000000..d6b23530 --- /dev/null +++ b/bedrock/nukkit/egg-pterodactyl-nukkit.json @@ -0,0 +1,65 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:55+00: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, + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Nukkit Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napk add --no-cache curl openssl\r\n\r\ncd /mnt/server\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`\r\n wget ${MODIFIED_DOWNLOAD} -O ${SERVER_JARFILE}\r\nelif [ -z \"${NUKKIT_VERSION}\" ] || [ \"${NUKKIT_VERSION}\" == \"latest\" ]; then\r\n wget https://ci.opencollab.dev/job/NukkitX/job/Nukkit/job/master/lastSuccessfulBuild/artifact/target/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nelse\r\n wget https://ci.opencollab.dev/job/NukkitX/job/Nukkit/job/master/${NUKKIT_VERSION}/artifact/target/nukkit-1.0-SNAPSHOT.jar -O ${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f nukkit.yml ]; then\r\n wget https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/bedrock/nukkit/nukkit.yml\r\nfi\r\n\r\nif [ ! -f server.properties ]; then\r\n wget https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/bedrock/nukkit/server.properties\r\nfi\r\n\r\necho -s \"Install completed!\"" + } + }, + "variables": [ + { + "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 Nukkit rather than building it on the server. This is not user viewable. Use \u003ccode\u003e{{DL_VERSION}}\u003c/code\u003e in the URL to automatically insert the assigned version into the URL. If you do not enter a URL Spigot will build directly in the container (this will fail on low memory containers).", + "env_variable": "DL_PATH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "nukkit version", + "description": "The version of Nukkitt to download (using the --rev tag). Use \"latest\" for latest.", + "env_variable": "NUKKIT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/bedrock/pocketmine_mp/egg-pterodactyl-pocketmine-m-p.json b/bedrock/pocketmine_mp/egg-pterodactyl-pocketmine-m-p.json new file mode 100644 index 00000000..0d4ca4a3 --- /dev/null +++ b/bedrock/pocketmine_mp/egg-pterodactyl-pocketmine-m-p.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:56+00: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 :)", + "features": null, + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./bin/php7/bin/php ./PocketMine-MP.phar --no-wizard", + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\napt-get update\r\napt-get install -y git curl wget jq file tar unzip zip xz-utils\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\" ]] \u0026\u0026 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 \u0026\u0026 sed -i'bak' \"s{^extension_dir=.*{extension_dir=\\\"$EXTENSION_DIR\\\"{\" bin/php7/bin/php.ini || echo \"extension_dir=\\\"$EXTENSION_DIR\\\"\" \u003e\u003ebin/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 \u003c\u003cEOF\r\n----------------------------------------\r\n| |\r\n| Compiling PHP Binary for ARM64 |\r\n| |\r\n| This is a time consuming process |\r\n----------------------------------------\r\nEOF\r\n\r\n printf \"\\n\\nCompiling PHP binary, this is a slow process and will take time\\n\"\r\n THREADS=$(grep -c ^processor /proc/cpuinfo) || THREADS=1\r\n ./compile.sh -j \"${THREADS}\" -c /mnt/server/build_cache/archives -l /mnt/server/build_cache/compilation -P ${VERSION:2}\r\n rm compile.sh\r\n rm -rf install_data/\r\n\r\nfi\r\n\r\n# Steps below are the same for both architectures\r\ndownload_pmmp\r\nset_php_extension_dir || exit 1\r\n\r\nif [[ ! -f server.properties ]]; then\r\n printf \"Downloading default server.properties template\\n\"\r\n curl --location --progress-bar --remote-name https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/bedrock/pocketmine_mp/server.properties\r\nfi\r\n\r\nprintf \"Creating default file and folder structure\\n\"\r\ntouch banned-ips.txt banned-players.txt ops.txt white-list.txt server.log\r\nmkdir -p players worlds plugins resource_packs\r\n\r\ncat \u003c\u003cEOF\r\n----------------------------------------\r\n| |\r\n| PocketMine-MP Installation Done |\r\n| |\r\n----------------------------------------\r\nEOF" + } + }, + "variables": [ + { + "name": "Version to install", + "description": "Latest PocketMine version to install.", + "env_variable": "VERSION", + "default_value": "PM5", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:PM5,PM4", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/crossplay/purpur-geysermc-floodgate/egg-pterodactyl-purpur--geyser--floodgate.json b/crossplay/purpur-geysermc-floodgate/egg-pterodactyl-purpur--geyser--floodgate.json new file mode 100644 index 00000000..982f0ff4 --- /dev/null +++ b/crossplay/purpur-geysermc-floodgate/egg-pterodactyl-purpur--geyser--floodgate.json @@ -0,0 +1,69 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:57+00:00", + "name": "Purpur-Geyser-Floodgate", + "author": "purpur@birdflop.com", + "description": "A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features, with the addition of GeyserMC and Floodgate", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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", + "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 --add-modules=jdk.incubator.vector -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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nPROJECT=purpur\r\n\r\n# Download paths for Geyser and Floodgate. Do not change!!\r\nGEYSER_DOWNLOAD_URL=\"https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot\"\r\nFLOODGATE_DOWNLOAD_URL=\"https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot\"\r\n\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.purpurmc.org/v2/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https://api.purpurmc.org/v2/${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://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r '.builds.latest'`\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://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION}/${BUILD_NUMBER}/download\r\nfi\r\n\r\ncd /mnt/server\r\n\r\necho -e \"Downloading the requested purpur buid with 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\nmkdir -p /mnt/server/plugins\r\ncurl -sSL-o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\necho -e \"Downloading last successful build with curl -o plugins/geyser-spigot ${GEYSER_DOWNLOAD_URL}\"\r\ncurl -sSL -L plugins/geyser-spigot.jar ${GEYSER_DOWNLOAD_URL}\r\n\r\necho -e \"Downloading last successful build with curl -o plugins/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}\"\r\ncurl -sSL -L plugins/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n\techo -e \"Downloading MC server.properties\"\r\n\tcurl -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties\r\nfi\r\necho -e \"Installation Finished\"" + } + }, + "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": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the .jar file 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)$/|max:80", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "The build number for the Purpur release.\r\n\r\nLeave at latest to always get the latest version. Invalid versions will default to latest-stable.\r\n\r\nAccepted values: 'latest-stable' 'latest-successful'", + "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 diff --git a/java/cuberite/egg-pterodactyl-cuberite.json b/java/cuberite/egg-pterodactyl-cuberite.json new file mode 100644 index 00000000..81a37567 --- /dev/null +++ b/java/cuberite/egg-pterodactyl-cuberite.json @@ -0,0 +1,66 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:48+00:00", + "name": "Cuberite", + "author": "parker@parkervcp.com", + "description": "A lightweight, fast and extensible game server for Minecraft", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:debian": "ghcr.io/parkervcp/yolks:debian" + }, + "file_denylist": [], + "startup": "./Cuberite", + "config": { + "files": "{\r\n \"settings.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"Server.Ports\": \"{{server.build.default.port}}\",\r\n \"Server.Description\": \"{{server.build.env.SERV_DESC}}\"\r\n }\r\n },\r\n \"webadmin.ini\": {\r\n \"parser\": \"ini\",\r\n \"find\": {\r\n \"User:admin.Password\": \"{{server.build.env.ADMIN_PASS}}\",\r\n \"WebAdmin.Ports\": \"{{server.build.env.WEB_PORT}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Startup complete\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/ash\r\n# Cuberite\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"x86_64\" || echo \"aarch64\")\r\n\r\nwget https://download.cuberite.org/linux-${ARCH}/Cuberite.tar.gz\r\n\r\ntar -xzf Cuberite.tar.gz\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Description", + "description": "Server Description", + "env_variable": "SERV_DESC", + "default_value": "Cuberite on Pterodactyl!", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Admin Password", + "description": "The password for the webadmin panel 'admin' user", + "env_variable": "ADMIN_PASS", + "default_value": "ChangeMe", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "WebAdmin Port", + "description": "Port for the cuberite webadmin panel.", + "env_variable": "WEB_PORT", + "default_value": "8080", + "user_viewable": true, + "user_editable": false, + "rules": "required|integer|between:1,65535", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/curseforge/egg-pterodactyl-curse-forge-generic.json b/java/curseforge/egg-pterodactyl-curse-forge-generic.json new file mode 100644 index 00000000..9deba104 --- /dev/null +++ b/java/curseforge/egg-pterodactyl-curse-forge-generic.json @@ -0,0 +1,70 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:54+00: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 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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java $([[ -f user_jvm_args.txt ]] \u0026\u0026 printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] \u0026\u0026 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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:8-jdk-slim", + "entrypoint": "bash", + "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 \u003e /dev/null 2\u003e\u00261 || { echo \"apt update failed!\"; exit 1; }\r\n echo -e \"\\tRunning apt install\"\r\n apt install -y wget jq unzip \u003e /dev/null 2\u003e\u00261 || { 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\" \u0026\u0026 -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 )) \u0026\u0026 [[ -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 \u003e /dev/null 2\u003e\u00261; 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\" \u003e \".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\" \u003e \".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\" \u003e \".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!\"" + } + }, + "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|string", + "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": "string", + "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 diff --git a/java/fabric/egg-pterodactyl-fabric.json b/java/fabric/egg-pterodactyl-fabric.json new file mode 100644 index 00000000..f43592a1 --- /dev/null +++ b/java/fabric/egg-pterodactyl-fabric.json @@ -0,0 +1,80 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:50+00:00", + "name": "Fabric", + "author": "accounts@bofanodes.io", + "description": "Fabric is a modular modding toolchain targeting Minecraft 1.14 and above, including snapshots.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 }\r\n }\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs/latest.log\"\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}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:11-jdk-slim", + "entrypoint": "bash", + "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\" \u003e fabric-server-launcher.properties\r\necho -e \"Install Complete\"" + } + }, + "variables": [ + { + "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": "Minecraft Version", + "description": "The version of Minecraft to install. Use \"latest\" to install the latest version, or use \"snapshot\" to install the latest snapshot.", + "env_variable": "MC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15", + "field_type": "text" + }, + { + "name": "Fabric Version", + "description": "The version of Fabric to install.", + "env_variable": "FABRIC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15", + "field_type": "text" + }, + { + "name": "Fabric Loader Version", + "description": "The version of Fabric Loader to install.", + "env_variable": "LOADER_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/folia/egg-pterodactyl-folia.json b/java/folia/egg-pterodactyl-folia.json new file mode 100644 index 00000000..85e3a808 --- /dev/null +++ b/java/folia/egg-pterodactyl-folia.json @@ -0,0 +1,78 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:42+00: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", + "Java 21": "ghcr.io/pterodactyl/yolks:java_21" + }, + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "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" + } + }, + "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 diff --git a/java/forge/forge/egg-pterodactyl-forge-enhanced.json b/java/forge/forge/egg-pterodactyl-forge-enhanced.json new file mode 100644 index 00000000..2de6f7c6 --- /dev/null +++ b/java/forge/forge/egg-pterodactyl-forge-enhanced.json @@ -0,0 +1,80 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:43+00: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.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $( [[ ! -f unix_args.txt ]] \u0026\u0026 printf %s \"-jar {{SERVER_JARFILE}}\" || 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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:8-jdk-slim", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y curl jq\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# Remove spaces from the version number to avoid issues with curl\r\nFORGE_VERSION=\"$(echo \"$FORGE_VERSION\" | tr -d ' ')\"\r\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\r\nif [ -z ${SERVER_JARFILE}]; then \r\n SERVER_JARFILE=server.jar\r\nfi\r\n\r\nif [[ ! -z ${FORGE_VERSION} ]]; then\r\n DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}\r\n FORGE_JAR=forge-${FORGE_VERSION}*.jar\r\nelse\r\n JSON_DATA=$(curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json)\r\n\r\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\r\n echo -e \"getting latest version of forge.\"\r\n MC_VERSION=$(echo -e ${JSON_DATA} | jq -r '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains(\"latest\")) | split(\"-\")[0]' | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | tail -1)\r\n BUILD_TYPE=latest\r\n fi\r\n\r\n if [[ \"${BUILD_TYPE}\" != \"recommended\" ]] \u0026\u0026 [[ \"${BUILD_TYPE}\" != \"latest\" ]]; then\r\n BUILD_TYPE=recommended\r\n fi\r\n\r\n echo -e \"minecraft version: ${MC_VERSION}\"\r\n echo -e \"build type: ${BUILD_TYPE}\"\r\n\r\n ## some variables for getting versions and things\r\n FILE_SITE=https://maven.minecraftforge.net/net/minecraftforge/forge/\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" --arg BUILD_TYPE \"${BUILD_TYPE}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))')\r\n\r\n ## locating the forge version\r\n if [[ \"${VERSION_KEY}\" == \"\" ]] \u0026\u0026 [[ \"${BUILD_TYPE}\" == \"recommended\" ]]; then\r\n echo -e \"dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested.\"\r\n VERSION_KEY=$(echo -e ${JSON_DATA} | jq -r --arg MC_VERSION \"${MC_VERSION}\" '.promos | del(.\"latest-1.7.10\") | del(.\"1.7.10-latest-1.7.10\") | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains(\"latest\"))')\r\n fi\r\n\r\n ## Error if the mc version set wasn't valid.\r\n if [ \"${VERSION_KEY}\" == \"\" ] || [ \"${VERSION_KEY}\" == \"null\" ]; then\r\n echo -e \"The install failed because there is no valid version of forge for the version of minecraft selected.\"\r\n exit 1\r\n fi\r\n\r\n FORGE_VERSION=$(echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY \"$VERSION_KEY\" '.promos | .[$VERSION_KEY]')\r\n\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]] || [[ \"${MC_VERSION}\" == \"1.8.9\" ]]; then\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}.jar\r\n if [[ \"${MC_VERSION}\" == \"1.7.10\" ]]; then\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar\r\n fi\r\n else\r\n DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}\r\n FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}*.jar\r\n fi\r\nfi\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! $SERVER_JARFILE = *\\.jar ]]; then\r\n SERVER_JARFILE=\"$SERVER_JARFILE.jar\"\r\nfi\r\n\r\n#Downloading jars\r\necho -e \"Downloading forge version ${FORGE_VERSION}\"\r\necho -e \"Download link is ${DOWNLOAD_LINK}\"\r\n\r\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\r\n if curl -sSL --output /dev/null --head --fail ${DOWNLOAD_LINK}-installer.jar; then\r\n echo -e \"installer jar download link is valid.\"\r\n else\r\n echo -e \"link is invalid. Exiting now\"\r\n exit 2\r\n fi\r\nelse\r\n echo -e \"no download link provided. Exiting now\"\r\n exit 3\r\nfi\r\n\r\ncurl -sSL -o installer.jar ${DOWNLOAD_LINK}-installer.jar\r\n\r\n#Checking if downloaded jars exist\r\nif [[ ! -f ./installer.jar ]]; then\r\n echo \"!!! Error downloading forge version ${FORGE_VERSION} !!!\"\r\n exit\r\nfi\r\n\r\nfunction unix_args {\r\n echo -e \"Detected Forge 1.17 or newer version. Setting up forge unix args.\"\r\n ln -sf libraries/net/minecraftforge/forge/*/unix_args.txt unix_args.txt\r\n}\r\n\r\n# Delete args to support downgrading/upgrading\r\nrm -rf libraries/net/minecraftforge/forge\r\nrm unix_args.txt\r\n\r\n#Installing server\r\necho -e \"Installing forge server.\\n\"\r\njava -jar installer.jar --installServer || { echo -e \"install failed using Forge version ${FORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}\"; exit 4; }\r\n\r\nif [ -f ${FORGE_JAR} ]; then\r\n # For versions below 1.17 that ship with jar\r\n mv $FORGE_JAR $SERVER_JARFILE\r\nelse\r\n # Check if we need a symlink for 1.17+ Forge JPMS args\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 unix_args\r\n\r\n # Check if someone has set MC to latest but overwrote it with older Forge version, otherwise we would have false positives\r\n elif [[ $MC_VERSION == \"latest\" \u0026\u0026 $FORGE_VERSION =~ ^1\\.(17|18|19|20|21|22|23) ]]; then\r\n unix_args\r\n fi\r\nfi\r\n\r\necho -e \"Deleting installer.jar file.\\n\"\r\nrm -rf installer.jar\r\n\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the Jarfile to use when running Forge version below 1.17.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "Minecraft Version", + "description": "The version of minecraft you want to install for.\r\n\r\nLeaving latest will install the latest recommended version.", + "env_variable": "MC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:9", + "field_type": "text" + }, + { + "name": "Build Type", + "description": "The type of server jar to download from forge.\r\n\r\nValid types are \"recommended\" and \"latest\".", + "env_variable": "BUILD_TYPE", + "default_value": "recommended", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|in:recommended,latest", + "field_type": "text" + }, + { + "name": "Forge Version", + "description": "Gets an exact version.\r\n\r\nEx. 1.15.2-31.2.4\r\n\r\nOverrides MC_VERSION and BUILD_TYPE. If it fails to download the server files it will fail to install.", + "env_variable": "FORGE_VERSION", + "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/java/ftb/egg-pterodactyl-f-t-b-modpacks-ch-server.json b/java/ftb/egg-pterodactyl-f-t-b-modpacks-ch-server.json new file mode 100644 index 00000000..e1066b6f --- /dev/null +++ b/java/ftb/egg-pterodactyl-f-t-b-modpacks-ch-server.json @@ -0,0 +1,80 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:44+00: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.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 ]] \u0026\u0026 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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:8-jdk-slim", + "entrypoint": "bash", + "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 urlencode() {\r\n local string=\"${1// /%20}\"\r\n echo \"$string\"\r\n }\r\n \r\n # if no modpack id is set and modpack search term is set.\r\n if [ -z ${FTB_MODPACK_ID} ] \u0026\u0026 [ ! -z \"${FTB_SEARCH_TERM}\" ]; then\r\n encoded_search_term=$(urlencode \"$FTB_SEARCH_TERM\")\r\n JSON_DATA=$(curl -sSL https://api.modpacks.ch/public/modpack/search/8?term=\"${encoded_search_term}\")\r\n \r\n # grabs the first modpack in array.\r\n FTB_MODPACK_ID=$(echo -e ${JSON_DATA} | jq -r \".packs[0]\")\r\n fi\r\n \r\n if [ -z ${FTB_MODPACK_VERSION_ID} ] \u0026\u0026 [ ! -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\" ] \u0026\u0026 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 -rf libraries/net/neoforged/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 # create symlink for neoforge unix_args.txt if exists\r\n if compgen -G \"libraries/net/neoforged/forge/*/unix_args.txt\"; then\r\n ln -sf libraries/net/neoforged/forge/*/unix_args.txt unix_args.txt\r\n fi\r\n \r\n # move forge/neoforge/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\"" + } + }, + "variables": [ + { + "name": "FTB Pack search term", + "description": "the search term for finding the modpack. needs to be at least 4 characters long.\r\nFind out what term is needed by using the ftb app and searching with the term. make sure it only returns 1 result.\r\ncan also be searched for via: https://api.modpacks.ch/public/modpack/search/8?term={SEARCHTERM}\r\n\r\nonly needed if the modpack id and modpack version id is unknown.", + "env_variable": "FTB_SEARCH_TERM", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "FTB modpack ID", + "description": "The FTB Api modpack ID.\r\nNeeded if not using the search variable\r\n\r\nExample: FTB Interactions ID is 5.\r\nhttps://api.modpacks.ch/public/modpack/5", + "env_variable": "FTB_MODPACK_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|integer", + "field_type": "text" + }, + { + "name": "FTB Pack Version", + "description": "what version of the modpack to install. leave empty if using the modpack version id variable.", + "env_variable": "FTB_VERSION_STRING", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "FTB Pack Version ID", + "description": "The modpack api version ID.\r\nneeded if not using the string for the version.\r\n\r\nExample FTB Revelations version id for version \"2.0.2\" is 86.\r\nwhich would come out as: https://api.modpacks.ch/public/modpack/5/86", + "env_variable": "FTB_MODPACK_VERSION_ID", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|integer", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/ftb/outdated/egg-pterodactyl-f-t-b-revelation.json b/java/ftb/outdated/egg-pterodactyl-f-t-b-revelation.json new file mode 100644 index 00000000..d69e8fdd --- /dev/null +++ b/java/ftb/outdated/egg-pterodactyl-f-t-b-revelation.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:44+00:00", + "name": "FTB Revelation", + "author": "aevum@decess.us", + "description": "Revelation is a general all-purpose pack that is designed for solo play as well as small and medium population servers. This pack contains a mix of magic, tech and exploration mods, and is the largest pack ever built and released by the Feed The Beast Team.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar FTBserver-*.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\nBASEURL=https://www.feed-the-beast.com/projects/ftb-revelation/files\r\nPATTERN=\"(projects\\/ftb-revelation\\/files\\/\\d{7,})\"\r\nID=`curl -sl ${BASEURL}| grep -A2 ${MODPACK_VERSION} | grep -oE \"${PATTERN}\"`\r\nSECONDURL=https://www.feed-the-beast.com/${ID}\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -B2 Server_${MODPACK_VERSION}.zip | grep -oE \"${PATTERN}\"`\r\n\r\nDL_URL=https://www.feed-the-beast.com/${GOOD_ID}/download\r\n\r\ncd /mnt/server\r\n\r\ncurl -L ${DL_URL} -o ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nunzip ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nrm -rf ftbrevelations-${MODPACK_VERSION}.zip\r\n\r\nsh ./FTBInstall.sh\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "2.4.1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/ftb/outdated/egg-pterodactyl-feed-the-beast.json b/java/ftb/outdated/egg-pterodactyl-feed-the-beast.json new file mode 100644 index 00000000..19f2dcb6 --- /dev/null +++ b/java/ftb/outdated/egg-pterodactyl-feed-the-beast.json @@ -0,0 +1,96 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:42+00:00", + "name": "Feed the Beast", + "author": "aevum@decess.us", + "description": "Egg to handle all official FTB Modpacks", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar FTBserv*.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 \"query.port\": \"{{server.build.default.port}}\",\r\n \"level-name\": \"{{server.build.env.LEVEL_NAME}}\",\r\n \"level-seed\": \"{{server.build.env.LEVEL_SEED}}\",\r\n \"max-players\": \"{{server.build.env.MAX_PLAYERS}}\",\r\n \"motd\": \"{{server.build.env.MOTD}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Generic FTB Server Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n# MODPACK_VERSION = version of the modpack, set in variables\r\n# i.e MODPACK_VERSION=1.5.0\r\n# MODPACK_URL = url base of the pack, set in variables, hardcoded\r\n# i.e https://www.feed-the-beast.com/projects/ftb-revelation/files\r\n# MODPACK_URL=ftb-revelation\r\n\r\n## Correcting for bad variables\r\nGETPACK=$(echo ${MODPACK_URL} | cut -d \"/\" -f 5 )\r\necho -e \"\\n The pack being downloaded is $GETPACK \\n\"\r\n\r\n## Getting the Base URL\r\nBASEURL=https://www.feed-the-beast.com/projects/${GETPACK}/files\r\necho \"The base URL is ${BASEURL}\"\r\n\r\n## This is meant to get the pack ID that is unique and not exactly clear \r\n\r\n\r\nif [ -z \"${MODPACK_VERSION}\" ] || [ \"${MODPACK_VERSION}\" == \"latest\" ]; then\r\n ID=`curl -sl ${BASEURL} | grep -i -A9 'title=\"release\"' | grep -i -o 'href=\".*\"' | cut -d \"/\" -f5 | sed s/\\\"//g`\r\n echo \"ID: ${ID}\"\r\nelse \r\n ID=`curl -sl ${BASEURL} | grep -i -A9 \"${MODPACK_VERSION}\" | grep -m1 -oE 'href=\"[^\\\"]+\"' | cut -d \"/\" -f5 | grep -oE [0-9]+`\r\n echo \"ID: ${ID}\"\r\nfi\r\n\r\nSECONDURL=${BASEURL}/${ID}\r\necho \"SECONDURL: ${SECONDURL}\"\r\n\r\nGOOD_ID=`curl -sl ${SECONDURL} | grep -i server | grep -Eo 'href=\"[^\\\"]+\"' | grep -o -E \"[0-9]+\" | tail -1`\r\necho \"GOOD_ID: ${GOOD_ID}\"\r\n\r\nDL_URL=${BASEURL}/${GOOD_ID}/download\r\necho \"Download_URL: ${DL_URL}\"\r\n\r\ncd /mnt/server\r\n\r\necho \"Executing curl -L ${DL_URL} -o $GETPACK.zip\"\r\ncurl -L ${DL_URL} -o $GETPACK.zip\r\n\r\nunzip ${GETPACK}.zip\r\n\r\nrm -rf ${GETPACK}.zip\r\n\r\necho \"Running FTBInstall.sh\"\r\nif [ -f ./FTBInstall.sh ]; then\r\n sh ./FTBInstall.sh\r\nelse\r\n echo -e \"No FTBInstall script found. Assumeing it's not needed.\"\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack URL Name", + "description": "Name of the modpack as referenced in URL's on feed-the-beast.com\r\ni.e\r\nhttps://www.feed-the-beast.com/projects/\u003cMODPACK_URL\u003e", + "env_variable": "MODPACK_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|regex:([a-z-0-9]+$)", + "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": "Level Seed", + "description": "Optional specified level seed for map generation", + "env_variable": "LEVEL_SEED", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:40", + "field_type": "text" + }, + { + "name": "Max Players", + "description": "Max # of players on the server", + "env_variable": "MAX_PLAYERS", + "default_value": "20", + "user_viewable": true, + "user_editable": true, + "rules": "required|integer|max:100", + "field_type": "text" + }, + { + "name": "Level Name", + "description": "Name of the world save", + "env_variable": "LEVEL_NAME", + "default_value": "world", + "user_viewable": true, + "user_editable": true, + "rules": "required|alpha_dash|max:20", + "field_type": "text" + }, + { + "name": "MOTD", + "description": "Message to appear when viewing the server in browser and on login", + "env_variable": "MOTD", + "default_value": "A Minecraft Server", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/glowstone/egg-pterodactyl-glowstone.json b/java/glowstone/egg-pterodactyl-glowstone.json new file mode 100644 index 00000000..6f22a96d --- /dev/null +++ b/java/glowstone/egg-pterodactyl-glowstone.json @@ -0,0 +1,96 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:45+00: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, + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms768M -Xmx{{SERVER_MEMORY}}M -XX:+UseG1GC -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"config/glowstone.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"server.port\": \"{{server.build.default.port}}\",\r\n \"console.prompt\": \"\"\r\n }\r\n }\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs/latest.log\"\r\n}", + "startup": "{\r\n \"done\": \"Ready for connections.\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "eclipse-temurin:8-jdk", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y jq curl\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\nif [ $VERSION == *SNAPSHOT ]; then\r\n echo -e \"Using Maven\"\r\n \r\n DOWNLOAD_URL=\"https://repo.glowstone.net/service/rest/v1/search/assets/download?group=net.glowstone\u0026name=glowstone\u0026sort=version\u0026repository=snapshots\u0026maven.baseVersion=${VERSION}\u0026direction=desc\u0026maven.classifier=\"\r\nelse \r\n echo -e \"Using GitHub.\"\r\n\r\n if [ -z \"${GITHUB_USER}\" ] \u0026\u0026 [ -z \"${GITHUB_OAUTH_TOKEN}\" ] ; then\r\n echo -e \"using anon api call\"\r\n else\r\n echo -e \"user and oauth token set\"\r\n alias curl='curl -u ${GITHUB_USER}:${GITHUB_OAUTH_TOKEN} '\r\n fi\r\n \r\n ## get release info and download links\r\n LATEST_JSON=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\n RELEASES=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n\r\n if [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n else\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\n fi\r\nfi\r\n\r\necho -e \"Downloading...\"\r\ncurl --silent -L -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\necho -e \"Generating configuration...\"\r\njava -jar ${SERVER_JARFILE} --generate-config\r\n\r\necho -e \"Install Complete\"" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the server jarfile to run the server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "glowstone.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "Glowstone Version", + "description": "The version of Glowstone to download. If it ends in SNAPSHOT, it will attempt to download from the maven repository.", + "env_variable": "VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "GitHub User", + "description": "GitHub user to use for api calls.\r\n\r\nThis only needs to be set if you hit the GitHub API too often across multiple servers.", + "env_variable": "GITHUB_USER", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "GitHub OAuth Token", + "description": "This can be either an OAuth or a Personal Access Token.\r\n\r\nThis is required for the install is you set a user.", + "env_variable": "GITHUB_OAUTH_TOKEN", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "string|nullable", + "field_type": "text" + }, + { + "name": "GitHub Package", + "description": "The repository to download from.", + "env_variable": "GITHUB_PACKAGE", + "default_value": "GlowstoneMC/Glowstone", + "user_viewable": true, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Match", + "description": "", + "env_variable": "MATCH", + "default_value": "glowstone.jar", + "user_viewable": false, + "user_editable": false, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/krypton/egg-pterodactyl-krypton.json b/java/krypton/egg-pterodactyl-krypton.json new file mode 100644 index 00000000..40bf32d3 --- /dev/null +++ b/java/krypton/egg-pterodactyl-krypton.json @@ -0,0 +1,60 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:47+00:00", + "name": "Krypton", + "author": "callum.seabrook@prevarinite.com", + "description": "A fast, lightweight Minecraft server written in Kotlin", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JAR}}", + "config": { + "files": "{\r\n \"config.conf\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \" port\": \" port = {{server.build.default.port}}\",\r\n \" ip\": \" ip = \\\"0.0.0.0\\\"\"\r\n }\r\n }\r\n}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs/latest.log\"\r\n}", + "startup": "{\r\n \"done\": \")! Type \\\"help\\\" for help.\"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n#\r\n# Krypton installation script for Pterodactyl\r\n# Created by BomBardyGamer\r\n#\r\n# Server Files: /mnt/server\r\n\r\napt-get update\r\napt-get install -y curl jq unzip\r\n\r\ncd /mnt/server\r\nif [ -z \"${KRYPTON_VERSION}\" ] || [ \"${KRYPTON_VERSION}\" == \"latest\" ]; then\r\n KRYPTON_VERSION=\"lastSuccessfulBuild\"\r\nfi\r\n\r\nBASE_URL=\"https://ci.kryptonmc.org/job/Krypton/${KRYPTON_VERSION}\"\r\nARTIFACT=`curl \"${BASE_URL}/api/json?tree=artifacts%5BrelativePath%5D\" | jq '.artifacts[0].relativePath' | sed 's/\"//g'`\r\n\r\ncurl -o ${SERVER_JAR} ${BASE_URL}/artifact/${ARTIFACT}\r\nunzip ${SERVER_JAR} \"config.conf\"" + } + }, + "variables": [ + { + "name": "Server JAR File", + "description": "The name of the server JAR to run the server with.", + "env_variable": "SERVER_JAR", + "default_value": "Krypton.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Krypton Version", + "description": "The version of Krypton to download and use.", + "env_variable": "KRYPTON_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|alpha_num|between:1,6", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/limbo/egg-pterodactyl-limbo.json b/java/limbo/egg-pterodactyl-limbo.json new file mode 100644 index 00000000..ce447adc --- /dev/null +++ b/java/limbo/egg-pterodactyl-limbo.json @@ -0,0 +1,42 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:00+00: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}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Limbo server listening on \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "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" + } + }, + "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 diff --git a/java/magma/egg-pterodactyl-magma.json b/java/magma/egg-pterodactyl-magma.json new file mode 100644 index 00000000..a75631f8 --- /dev/null +++ b/java/magma/egg-pterodactyl-magma.json @@ -0,0 +1,70 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:01+00: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. Using: https://github.com/magmamaintained", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 \"enable-query\": \"true\",\r\n \"server-port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n## get release info and download links\r\nLATEST_JSON=$(curl --silent \"https://api.github.com/repos/magmamaintained/Magma-${MC_VERSION}/releases/latest\")\r\nRELEASES=$(curl --silent \"https://api.github.com/repos/magmamaintained/Magma-${MC_VERSION}/releases\")\r\n\r\nif [ -z \"${TAG_VERSION}\" ] || [ \"${TAG_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 \"${TAG_VERSION}\" '.[] | select(.tag_name==$VERSION) | .tag_name')\r\n if [ \"${TAG_VERSION}\" == \"${VERSION_CHECK}\" ]; then\r\n DOWNLOAD_LINK=$(echo ${RELEASES} | jq -r --arg VERSION \"${TAG_VERSION}\" '.[] | select(.tag_name==$VERSION) | .assets[].browser_download_url')\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\nif [ ! -z \"${DOWNLOAD_LINK}\" ]; then \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 \"link is invalid closing out\"\r\n exit 2\r\n fi\r\nfi\r\n\r\n\r\necho \"Download Link: '${DOWNLOAD_LINK}'\"\r\n\r\n# Check we found a download link\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\"" + } + }, + "variables": [ + { + "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": false, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "Minecraft Version", + "description": "", + "env_variable": "MC_VERSION", + "default_value": "1.20.1", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|in:1.20.1,1.19.3,1.18.2,1.12.2", + "field_type": "text" + }, + { + "name": "Tag Version", + "description": "Optional.\r\n\r\nSpecify the tag version to install. Set latest to install latest", + "env_variable": "TAG_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:32", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/modrinth/egg-pterodactyl-modrinth-generic.json b/java/modrinth/egg-pterodactyl-modrinth-generic.json new file mode 100644 index 00000000..c0e43dc0 --- /dev/null +++ b/java/modrinth/egg-pterodactyl-modrinth-generic.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:02+00: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 11": "ghcr.io/pterodactyl/yolks:java_11", + "Java 16": "ghcr.io/pterodactyl/yolks:java_16", + "Java 17": "ghcr.io/pterodactyl/yolks:java_17", + "Java 8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java $([[ -f user_jvm_args.txt ]] \u0026\u0026 printf %s \"@user_jvm_args.txt\") -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true $([[ ! -f unix_args.txt ]] \u0026\u0026 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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "eclipse-temurin:17-jdk", + "entrypoint": "bash", + "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 \u003e /dev/null 2\u003e\u00261; 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 \u003e /dev/null 2\u003e\u00261; 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 chmod -R 755 \"${SERVER_DIR}/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 chmod -R 755 \"${SERVER_DIR}/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 \u003e /dev/null 2\u003e\u00261; 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\" \u003e \".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\" \u003e \".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\" \u003e \".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!\"" + } + }, + "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": "string|max:8", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/mohist/egg-pterodactyl-mohist.json b/java/mohist/egg-pterodactyl-mohist.json new file mode 100644 index 00000000..47615fd5 --- /dev/null +++ b/java/mohist/egg-pterodactyl-mohist.json @@ -0,0 +1,70 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:03+00:00", + "name": "Mohist", + "author": "alex.chang-lam@protonmail.com", + "description": "Spigot fork with performance optimizations.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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 \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the jarfile to run the server with.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": false, + "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.19.4", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "Optional: \r\nThe build number for the Mohist release. Overrides Build Type.", + "env_variable": "BUILD_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/nanolimbo/egg-pterodactyl-nano-limbo.json b/java/nanolimbo/egg-pterodactyl-nano-limbo.json new file mode 100644 index 00000000..6e9bd77f --- /dev/null +++ b/java/nanolimbo/egg-pterodactyl-nano-limbo.json @@ -0,0 +1,66 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:02+00:00", + "name": "NanoLimbo", + "author": "mail@wuffy.eu", + "description": "This is 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. This limbo is empty, there are no ability to set schematic building since this is not necessary. You can send useful information in chat or BossBar.\r\n\r\nNo plugins, no logs. The server is fully clear. It only able keep a lot of players while the main server is down.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"settings.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bind.ip\": \"0.0.0.0\",\r\n \"bind.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server started on\"\r\n}", + "stop": "^C" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# NanoLimbo Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\napt update\r\napt install -y curl jq git openssl bash bc apt-transport-https gnupg software-properties-common\r\n\r\nif [ -z \"${DOWNLOAD_URL}\" ]; then\r\n GITHUB_PACKAGE=\"Nan1t/NanoLimbo\"\r\n MATCH=\"NanoLimbo-\"\r\n\r\n ## get release info and download links\r\n LATEST_JSON=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases/latest\")\r\n RELEASES=$(curl --silent \"https://api.github.com/repos/${GITHUB_PACKAGE}/releases\")\r\n \r\n if [ -z \"${VERSION}\" ] || [ \"${VERSION}\" == \"latest\" ]; then\r\n DOWNLOAD_URL=$(echo ${LATEST_JSON} | jq .assets | jq -r .[].browser_download_url | grep -i ${MATCH})\r\n else\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\n fi\r\nelse\r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}.jar; then\r\n echo -e \"Provided download link is valid. Proceeding to download\"\r\n else\r\n echo -e \"Provided download link is invalid. Exiting now\"\r\n exit 2\r\n fi\r\nfi\r\n\r\ncd /mnt/server\r\n\r\necho \"Downloading server file...\"\r\necho -e \"performing curl -sSL ${DOWNLOAD_URL}\"\r\ncurl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f \"settings.yml\" ]; then\r\necho \"Creating settings file...\"\r\ncurl -sSL -o settings.yml https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/java/nanolimbo/settings.yml\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "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 URL", + "description": "A URL to use to download.\r\nThis is optional! Let this field empty for the latest version.", + "env_variable": "DOWNLOAD_URL", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Version", + "description": "The version of NanoLimbo to download. Use \"latest\" for latest.", + "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 diff --git a/java/neoforge/egg-pterodactyl-neo-forge.json b/java/neoforge/egg-pterodactyl-neo-forge.json new file mode 100644 index 00000000..452fd66d --- /dev/null +++ b/java/neoforge/egg-pterodactyl-neo-forge.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:05+00:00", + "name": "NeoForge", + "author": "glorantv@icloud.com", + "description": "NeoForge Server. NeoForge is a modding API (Application Programming Interface), which makes it easier to create mods, and also make sure mods are compatible with each other. NeoForge is a fork of Minecraft Forge.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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 8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true @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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\n# NeoForge Installation Script\n#\n# Server Files: /mnt/server\n\napt-get update\napt-get install -y curl xq openjdk-17-jdk\n\nif [[ ! -d /mnt/server ]]; then\n mkdir /mnt/server\nfi\n\ncd /mnt/server\n\n# Remove spaces from the version number to avoid issues with curl\nNEOFORGE_VERSION=\"$(echo \"$NEOFORGE_VERSION\" | tr -d ' ')\"\nMC_VERSION=\"$(echo \"$MC_VERSION\" | tr -d ' ')\"\n\n# If we have a specific NeoForge version set, use that\nif [[ ! -z ${NEOFORGE_VERSION} ]]; then\n # The 1.20.1 release lives in a different repository and is called \"forge\" instead of \"neoforge\"\n if [[ \"${NEOFORGE_VERSION}\" =~ \"1.20.1-\" ]]; then\n DOWNLOAD_LINK=https://maven.neoforged.net/releases/net/neoforged/forge/${NEOFORGE_VERSION}/forge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"forge\"\n else\n DOWNLOAD_LINK=https://maven.neoforged.net/releases/net/neoforged/neoforge/${NEOFORGE_VERSION}/neoforge-${NEOFORGE_VERSION}\n ARTIFACT_NAME=\"neoforge\"\n fi\nelse\n # For NeoForge, downloading based on a Minecraft version is done by using the Maven metadata.\n # 1.20.1 is also handled differently here, because it's in a different repository and is called\n # \"forge\" instead of \"neoforge\".\n if [[ \"${MC_VERSION}\" == \"1.20.1\" ]]; then\n XML_DATA=$(curl -sSL https://maven.neoforged.net/releases/net/neoforged/forge/maven-metadata.xml)\n ARTIFACT_NAME=\"forge\"\n NEOFORGE_OLD=1\n else\n XML_DATA=$(curl -sSL https://maven.neoforged.net/releases/net/neoforged/neoforge/maven-metadata.xml)\n ARTIFACT_NAME=\"neoforge\"\n fi\n\n REPO_URL=\"https://maven.neoforged.net/releases/net/neoforged/${ARTIFACT_NAME}/\"\n\n # Get the latest version of Minecraft NeoForge supports. Here XML_DATA contains the metadata for\n # the new, \"neoforge\" repository, which is good since 1.20.1 will never be the latest anymore.\n if [[ \"${MC_VERSION}\" == \"latest\" ]] || [[ \"${MC_VERSION}\" == \"\" ]]; then\n echo \"Getting latest version of NeoForge.\"\n MC_VERSION=\"1.$(echo -e ${XML_DATA} | xq -x '/metadata/versioning/release' | cut -d'.' -f1-2)\"\n fi\n\n echo \"Minecraft version: ${MC_VERSION}\"\n\n if [[ -z \"${NEOFORGE_OLD}\" ]]; then\n # For modern artifacts we cut the \"1.\" from the Minecraft version, and search for that\n VERSION_KEY=$(echo -n ${MC_VERSION} | cut -d'.' -f2-)\n else\n # For 1.20.1, it uses the same naming scheme as Forge, so we just append a dash\n VERSION_KEY=\"${MC_VERSION}-\"\n fi\n\n # Then we extract the latest the latest NeoForge version available based on the Maven metadata\n NEOFORGE_VERSION=$(echo -e ${XML_DATA} | xq -x \"(/metadata/versioning/versions/*[starts-with(text(), '${VERSION_KEY}')])\" | tail -n1)\n if [[ -z \"${NEOFORGE_VERSION}\" ]]; then\n echo \"The install failed, because there is no valid version of NeoForge for the version of Minecraft selected.\"\n exit 1\n fi\n\n echo \"NeoForge version: ${NEOFORGE_VERSION}\"\n\n DOWNLOAD_LINK=\"${REPO_URL}${NEOFORGE_VERSION}/${ARTIFACT_NAME}-${NEOFORGE_VERSION}\"\nfi\n\necho \"Downloading NeoForge version ${NEOFORGE_VERSION}\"\necho \"Download link is ${DOWNLOAD_LINK}\"\n\n# Check if the download link we generated is valid\nif [[ ! -z \"${DOWNLOAD_LINK}\" ]]; then\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then\n echo -e \"Installer jar download link is valid.\"\n else\n echo -e \"Link is invalid. Exiting now\"\n exit 2\n fi\nelse\n echo -e \"No download link provided. Exiting now\"\n exit 3\nfi\n\n# If so, go ahead and download the installer\ncurl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar\n\nif [[ ! -f ./installer.jar ]]; then\n echo \"!!! Error downloading NeoForge version ${NEOFORGE_VERSION} !!!\"\n exit 4\nfi\n\n# Delete args to support downgrading/upgrading\nrm -rf libraries/net/neoforged/${ARTIFACT_NAME}\nrm unix_args.txt\n\n# Installing server\necho -e \"Installing NeoForge server.\\n\"\njava -jar installer.jar --installServer || {\n echo -e \"\\nInstall failed using NeoForge version ${NEOFORGE_VERSION} and Minecraft version ${MINECRAFT_VERSION}.\"\n echo -n \"Should you be using unlimited memory value of 0, make sure to increase the default install resource limits in the Wings\"\n echo \"config or specify exact allocated memory in the server Build Configuration instead of 0!\"\n echo \"Otherwise, the NeoForge installer will not have enough memory.\";\n exit 5;\n}\n\n# Symlink the startup arguments to the server directory\nln -sf libraries/net/neoforged/${ARTIFACT_NAME}/*/unix_args.txt unix_args.txt\n\n# And finally clean up\necho -e \"Deleting installer.jar file.\\n\"\nrm -rf installer.jar\n\necho \"Installation process is completed!\"" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of Minecraft you want to install for.\r\n\r\nLeaving latest will install the latest version.", + "env_variable": "MC_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:9", + "field_type": "text" + }, + { + "name": "NeoForge Version", + "description": "The full exact version.\r\n\r\nEx. 20.4.194 or 1.20.1-47.1.95\r\n\r\nOverrides MC_VERSION. If it fails to download the server files it will fail to install.", + "env_variable": "NEOFORGE_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|regex:/^[0-9\\.\\-]+$/", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/paper/egg-pterodactyl-paper.json b/java/paper/egg-pterodactyl-paper.json new file mode 100644 index 00000000..705f03b2 --- /dev/null +++ b/java/paper/egg-pterodactyl-paper.json @@ -0,0 +1,81 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:54+00:00", + "name": "Paper", + "author": "parker@pterodactyl.io", + "description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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 21": "ghcr.io/pterodactyl/yolks:java_21", + "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": { + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nPROJECT=paper\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" + } + }, + "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 paper 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 diff --git a/java/purpur/egg-pterodactyl-purpur.json b/java/purpur/egg-pterodactyl-purpur.json new file mode 100644 index 00000000..0485c2ed --- /dev/null +++ b/java/purpur/egg-pterodactyl-purpur.json @@ -0,0 +1,71 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:58+00: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.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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 21": "ghcr.io/pterodactyl/yolks:java_21", + "Java 8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Paper Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nPROJECT=purpur\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.purpurmc.org/v2/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https://api.purpurmc.org/v2/${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://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r '.builds.latest'`\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://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION}/${BUILD_NUMBER}/download\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" + } + }, + "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": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the .jar file 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)$/|max:80", + "field_type": "text" + }, + { + "name": "Build Number", + "description": "The build number for the Purpur 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 diff --git a/java/quilt/egg-pterodactyl-quilt.json b/java/quilt/egg-pterodactyl-quilt.json new file mode 100644 index 00000000..06c5fc98 --- /dev/null +++ b/java/quilt/egg-pterodactyl-quilt.json @@ -0,0 +1,56 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:59+00: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 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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -XX:MaxRAMPercentage=95.0 -jar {{SERVER_JARFILE}} nogui", + "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}", + "logs": "{\r\n \"custom\": false,\r\n \"location\": \"logs/latest.log\"\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}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "eclipse-temurin:18-jdk-jammy", + "entrypoint": "bash", + "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\" \u003e quilt-server-launcher.properties\r\necho -e \"Server is Ready!\"" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "Version of Minecraft that will be installed. You can only choose the exact version number, for example \"1.20.2\", \"latest\" won't work!", + "env_variable": "MC_VERSION", + "default_value": "1.20.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 diff --git a/java/spigot/egg-pterodactyl-spigot.json b/java/spigot/egg-pterodactyl-spigot.json new file mode 100644 index 00000000..985dae59 --- /dev/null +++ b/java/spigot/egg-pterodactyl-spigot.json @@ -0,0 +1,70 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:58+00: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.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "Java 11": "ghcr.io/parkervcp/yolks:java_11", + "Java 16": "ghcr.io/parkervcp/yolks:java_16", + "Java 17": "ghcr.io/parkervcp/yolks:java_17", + "Java 21": "ghcr.io/parkervcp/yolks:java_21", + "Java 8": "ghcr.io/parkervcp/yolks:java_8" + }, + "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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Spigot Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\nmkdir -p /usr/share/man/man1\r\n\r\nARCH=$([[ \"$(uname -m)\" == \"x86_64\" ]] \u0026\u0026 echo \"x64\" || echo \"aarch64\")\r\n \r\nfunction install_java() {\r\n echo \"ARCH: ${ARCH}\\nDownload URl: $1\"\r\n curl -L $1 -o java.tar.gz\r\n tar xzf java.tar.gz\r\n export PATH=$PWD/$2/bin:$PATH\r\n java -version\r\n}\r\n\r\nfunction build_spigot()\r\n{\r\n java -Xms$1M -jar BuildTools.jar --rev ${DL_VERSION} || { echo -e \"\\n install failed! Attempted to install ${DL_VERSION} with memory of ${SERVER_MEMORY} and Java version of:\"; java -version; exit 1; }\r\n}\r\n\r\n# Detect the required Java version for building Spigot. Currently temurin only provides archives of their releases, and adoptopenjdk is deprecated. Update this when packages are released.\r\nif [[ $DL_VERSION =~ ^1\\.(20.5|20.6) || $DL_VERSION == \"latest\" ]]; then\r\n install_java \"https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.3%2B9/OpenJDK21U-jdk_x64_linux_hotspot_21.0.3_9.tar.gz\" jdk-21.0.3+9\r\nelif [[ $DL_VERSION =~ ^1\\.(18|19|20|20.1|20.2|20.3|20.4) ]]; then\r\n install_java \"https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.1%2B12/OpenJDK17U-jdk_x64_linux_hotspot_17.0.1_12.tar.gz\" jdk-17.0.1+12\r\nelif [[ $DL_VERSION =~ ^1\\.(17) ]]; then\r\n install_java \"https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz\" jdk-16.0.2+7\r\nelse\r\n install_java \"https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u312-b07/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz\" jdk8u312-b07\r\nfi\r\n\r\n\r\n## Only download if a path is provided, otherwise continue.\r\nif [ ! -z \"${DL_PATH}\" ]; then\r\n cd /mnt/server\r\n MODIFIED_DOWNLOAD=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`\r\n echo -e \"Using custom provided download link ${MODIFIED_DOWNLOAD}\"\r\n curl -L ${MODIFIED_DOWNLOAD} -o ${SERVER_JARFILE}\r\nelse\r\n mkdir -p /srv/\r\n cd /srv/\r\n curl -L https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar -o BuildTools.jar\r\n\r\n # Force the minimum Wings install container memory should someone provide less or 0 as it will break the Java build process\r\n if [ $SERVER_MEMORY -lt 1024 ]; then\r\n echo -e \"Do not use 0 for memory with Java applications. Defaulting to 1024MB.\\n WARNING! 1024MB might not be enough to build 1.17+ releases.\"\r\n SERVER_MEMORY=1024\r\n build_spigot ${SERVER_MEMORY}\r\n else\r\n build_spigot ${SERVER_MEMORY}\r\n fi\r\n mv spigot-*.jar /mnt/server/${SERVER_JARFILE}\r\nfi\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "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 Spigot rather than building it on the server. This is not user viewable. Use \u003ccode\u003e{{DL_VERSION}}\u003c/code\u003e in the URL to automatically insert the assigned version into the URL. If you do not enter a URL Spigot will build directly in the container (this will fail on low memory containers).", + "env_variable": "DL_PATH", + "default_value": "", + "user_viewable": false, + "user_editable": false, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Spigot Version", + "description": "The version of Spigot to download (using the --rev tag from https://hub.spigotmc.org/versions). Use \"latest\" for latest.", + "env_variable": "DL_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,10", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/spongeforge/egg-pterodactyl-sponge-forge.json b/java/spongeforge/egg-pterodactyl-sponge-forge.json new file mode 100644 index 00000000..6893e76f --- /dev/null +++ b/java/spongeforge/egg-pterodactyl-sponge-forge.json @@ -0,0 +1,70 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:12+00:00", + "name": "SpongeForge", + "author": "parker@parkervcp.com", + "description": "A community-driven open source Minecraft: Java Edition modding platform.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:8-jre-slim", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# SpongeForge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y jq curl\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n#Function to Compare Strings in Dot-Separated Version Format (can comapre Versions with unequal lengths)\r\n#returns 1 if version 1 is less than version 2, and 0 if version 1 is greater than version 2\r\nvercomp() {\r\n if [[ $1 == $2 ]]\r\n then\r\n return 1\r\n fi\r\n local IFS=.\r\n local i ver1=($1) ver2=($2)\r\n # fill empty fields in ver1 with zeros\r\n for ((i=${#ver1[@]}; i\u003c${#ver2[@]}; i++))\r\n do\r\n ver1[i]=0\r\n done\r\n for ((i=0; i\u003c${#ver1[@]}; i++))\r\n do\r\n if [[ -z ${ver2[i]} ]]\r\n then\r\n # fill empty fields in ver2 with zeros\r\n ver2[i]=0\r\n fi\r\n if ((10#${ver1[i]} \u003e 10#${ver2[i]}))\r\n then\r\n return 0\r\n fi\r\n if ((10#${ver1[i]} \u003c 10#${ver2[i]}))\r\n then\r\n return 1\r\n fi\r\n done\r\n return 1\r\n}\r\n\r\n# Remove spaces from the version number to avoid issues with curl\r\nFORGE_VERSION=\"$(echo \"$FORGE_VERSION\" | tr -d ' ')\"\r\n\r\n#Adding .jar when not ending by SERVER_JARFILE\r\nif [[ ! ${SERVER_JARFILE} = *\\.jar ]]; then\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\n\r\nif [ -z ${SF_VERSION} ] || [ \"$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION})\" == \"Unknown version\" ]; then\r\n echo -e \"defaulting to recommended\"\r\n SF_VERSION=\"recommended\"\r\nfi\r\n\r\nif [ \"${SF_VERSION}\" == \"recommended\" ]; then\r\n echo -e \"using recommended SpongeForge version\"\r\n SF_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.version')\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.dependencies.forge')\r\n echo -e \"found Forge Version ${FORGE_DOWNLOAD_VERSION}\"\r\n MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nelif [ \"${SF_VERSION}\" == \"latest\" ]; then\r\n echo -e \"using latest SpongForge version\"\r\n SF_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge | jq -r '.buildTypes.stable.latest.version')\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.forge')\r\n MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nelse\r\n echo -e \"found SpongeForge Version ${SF_VERSION}\"\r\n SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.artifacts.\"\".url')\r\n FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.forge')\r\n echo -e \"found Forge Version ${FORGE_DOWNLOAD_VERSION}\"\r\n MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')\r\nfi\r\n\r\nif [[ ! -z ${FORGE_VERSION} ]]; then\r\n if curl --output /dev/null --silent --head --fail https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}-installer.jar; then\r\n echo -e \"Custom Forge Version found.\"\r\n if [ ${MC_VERSION} != ${FORGE_VERSION%%-*} ]; then\r\n echo -e \"You need Forge Minecraft Version ${MC_VERSION}. Exiting now!\"\r\n exit 1\r\n elif vercomp ${FORGE_DOWNLOAD_VERSION} ${FORGE_VERSION##*-}; then\r\n echo -e \"Forge Build Version must be greater than ${FORGE_DOWNLOAD_VERSION}. Exiting now!\"\r\n exit 1\r\n else\r\n FORGE_DOWNLOAD_VERSION=${FORGE_VERSION##*-}\r\n fi\r\n else\r\n echo -e \"Forge Version not found. Check if Version is spelled right. Exiting now!\"\r\n exit 1\r\n fi\r\nfi\r\n\r\nFORGE_DL_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}/forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}\r\n\r\nif [ -f server.jar ] \u0026\u0026 [ $(sha1sum server.jar | awk '{ print $1 }') == $(curl -s ${FORGE_DL_LINK}-universal.jar.sha1) ]; then\r\n echo -e \"Already have the correct forge version\"\r\nelse\r\n echo -e \"Downloading forge version ${MC_VERSION} - ${FORGE_DOWNLOAD_VERSION}\"\r\n echo -e \"running: curl -s -o installer.jar -o ${FORGE_DL_LINK}-installer.jar\"\r\n curl -s -o installer.jar ${FORGE_DL_LINK}-installer.jar\r\n echo -e \"running: curl -s -o ${SERVER_JARFILE} -o ${FORGE_DL_LINK}-universal.jar\"\r\n curl -s -o ${SERVER_JARFILE} ${FORGE_DL_LINK}-universal.jar\r\n java -jar installer.jar --installServer\r\n rm installer.jar forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}-universal.jar forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}.jar\r\nfi\r\n\r\nif [ ! -d /mnt/server/mods/ ]; then\r\n echo -e \"making mods directory\"\r\n mkdir -p /mnt/server/mods/\r\nfi\r\n\r\nif [ -f /mnt/server/mods/spongeforge*.jar ]; then\r\n mkdir -p /mnt/server/mods/old/\r\n mv -f /mnt/server/mods/spongeforge*.jar /mnt/server/mods/old/spongeforge*.jar\r\nfi \r\n\r\necho -e \"running: curl -s ${SF_DL_LINK} -o /mnt/server/mods/spongeforge-${SF_VERSION}.jar\"\r\ncurl -s ${SF_DL_LINK} -o /mnt/server/mods/spongeforge-${SF_VERSION}.jar\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/game_eggs/minecraft/java/server.properties\r\nfi\r\n\r\necho -e \"Install for SpongeForge is complete\"" + } + }, + "variables": [ + { + "name": "Server Jar File", + "description": "The name of the Jarfile to use when running Forge Mod.", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "SpongeForge Version", + "description": "Example 1.12.2-2825-7.1.6\r\n\r\nIf the version fails it defaults to recommended", + "env_variable": "SF_VERSION", + "default_value": "recommended", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Forge Version", + "description": "Optional, only needed for custom Forge Version with Sponge.\r\n\r\nThe full exact version.\r\nEx. 1.15.2-31.2.4\r\n\r\nIf it fails to download the server files or to verify compatibility to the Sponge Version it will fail to install.", + "env_variable": "FORGE_VERSION", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|regex:/^[0-9\\.\\-]+$/", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/spongevanilla/egg-pterodactyl-sponge-vanilla.json b/java/spongevanilla/egg-pterodactyl-sponge-vanilla.json new file mode 100644 index 00000000..db1474d4 --- /dev/null +++ b/java/spongevanilla/egg-pterodactyl-sponge-vanilla.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:12+00:00", + "name": "SpongeVanilla", + "author": "parker@parkervcp.com", + "description": "SpongeVanilla is the implementation of the Sponge API on top of Vanilla Minecraft.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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 8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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 \"server-port\": \"{{server.build.default.port}}\",\r\n \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# spongeVanilla Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt install -y jq curl\r\n\r\nmkdir -p /mnt/server\r\ncd /mnt/server\r\n\r\n#Adding .jar when not eding by SERVER_JARFILE\r\nif [[ ! ${SERVER_JARFILE} = *\\.jar ]]; then\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\n## check spongevanilla version and default to recommended if it's invalid\r\nif [ -z ${SV_VERSION} ] || [ \"$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads/${SV_VERSION})\" == \"Unknown version\" ]; then\r\n echo -e \"defaulting to recommended\"\r\n SV_VERSION=\"recommended\"\r\nfi\r\n\r\n## handle getting download linsk for sponge\r\nif [ \"${SV_VERSION}\" == \"recommended\" ]; then\r\n echo -e \"using recommended spongevanilla version\"\r\n SV_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads/recommended | jq -r '.version')\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\n SV_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads/recommended | jq -r '.artifacts.\"\".url')\r\nelif [ \"${SV_VERSION}\" == \"latest\" ]; then\r\n echo -e \"using latest SpongForge version\"\r\n SV_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla | jq -r '.buildTypes.stable.latest.version')\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\nelse\r\n echo -e \"found spongevanilla Version ${SV_VERSION}\"\r\n SV_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads/${SV_VERSION} | jq -r '.artifacts.\"\".url')\r\nfi\r\n\r\nif [ -f ${SERVER_JARFILE} ] \u0026\u0026 [ $(sha1sum server.jar | awk '{ print $1 }') == $(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongevanilla/downloads/recommended | jq -r '.artifacts.\"\".sha1') ]; then\r\n echo -e \"Already have the correct spongevanilla version\"\r\nelse\r\n echo -e \"Downloading spongevanilla version ${SV_VERSION}\"\r\n echo -e \"running: curl -s ${SV_DL_LINK} -o /mnt/server/mods/spongevanilla-${SV_VERSION}.jar\"\r\n curl -s ${SV_DL_LINK} -o /mnt/server/${SERVER_JARFILE}\r\nfi\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -s -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/java/server.properties\r\nfi\r\n\r\necho -e \"Install for spongevanilla is complete\"" + } + }, + "variables": [ + { + "name": "SpongeVanilla Version", + "description": "Example 1.12.2-7.1.6\r\n\r\nIf the version fails it defaults to recommended", + "env_variable": "SV_VERSION", + "default_value": "recommended", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The name of the Jarfile to use when running Mod.", + "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 diff --git a/java/technic/Tekkit-2/egg-pterodactyl-tekkit2.json b/java/technic/Tekkit-2/egg-pterodactyl-tekkit2.json new file mode 100644 index 00000000..8aa4ca2a --- /dev/null +++ b/java/technic/Tekkit-2/egg-pterodactyl-tekkit2.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:17+00:00", + "name": "Tekkit 2", + "author": "josdekurk@gmail.com", + "description": "Those of you who are nostalgic for the early days of Tekkit (now known as Tekkit Classic), will love what awaits you in Tekkit 2!\r\n\r\nWith a collection of nostalgic mods and plenty of new improvements, Tekkit 2 is sure to capture the feeling of possibility and consequence that you felt while exploring the world of machines and contraptions that made the original fun. Keep an eye out for classics such as IndustrialCraft, ProjectE (Equivalent Exchange), Project Red (RedPower) and BuildCraft, alongside additions such as Galacticraft and Tekkit Jaffa Cakes! The world is yours to bend and exploit to your will, whether through alchemy or sprawling factories and mines.\r\n\r\nWhat fresh horrors will you create?", + "features": [ + "eula", + "java_version" + ], + "docker_images": { + "Java11": "ghcr.io/pterodactyl/yolks:java_11", + "Java8": "ghcr.io/pterodactyl/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -server -Xms128M -Xmx{{SERVER_MEMORY}}M -Dfml.queryResult=confirm -jar forge.jar nogui", + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Server tick complete! \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/ash\r\n# Tekkit Installation Script\r\n#\r\n# Server Files: /mnt/server\r\napt update\r\napt -y install curl zip unzip\r\n\r\nmkdir -p /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sSL https://servers.technicpack.net/Technic/servers/tekkit-2/Tekkit-2_Server_$MODPACK_VERSION.zip -o Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nunzip -o Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nrm -rf Tekkit-2_Server_$MODPACK_VERSION.zip\r\n\r\nrm RestoreBackup.bat\r\n\r\nrm LaunchServer.bat\r\n\r\nrm LaunchServer.sh\r\n\r\nrm RestoreBackup.sh\r\n\r\nmv forge-1.12.2-*.jar forge.jar\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/game_eggs/minecraft/java/server.properties\r\nfi\r\n\r\necho \"done\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "", + "env_variable": "MODPACK_VERSION", + "default_value": "v1.0.5", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:10", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/Tekkit/egg-pterodactyl-tekkit.json b/java/technic/Tekkit/egg-pterodactyl-tekkit.json new file mode 100644 index 00000000..6f30f70b --- /dev/null +++ b/java/technic/Tekkit/egg-pterodactyl-tekkit.json @@ -0,0 +1,49 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:13+00:00", + "name": "Tekkit", + "author": "contact@zennodes.dk", + "description": "Tekkit is set to reignite the same sort of wonder and awe that we all received from booting up Minecraft for the first time. With the skies open, the moon ready to be colonized (by force if need be) and dimensional mysteries to be plied, with tesseracts to be networked, “meat” to be processed, items to be digitized, and power suits to be manufactured, there is virtually limitless engineering projects to be assembled.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Tekkit.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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sSL https://servers.technicpack.net/Technic/servers/tekkitmain/Tekkit_Server_$MODPACK_VERSION.zip -o Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nunzip Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nrm -rf Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nrm launch.bat\r\n\r\nrm launch.sh\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/game_eggs/minecraft/java/server.properties\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "", + "env_variable": "MODPACK_VERSION", + "default_value": "v1.2.9g-2", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/attack-of-the-bteam/egg-pterodactyl-attack-of-the-b--team.json b/java/technic/attack-of-the-bteam/egg-pterodactyl-attack-of-the-b--team.json new file mode 100644 index 00000000..ccccb0c2 --- /dev/null +++ b/java/technic/attack-of-the-bteam/egg-pterodactyl-attack-of-the-b--team.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:48+00:00", + "name": "Attack of the B-Team", + "author": "support@pterodactyl.io", + "description": "This modpack was designed with one thing in mind, crazy mad science! With the help of the B-Team we hand picked the wackiest mods we could find and shoved them all in a modpack for you guys. The result is Attack of the B-Team!", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar BTeam.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\n\r\ncd /mnt/server\r\n\r\ncurl -sS https://servers.technicpack.net/Technic/servers/bteam/BTeam_Server_v$MODPACK_VERSION.zip -o BTeam_Server_v$MODPACK_VERSION.zip\r\n\r\nunzip -o BTeam_Server_v$MODPACK_VERSION.zip\r\n\r\nrm -rf BTeam_Server_v$MODPACK_VERSION.zip\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "1.0.12c", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/blightfall/egg-pterodactyl-blightfall.json b/java/technic/blightfall/egg-pterodactyl-blightfall.json new file mode 100644 index 00000000..32b8ca93 --- /dev/null +++ b/java/technic/blightfall/egg-pterodactyl-blightfall.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:49+00:00", + "name": "Blightfall", + "author": "aevum@decess.us", + "description": "Blightfall is a combination modpack and adventure map about surviving on an alien planet. It uses magic mods and tech mods to create a novel gameplay experience. Can you survive on a world completely covered by Thaumcraft taint?\r\n\r\nhttps://www.technicpack.net/modpack/blightfall.592618", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Blightfall.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sS https://servers.technicpack.net/Technic/servers/blightfall/Blightfall_Server_$MODPACK_VERSION.zip -o Blightfall_$MODPACK_VERSION.zip\r\n\r\nunzip Blightfall_$MODPACK_VERSION.zip\r\n\r\nrm -rf Blightfall_$MODPACK_VERSION.zip\r\n\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "3.1.1-CE", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/hexxit/egg-pterodactyl-hexxit.json b/java/technic/hexxit/egg-pterodactyl-hexxit.json new file mode 100644 index 00000000..293adde1 --- /dev/null +++ b/java/technic/hexxit/egg-pterodactyl-hexxit.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:39:46+00:00", + "name": "Hexxit", + "author": "aevum@decess.us", + "description": "Gear up and set forth on a campaign worthy of legend, for Hexxit has been unearthed! Dark dungeons, towering spires, weathered ruins and musty tomes lay before you. Lay claim to riches or create your own artifacts, tame beasts and carve out your own story in endless wonder. Alone or with friends, adventure awaits in Hexxit.\r\n\r\nHexxit is a new collection of mods for Minecraft that put adventure above all else, in the style of old Dungeons and Dragons campaigns. Exploration is interesting, the dangers are greater and the sense of satisfaction of clearing out a dungeon is intense. The modlist is full of quality content from some very talented individuals. Be sure to head over to the donate page and show your appreciation!\r\n\r\nhttps://www.technicpack.net/modpack/hexxit.552552", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Hexxit.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\ncd /mnt/server\r\n\r\ncurl -sS https://servers.technicpack.net/Technic/servers/hexxit/Hexxit_Server_v$MODPACK_VERSION.zip -o Hexxit_$MODPACK_VERSION.zip\r\n\r\nunzip Hexxit_$MODPACK_VERSION.zip\r\n\r\nrm -rf Hexxit_$MODPACK_VERSION.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "1.0.11", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/tekkit-classic/egg-pterodactyl-tekkit-classic.json b/java/technic/tekkit-classic/egg-pterodactyl-tekkit-classic.json new file mode 100644 index 00000000..583f1ce9 --- /dev/null +++ b/java/technic/tekkit-classic/egg-pterodactyl-tekkit-classic.json @@ -0,0 +1,49 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:16+00:00", + "name": "Tekkit Classic", + "author": "geoffrey@remedygaming.net", + "description": "Created by the Technic team, Tekkit Classic is a modpack for the record breaking sandbox construction game Minecraft. \r\nIt brings together some of the best mods from the Minecraft community for automating, industrializing and powering your worlds and bundles them into one easy download!", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar Tekkit.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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\ncd /mnt/server\r\n\r\ncurl -sS https://servers.technicpack.net/Technic/servers/tekkit/Tekkit_Server_$MODPACK_VERSION.zip -o Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nunzip Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nrm -rf Tekkit_Server_$MODPACK_VERSION.zip\r\n\r\nrm launch.bat\r\n\r\nrm launch.sh\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/game_eggs/minecraft/java/server.properties\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "", + "env_variable": "MODPACK_VERSION", + "default_value": "3.1.2", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/tekkit-legends/egg-pterodactyl-tekkit-legends.json b/java/technic/tekkit-legends/egg-pterodactyl-tekkit-legends.json new file mode 100644 index 00000000..3420e0d0 --- /dev/null +++ b/java/technic/tekkit-legends/egg-pterodactyl-tekkit-legends.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:18+00:00", + "name": "Tekkit Legends", + "author": "aevum@decess.us", + "description": "The ancient power of Tekkits past return in this legendary pack! Wield the philosopher's stone, ride the rails, breed the bees, and much, much more! This pack will remind you of what you've always loved about Tekkit, while bringing you new mods to discover and enjoy!\r\n\r\nhttps://www.technicpack.net/modpack/tekkit-legends.735902", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar TekkitLegends.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sS https://servers.technicpack.net/Technic/servers/tekkit-legends/Tekkit_Legends_Server_v$MODPACK_VERSION.zip -o TekkitLegends_$MODPACK_VERSION.zip\r\n\r\nunzip TekkitLegends_$MODPACK_VERSION.zip\r\n\r\nrm -rf TekkitLegends_$MODPACK_VERSION.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "1.1.1", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/the-1-12-2-pack/egg-pterodactyl-the1-12-2-pack.json b/java/technic/the-1-12-2-pack/egg-pterodactyl-the1-12-2-pack.json new file mode 100644 index 00000000..55709c23 --- /dev/null +++ b/java/technic/the-1-12-2-pack/egg-pterodactyl-the1-12-2-pack.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:19+00:00", + "name": "The 1.12.2 Pack", + "author": "contact@irequire.dev", + "description": "The 1.12.2 Pack", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar forge-*.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sS http://solder.endermedia.com/repository/downloads/the-1122-pack/the-1122-pack_$MODPACK_VERSION.zip -o the-1122-pack_$MODPACK_VERSION.zip\r\n\r\nunzip the-1122-pack_$MODPACK_VERSION.zip\r\n\r\nrm -rf the-1122-pack_$MODPACK_VERSION.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "1.5.5", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/technic/the-1-7-10-pack/egg-pterodactyl-the1-7-10-pack.json b/java/technic/the-1-7-10-pack/egg-pterodactyl-the1-7-10-pack.json new file mode 100644 index 00000000..11561065 --- /dev/null +++ b/java/technic/the-1-7-10-pack/egg-pterodactyl-the1-7-10-pack.json @@ -0,0 +1,46 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:17+00:00", + "name": "The 1.7.10 Pack", + "author": "contact@sweplox.se", + "description": "The 1.7.10 Pack", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar forge-*.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 \"query.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}", + "logs": "{\r\n}", + "startup": "{\r\n \"done\": \")! For help, type \"\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# Forge Installation Script\r\n#\r\n# Server Files: /mnt/server\r\n\r\ncd /mnt/server\r\n\r\ncurl -sS http://solder.endermedia.com/repository/downloads/the-1710-pack/the-1710-pack_$MODPACK_VERSION.zip -o the-1710-pack_$MODPACK_VERSION.zip\r\n\r\nunzip the-1710-pack_$MODPACK_VERSION.zip\r\n\r\nrm -rf the-1710-pack_$MODPACK_VERSION.zip\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Modpack Version", + "description": "Version of the modpack to use", + "env_variable": "MODPACK_VERSION", + "default_value": "0.10.12", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/java/vanillacord/egg-pterodactyl-vanilla-cord.json b/java/vanillacord/egg-pterodactyl-vanilla-cord.json new file mode 100644 index 00000000..b5ffd680 --- /dev/null +++ b/java/vanillacord/egg-pterodactyl-vanilla-cord.json @@ -0,0 +1,60 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:08+00: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.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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": "ghcr.io/pterodactyl/yolks:java_8" + }, + "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}", + "logs": "{}", + "startup": "{\r\n \"done\": \")! For help, type \",\r\n \"userInteraction\": [\r\n \"Go to eula.txt for more info.\"\r\n ]\r\n}", + "stop": "stop" + }, + "scripts": { + "installation": { + "container": "openjdk:8-jre-alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n\r\napk --no-cache --update add curl jq\r\n\r\ncd /mnt/server\r\n\r\necho $VANILLA_VERSION\r\n\r\nLATEST_VERSION=`curl https://launchermeta.mojang.com/mc/game/version_manifest.json | jq -r '.latest.release'`\r\n\r\nif { [ -z \"$VANILLA_VERSION\" ] || [ \"$VANILLA_VERSION\" == \"latest\" ]; } then\r\n INSTALLING_VERSION=$LATEST_VERSION\r\nelse\r\n INSTALLING_VERSION=$VANILLA_VERSION\r\nfi\r\n\r\nMAJOR_VERSION=$(echo $INSTALLING_VERSION | sed -En 's/^([0-9]*)\\.[0-9]*\\.[0-9]*$/\\1/p')\r\nMINOR_VERSION=$(echo $INSTALLING_VERSION | sed -En 's/^[0-9]*\\.([0-9]*)\\.[0-9]*$/\\1/p')\r\nPATCH_VERSION=$(echo $INSTALLING_VERSION | sed -En 's/^[0-9]*\\.[0-9]*\\.([0-9]*)$/\\1/p')\r\n\r\nVANILLACORD_URL=https://src.me1312.net/jenkins/job/VanillaCord/job/1.12/lastSuccessfulBuild/artifact/artifacts/VanillaCord.jar\r\nif [ $MAJOR_VERSION -eq 1 ] \u0026\u0026 [ $MINOR_VERSION -lt 12 ]; then\r\n VANILLACORD_URL=https://src.me1312.net/jenkins/job/VanillaCord/job/1.7.10/lastSuccessfulBuild/artifact/artifacts/VanillaCord.jar\r\nfi\r\n\r\nif { [ $MAJOR_VERSION -eq 1 ] \u0026\u0026 [ $MINOR_VERSION -eq 7 ] \u0026\u0026 [ $PATCH_VERSION -lt 10 ]; } || { [ $MAJOR_VERSION -eq 1 ] \u0026\u0026 [ $MINOR_VERSION -lt 7 ]; } then\r\n echo \"VanillaCord is only supported on Minecraft 1.7.10 or higher! You cannot use it with $INSTALLING_VERSION.\"\r\n exit 1\r\nfi\r\n\r\ncurl -o vanillacord.jar $VANILLACORD_URL\r\njava -jar vanillacord.jar $INSTALLING_VERSION\r\n\r\nrm -f vanillacord.jar\r\nrm -rf in\r\nmv out/*.jar $SERVER_JARFILE\r\nrm -rf out" + } + }, + "variables": [ + { + "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": "Server Version", + "description": "The version of Minecraft Vanilla to install. Use \"latest\" to install the latest version.", + "env_variable": "VANILLA_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|between:3,15", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/proxy/bedrock/waterdog_pe/egg-pterodactyl-waterdog-p-e.json b/proxy/bedrock/waterdog_pe/egg-pterodactyl-waterdog-p-e.json new file mode 100644 index 00000000..bc1a7858 --- /dev/null +++ b/proxy/bedrock/waterdog_pe/egg-pterodactyl-waterdog-p-e.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:10+00:00", + "name": "Waterdog PE", + "author": "parker@pterodactyl.io", + "description": "Brand new proxy server for Minecraft: Bedrock Edition", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Dterminal.ansi=true -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Started query on \"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n\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# Adding '.jar' if it isn't part of the file name\r\nif [[ \"${SERVER_JARFILE}\" == \"*\\.jar\" ]]; then\r\n echo -e \"adding.jar to server file name\"\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\nif [ -z \"${WATERDOG_VERSION}\" ] || [ \"${WATERDOG_VERSION}\" == \"latest\" ]; then\r\n echo -e \"downloading latest waterdog pe build\\n\"\r\n curl -sSL -o ${SERVER_JARFILE} https://jenkins.waterdog.dev/job/Waterdog/job/WaterdogPE/job/release/lastSuccessfulBuild/artifact/target/Waterdog.jar\r\nelse \r\n echo -e \"downloading waterdog pe build ${WATERDOG_VERSION}\\n\"\r\n curl -sSL -o ${SERVER_JARFILE} https://jenkins.waterdog.dev/job/Waterdog/job/WaterdogPE/job/release/${WATERDOG_VERSION}/artifact/target/Waterdog.jar\r\nfi\r\n\r\nif [ ! -f config.yml ]; then\r\n echo -e \"Downloading waterdog pe config.yml\"\r\n curl -o config.yml https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/proxy/bedrock/waterdog_pe/config.yml\r\nelse\r\n echo -e \"Waterfall config.yml exists. Will not pull a new file\"\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Waterdog PE Version", + "description": "The build to pull and install. (Ex. 23), or set to latest\r\n\r\nThis is the build number on https://jenkins.waterdog.dev/", + "env_variable": "WATERDOG_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The jar to run to", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/proxy/cross_platform/waterdog/egg-pterodactyl-waterdog.json b/proxy/cross_platform/waterdog/egg-pterodactyl-waterdog.json new file mode 100644 index 00000000..744af55e --- /dev/null +++ b/proxy/cross_platform/waterdog/egg-pterodactyl-waterdog.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:10+00:00", + "name": "Waterdog", + "author": "parker@pterodactyl.io", + "description": "Waterdog is fork of the well-known Waterfall, which is a fork of the well-known BungeeCord, server teleportation suite.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}", + "config": { + "files": "{}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\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# Adding '.jar' if it isn't part of the file name\r\nif [[ \"${SERVER_JARFILE}\" == \"*\\.jar\" ]]; then\r\n echo -e \"adding.jar to server file name\"\r\n SERVER_JARFILE=\"${SERVER_JARFILE}.jar\"\r\nfi\r\n\r\nif [ -z \"${WATERDOG_VERSION}\" ] || [ \"${WATERDOG_VERSION}\" == \"latest\" ]; then\r\n echo -e \"downloading latest waterdog build\\n\"\r\n curl -sSL -o ${SERVER_JARFILE} https://jenkins.waterdog.dev/job/Waterdog/job/Waterdog/job/master-zlib/lastSuccessfulBuild/artifact/Waterfall-Proxy/bootstrap/target/Waterdog.jar\r\nelse \r\n echo -e \"downloading waterdog build ${WATERDOG_VERSION}\\n\"\r\n curl -sSL -o ${SERVER_JARFILE} https://jenkins.waterdog.dev/job/Waterdog/job/Waterdog/job/master-zlib/${WATERDOG_VERSION}/artifact/Waterfall-Proxy/bootstrap/target/Waterdog.jar\r\nfi\r\n\r\nif [ ! -f config.yml ]; then\r\n echo -e \"Downloading waterfall config.yml\"\r\n curl -o config.yml https://raw.githubusercontent.com/parkervcp/eggs/master/game_eggs/minecraft/proxy/java/waterfall/config.yml\r\nelse\r\n echo -e \"Waterfall config.yml exists. Will not pull a new file\"\r\nfi\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Waterdog Version", + "description": "The build to pull and install. (Ex. 23), or set to latest\r\n\r\nThis is the build number on https://jenkins.waterdog.dev/", + "env_variable": "WATERDOG_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "The jar to run to", + "env_variable": "SERVER_JARFILE", + "default_value": "server.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|string|max:20", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/proxy/java/travertine/egg-pterodactyl-travertine.json b/proxy/java/travertine/egg-pterodactyl-travertine.json new file mode 100644 index 00000000..07376ef7 --- /dev/null +++ b/proxy/java/travertine/egg-pterodactyl-travertine.json @@ -0,0 +1,79 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:19+00:00", + "name": "Travertine", + "author": "parker@parkervcp.com", + "description": "Travertine is a fork of Waterfall with 1.7 protocol support. Waterfall is a fork of the well-known BungeeCord server teleportation suite.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}", + "config": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "script": "#!/bin/bash\r\n# Travertine Installation Script\r\n#\r\n# Server Files: /mnt/server\r\nPROJECT=travertine\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\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of Minecraft that water was built to support.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|alpha_num|between:1,6", + "field_type": "text" + }, + { + "name": "Travertine Jar File", + "description": "The name of the jar file to use when running Travertine.", + "env_variable": "SERVER_JARFILE", + "default_value": "travertine.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "Download Link", + "description": "A link to the server jar to download the Travertine jar.", + "env_variable": "DL_LINK", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Travertine build number", + "description": "Default is latest.\r\n\r\nif set to latest or an invalid version will grab the latest build number.", + "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 diff --git a/proxy/java/velocity/egg-pterodactyl-velocity.json b/proxy/java/velocity/egg-pterodactyl-velocity.json new file mode 100644 index 00000000..c0d550bc --- /dev/null +++ b/proxy/java/velocity/egg-pterodactyl-velocity.json @@ -0,0 +1,80 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:07+00:00", + "name": "Velocity", + "author": "parker@parkervcp.com", + "description": "Velocity is a Minecraft server proxy with unparalleled server support, scalability, and flexibility.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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 21": "ghcr.io/pterodactyl/yolks:java_21", + "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": { + "files": "{\r\n \"velocity.toml\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"bind = \": \"bind = \\\"0.0.0.0:{{server.build.default.port}}\\\"\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Done (\"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "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 \u003e forwarding.secret\r\nfi\r\n\r\necho -e \"install complete\"" + } + }, + "variables": [ + { + "name": "Velocity Version", + "description": "The Velocity Proxy version to download.\r\n\r\nSet to 'latest ' the download the last stable build.", + "env_variable": "VELOCITY_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:20", + "field_type": "text" + }, + { + "name": "Server Jar File", + "description": "Server Jarfile, by default this is set to 'velocity.jar'.\r\nSet it to otherwise if you wish to have a different jarfile name.", + "env_variable": "SERVER_JARFILE", + "default_value": "velocity.jar", + "user_viewable": true, + "user_editable": false, + "rules": "required|string|max:32|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 velocity 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 diff --git a/proxy/java/viaaas/egg-pterodactyl-v-i-aaa-s.json b/proxy/java/viaaas/egg-pterodactyl-v-i-aaa-s.json new file mode 100644 index 00000000..eef5f288 --- /dev/null +++ b/proxy/java/viaaas/egg-pterodactyl-v-i-aaa-s.json @@ -0,0 +1,59 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:09+00:00", + "name": "VIAaaS", + "author": "regulad@outlook.com", + "description": "VIAaaS - ViaVersion as a Service - Standalone ViaVersion proxy", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "ghcr.io/parkervcp/yolks:java_11": "ghcr.io/parkervcp/yolks:java_11", + "ghcr.io/parkervcp/yolks:java_16": "ghcr.io/parkervcp/yolks:java_16", + "ghcr.io/parkervcp/yolks:java_17": "ghcr.io/parkervcp/yolks:java_17", + "ghcr.io/parkervcp/yolks:java_8": "ghcr.io/parkervcp/yolks:java_8" + }, + "file_denylist": [], + "startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}} -sslPort={{WEBSERVER_PORT}}", + "config": { + "files": "{\r\n \"config/viaaas.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"port\": \"{{server.build.default.port}}\",\r\n \"bind-address\": \"0.0.0.0\"\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Application started in \"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:alpine", + "entrypoint": "ash", + "script": "#!/bin/ash\r\n# VIAaaS Installation Script\r\n#\r\n# Server Files: /mnt/server\r\ncd /mnt/server\r\nwget -O ${SERVER_JARFILE} \"https://jitpack.io/com/github/ViaVersion/VIAaaS/master-SNAPSHOT/VIAaaS-master-SNAPSHOT-all.jar\"\r\n\r\n## install end\r\necho \"-----------------------------------------\"\r\necho \"Installation completed...\"\r\necho \"-----------------------------------------\"" + } + }, + "variables": [ + { + "name": "VIAaaS JAR File", + "description": "The name of the JAR file to be used when downloading \u0026 running VIAaaS.", + "env_variable": "SERVER_JARFILE", + "default_value": "VIAaaS-all.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + }, + { + "name": "Web Server Port", + "description": "The port to listen to web server connections on.", + "env_variable": "WEBSERVER_PORT", + "default_value": "25543", + "user_viewable": true, + "user_editable": true, + "rules": "required|string", + "field_type": "text" + } + ] +} \ No newline at end of file diff --git a/proxy/java/waterfall/egg-pterodactyl-waterfall.json b/proxy/java/waterfall/egg-pterodactyl-waterfall.json new file mode 100644 index 00000000..b6576a30 --- /dev/null +++ b/proxy/java/waterfall/egg-pterodactyl-waterfall.json @@ -0,0 +1,79 @@ +{ + "_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PANEL", + "meta": { + "update_url": null, + "version": "PTDL_v2" + }, + "exported_at": "2024-06-01T19:40:11+00:00", + "name": "Waterfall", + "author": "hostmaster@waterfallgaming.net", + "description": "Waterfall is a fork of the well-known BungeeCord server teleportation suite.", + "features": [ + "eula", + "java_version", + "pid_limit" + ], + "docker_images": { + "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", + "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": { + "files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"listeners[0].host\": \"0.0.0.0:{{server.build.default.port}}\",\r\n \"servers.*.address\": {\r\n \"127.0.0.1\": \"{{config.docker.interface}}\",\r\n \"localhost\": \"{{config.docker.interface}}\"\r\n }\r\n }\r\n }\r\n}", + "logs": "{}", + "startup": "{\r\n \"done\": \"Listening on \"\r\n}", + "stop": "end" + }, + "scripts": { + "installation": { + "container": "ghcr.io/parkervcp/installers:debian", + "entrypoint": "bash", + "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" + } + }, + "variables": [ + { + "name": "Minecraft Version", + "description": "The version of Minecraft that Waterfall was built to support.", + "env_variable": "MINECRAFT_VERSION", + "default_value": "latest", + "user_viewable": true, + "user_editable": true, + "rules": "required|alpha_num|between:1,6", + "field_type": "text" + }, + { + "name": "Waterfall Jar File", + "description": "The name of the jar file to use when running Waterfall.", + "env_variable": "SERVER_JARFILE", + "default_value": "waterfall.jar", + "user_viewable": true, + "user_editable": true, + "rules": "required|regex:/^([\\w\\d._-]+)(\\.jar)$/", + "field_type": "text" + }, + { + "name": "Download Link", + "description": "A link to the server jar to download the Waterfall jar.", + "env_variable": "DL_LINK", + "default_value": "", + "user_viewable": true, + "user_editable": true, + "rules": "nullable|string", + "field_type": "text" + }, + { + "name": "Waterfall build number", + "description": "Default is latest.\r\n\r\nif set to latest or an invalid version will grab the latest build number.", + "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